From 06478cdc156b4daa2f7a41b37987b42cb94d2042 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 4 Mar 2024 17:58:59 +0100 Subject: [PATCH 001/544] cleanup --- new-cli/GitVersion.Cli.Generator/CommandImplGenerator.cs | 2 +- new-cli/GitVersion.Cli.Generator/TypeVisitor.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/new-cli/GitVersion.Cli.Generator/CommandImplGenerator.cs b/new-cli/GitVersion.Cli.Generator/CommandImplGenerator.cs index 51fa6b16a2..b5fcc2fb1b 100644 --- a/new-cli/GitVersion.Cli.Generator/CommandImplGenerator.cs +++ b/new-cli/GitVersion.Cli.Generator/CommandImplGenerator.cs @@ -31,7 +31,7 @@ public void Initialize(IncrementalGeneratorInitializationContext context) visitor.Visit(compilation.GlobalNamespace); var selectCommandTypes = visitor.GetResults(); - return selectCommandTypes.Select(selectCommandType => MapToCommandInfo(selectCommandType, ct)).ToImmutableArray(); + return [.. selectCommandTypes.Select(selectCommandType => MapToCommandInfo(selectCommandType, ct))]; static bool SearchQuery(INamedTypeSymbol typeSymbol) { diff --git a/new-cli/GitVersion.Cli.Generator/TypeVisitor.cs b/new-cli/GitVersion.Cli.Generator/TypeVisitor.cs index 4f112736a6..3094435293 100644 --- a/new-cli/GitVersion.Cli.Generator/TypeVisitor.cs +++ b/new-cli/GitVersion.Cli.Generator/TypeVisitor.cs @@ -8,7 +8,7 @@ internal class TypeVisitor(Func searchQuery, Cancellatio { private readonly HashSet _exportedTypes = new(SymbolEqualityComparer.Default); - public ImmutableArray GetResults() => this._exportedTypes.ToImmutableArray(); + public ImmutableArray GetResults() => [.. this._exportedTypes]; public override void VisitAssembly(IAssemblySymbol symbol) { From f2c5a8348c82896d4d566104ba428764c7506293 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 4 Mar 2024 19:33:55 +0100 Subject: [PATCH 002/544] introduce common Directory.Packages.props --- .gitignore | 1 + Directory.Packages.props | 17 +++++++++++++++ new-cli/Directory.Packages.props | 9 ++------ .../GitVersion.Core/GitVersion.Core.csproj | 2 +- new-cli/GitVersion.sln | 6 ++++++ src/.run/cli.run.xml | 20 ++++++++++++++++++ ...tVersion.Schema.run.xml => schema.run.xml} | 2 +- src/Directory.Build.props | 1 - src/Directory.Packages.props | 9 +------- .../GitVersion.Core.Tests.csproj | 3 +++ .../GitVersion.MsBuild.Tests.csproj | 1 + src/GitVersion.sln | 21 ++++++++++++------- tests/integration/Directory.Packages.props | 6 ++++++ 13 files changed, 72 insertions(+), 26 deletions(-) create mode 100644 Directory.Packages.props create mode 100644 src/.run/cli.run.xml rename src/.run/{GitVersion.Schema.run.xml => schema.run.xml} (90%) create mode 100644 tests/integration/Directory.Packages.props diff --git a/.gitignore b/.gitignore index eae9380097..e5775f626a 100644 --- a/.gitignore +++ b/.gitignore @@ -35,6 +35,7 @@ *.dotCover *.orig *~ +msbuild.binlog ## If you have NuGet Package Restore enabled, uncomment this packages/ diff --git a/Directory.Packages.props b/Directory.Packages.props new file mode 100644 index 0000000000..49a3c3dcce --- /dev/null +++ b/Directory.Packages.props @@ -0,0 +1,17 @@ + + + true + + + + + + + + + + + + + + \ No newline at end of file diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 676e7a4845..db9565dcb3 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -1,20 +1,15 @@ + true - - - - - - + - \ No newline at end of file diff --git a/new-cli/GitVersion.Core/GitVersion.Core.csproj b/new-cli/GitVersion.Core/GitVersion.Core.csproj index f1a173613d..b96d2f9f1a 100644 --- a/new-cli/GitVersion.Core/GitVersion.Core.csproj +++ b/new-cli/GitVersion.Core/GitVersion.Core.csproj @@ -3,7 +3,7 @@ - + diff --git a/new-cli/GitVersion.sln b/new-cli/GitVersion.sln index d69d8b202f..115f750a5f 100644 --- a/new-cli/GitVersion.sln +++ b/new-cli/GitVersion.sln @@ -47,6 +47,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitVersion.Core.Libgit2Shar EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitVersion.Cli.Generator", "GitVersion.Cli.Generator\GitVersion.Cli.Generator.csproj", "{AF22F642-625A-4A33-92A5-161EE4E2B0CE}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "root", "root", "{D27CECCB-F012-433C-B026-84979C8C731E}" + ProjectSection(SolutionItems) = preProject + ..\global.json = ..\global.json + ..\Directory.Packages.props = ..\Directory.Packages.props + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU diff --git a/src/.run/cli.run.xml b/src/.run/cli.run.xml new file mode 100644 index 0000000000..93b22def70 --- /dev/null +++ b/src/.run/cli.run.xml @@ -0,0 +1,20 @@ + + + + \ No newline at end of file diff --git a/src/.run/GitVersion.Schema.run.xml b/src/.run/schema.run.xml similarity index 90% rename from src/.run/GitVersion.Schema.run.xml rename to src/.run/schema.run.xml index 0ecc7bc03c..e57b890d7b 100644 --- a/src/.run/GitVersion.Schema.run.xml +++ b/src/.run/schema.run.xml @@ -1,5 +1,5 @@  - + - diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index fd844d5158..5ce85093a7 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -1,4 +1,5 @@ + true @@ -6,16 +7,11 @@ - - - - - @@ -25,9 +21,6 @@ - - - diff --git a/src/GitVersion.Core.Tests/GitVersion.Core.Tests.csproj b/src/GitVersion.Core.Tests/GitVersion.Core.Tests.csproj index a255aa2d2b..446ac51a69 100644 --- a/src/GitVersion.Core.Tests/GitVersion.Core.Tests.csproj +++ b/src/GitVersion.Core.Tests/GitVersion.Core.Tests.csproj @@ -13,6 +13,9 @@ + + + diff --git a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj index f38d47e1ba..014609042b 100644 --- a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj +++ b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj @@ -7,6 +7,7 @@ + diff --git a/src/GitVersion.sln b/src/GitVersion.sln index fd07b98004..cdcf7008da 100644 --- a/src/GitVersion.sln +++ b/src/GitVersion.sln @@ -36,13 +36,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sln", "sln", "{542E443E-14C ProjectSection(SolutionItems) = preProject Directory.Build.props = Directory.Build.props Directory.Packages.props = Directory.Packages.props - ..\.editorconfig = ..\.editorconfig - ..\.gitattributes = ..\.gitattributes - ..\.gitignore = ..\.gitignore - ..\GitVersion.yml = ..\GitVersion.yml - ..\schemas\6.0\GitVersion.configuration.json = ..\schemas\6.0\GitVersion.configuration.json - ..\schemas\6.0\GitVersion.json = ..\schemas\6.0\GitVersion.json - ..\global.json = ..\global.json EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "readme", "readme", "{1F4BE015-699F-464A-8FF0-D8762102421A}" @@ -56,6 +49,18 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "readme", "readme", "{1F4BE0 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitVersion.Configuration.Tests", "GitVersion.Configuration.Tests\GitVersion.Configuration.Tests.csproj", "{E3722E82-D283-4BA7-B44F-C43072B829FA}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "root", "root", "{7D3A83B4-95D9-42AF-AB11-6292209CF00B}" + ProjectSection(SolutionItems) = preProject + ..\.editorconfig = ..\.editorconfig + ..\.gitattributes = ..\.gitattributes + ..\.gitignore = ..\.gitignore + ..\GitVersion.yml = ..\GitVersion.yml + ..\global.json = ..\global.json + ..\schemas\6.0\GitVersion.json = ..\schemas\6.0\GitVersion.json + ..\schemas\6.0\GitVersion.configuration.json = ..\schemas\6.0\GitVersion.configuration.json + ..\Directory.Packages.props = ..\Directory.Packages.props + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -132,9 +137,9 @@ Global {85060C01-6DAF-48E9-9D7E-AEDA8FFEB0DD} = {69C36B9D-E496-42A2-B091-C055E999686C} {843450BC-3A6D-4DA6-8520-2D9A9C8218AC} = {69C36B9D-E496-42A2-B091-C055E999686C} {13C60949-7225-4B08-BE63-CAAC5E25FD16} = {69C36B9D-E496-42A2-B091-C055E999686C} - {1F4BE015-699F-464A-8FF0-D8762102421A} = {542E443E-14C3-45A7-A2E9-ACF27286A3B2} {B93C3F0C-6CBF-49E6-A476-A0103319640B} = {69C36B9D-E496-42A2-B091-C055E999686C} {E3722E82-D283-4BA7-B44F-C43072B829FA} = {69C36B9D-E496-42A2-B091-C055E999686C} + {1F4BE015-699F-464A-8FF0-D8762102421A} = {7D3A83B4-95D9-42AF-AB11-6292209CF00B} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {0C1C310E-7A4D-4032-878B-6DC375894C49} diff --git a/tests/integration/Directory.Packages.props b/tests/integration/Directory.Packages.props new file mode 100644 index 0000000000..1ef9ac25e7 --- /dev/null +++ b/tests/integration/Directory.Packages.props @@ -0,0 +1,6 @@ + + + + false + + From 3c03170ea68ba86ef413e053db7fbe3ac848aa51 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 5 Mar 2024 16:09:50 +0100 Subject: [PATCH 003/544] removed OsxArm64 msbuild property workaround, it's not needed anymore https://github.com/dotnet/sdk/issues/26866 --- build/build/Tasks/Package/PackagePrepare.cs | 6 ------ src/GitVersion.App/GitVersion.App.csproj | 5 ----- 2 files changed, 11 deletions(-) diff --git a/build/build/Tasks/Package/PackagePrepare.cs b/build/build/Tasks/Package/PackagePrepare.cs index ecdaa0428f..c6ad9ec3a2 100644 --- a/build/build/Tasks/Package/PackagePrepare.cs +++ b/build/build/Tasks/Package/PackagePrepare.cs @@ -62,12 +62,6 @@ private static DirectoryPath PackPrepareNative(BuildContext context, string runt SelfContained = true }; - // workaround for https://github.com/dotnet/runtime/issues/49508 - if (runtime == "osx-arm64") - { - settings.ArgumentCustomization = arg => arg.Append("/p:OsxArm64=true"); - } - context.DotNetPublish("./src/GitVersion.App/GitVersion.App.csproj", settings); return outputPath; diff --git a/src/GitVersion.App/GitVersion.App.csproj b/src/GitVersion.App/GitVersion.App.csproj index d95c3d5819..b3168be34e 100644 --- a/src/GitVersion.App/GitVersion.App.csproj +++ b/src/GitVersion.App/GitVersion.App.csproj @@ -8,11 +8,6 @@ MIT - - - net6.0;net7.0;net8.0 - - dotnet-gitversion GitVersion.Tool From ab5fe3632082be70fb0ae17304b9ced4ca17032b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Mar 2024 15:30:24 +0000 Subject: [PATCH 004/544] (ci deps): Bump Cake.Git from 3.0.0 to 4.0.0 in /build Bumps [Cake.Git](https://github.com/cake-contrib/Cake_Git) from 3.0.0 to 4.0.0. - [Release notes](https://github.com/cake-contrib/Cake_Git/releases) - [Changelog](https://github.com/cake-contrib/Cake_Git/blob/v4.0.0/ReleaseNotes.md) - [Commits](https://github.com/cake-contrib/Cake_Git/compare/v3.0.0...v4.0.0) --- updated-dependencies: - dependency-name: Cake.Git dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- build/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Directory.Packages.props b/build/Directory.Packages.props index e568382175..84e5da89ca 100644 --- a/build/Directory.Packages.props +++ b/build/Directory.Packages.props @@ -11,7 +11,7 @@ - + From 08980c634db95fa331eaa7fc6ec1302517d2afef Mon Sep 17 00:00:00 2001 From: Artur Date: Thu, 7 Mar 2024 17:09:22 +0100 Subject: [PATCH 005/544] replace Cake.Git with Cake.Frosting.Git --- build/Directory.Packages.props | 2 +- build/docs/docs.csproj | 2 +- new-cli/GitVersion.Cli/GitVersionApp.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/Directory.Packages.props b/build/Directory.Packages.props index 84e5da89ca..bf4780e912 100644 --- a/build/Directory.Packages.props +++ b/build/Directory.Packages.props @@ -7,11 +7,11 @@ + - diff --git a/build/docs/docs.csproj b/build/docs/docs.csproj index 3f3987e669..a210fc579f 100644 --- a/build/docs/docs.csproj +++ b/build/docs/docs.csproj @@ -7,7 +7,7 @@ - + diff --git a/new-cli/GitVersion.Cli/GitVersionApp.cs b/new-cli/GitVersion.Cli/GitVersionApp.cs index 84c900b1fa..9a4d43fae9 100644 --- a/new-cli/GitVersion.Cli/GitVersionApp.cs +++ b/new-cli/GitVersion.Cli/GitVersionApp.cs @@ -26,7 +26,7 @@ public Task RunAsync(string[] args, CancellationToken cancellationToken) // Note: there are 2 locations to watch for dotnet-suggest // - sentinel file: $env:TEMP\system-commandline-sentinel-files\ and - // - registration file: $env:LOCALAPPDATA\.dotnet-suggest-registration.txt + // - registration file: $env:LOCALAPPDATA\.dotnet-suggest-registration.txt or $HOME/.dotnet-suggest-registration.txt private static LogEventLevel GetLevelForVerbosity(Verbosity verbosity) => VerbosityMaps[verbosity]; From cb5eca3132bdd649858d468fe3a869954a4ea53e Mon Sep 17 00:00:00 2001 From: Hardy Hobeck Date: Mon, 26 Feb 2024 23:30:36 +0100 Subject: [PATCH 006/544] Fix GitVersion calculates the wrong version after main is merged back to develop. --- .../IntegrationTests/OtherScenarios.cs | 83 +++++++++++++++++++ .../IncrementStrategyFinder.cs | 66 ++++++++++----- 2 files changed, 129 insertions(+), 20 deletions(-) diff --git a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs index 306ae3def6..6ccb0c86b2 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs @@ -1218,4 +1218,87 @@ public void EnsurePreventIncrementWhenCurrentCommitTaggedOnReleaseBranchAndIncre fixture.AssertFullSemver(semVersion, configuration); } + + [Test] + public void EnsureVersionAfterMainIsMergedBackToDevelopIsCorrect() + { + using EmptyRepositoryFixture fixture = new("main"); + + fixture.MakeATaggedCommit("1.0.0"); + fixture.BranchTo("develop"); + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-alpha.1"); + + fixture.Checkout("main"); + fixture.MakeACommit("B"); + fixture.BranchTo("hotfix/just-a-hotfix"); + fixture.MakeACommit("C +semver: major"); + fixture.MergeTo("main", removeBranchAfterMerging: true); + fixture.Checkout("develop"); + fixture.MakeACommit("D"); + fixture.Checkout("main"); + fixture.MakeACommit("E"); + fixture.ApplyTag("1.0.1"); + fixture.Checkout("develop"); + fixture.MergeNoFF("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-alpha.7"); + } + + [TestCase(false, "2.0.0-alpha.3")] + [TestCase(true, "2.0.0-alpha.2")] + public void EnsureVersionAfterMainIsMergedBackToDevelopIsCorrectForTrunkBased(bool applyTag, string semanticVersion) + { + var configuration = GitFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.TrunkBased) + .Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + fixture.MakeACommit("A"); + fixture.ApplyTag("1.0.0"); + fixture.BranchTo("develop"); + fixture.MakeACommit("B +semver: major"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-alpha.1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + if (applyTag) fixture.ApplyTag("1.0.1"); + fixture.Checkout("develop"); + fixture.MergeNoFF("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver(semanticVersion, configuration); + } + + [TestCase(false, "2.0.0-alpha.3")] + [TestCase(true, "2.0.0-alpha.3")] + public void EnsureVersionAfterMainIsMergedBackToDevelopIsCorrectForGitFlow(bool applyTag, string semanticVersion) + { + var configuration = GitFlowConfigurationBuilder.New.Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + fixture.MakeACommit("A"); + fixture.ApplyTag("1.0.0"); + fixture.BranchTo("develop"); + fixture.MakeACommit("B +semver: major"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-alpha.1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + if (applyTag) fixture.ApplyTag("1.0.1"); + fixture.Checkout("develop"); + fixture.MergeNoFF("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver(semanticVersion, configuration); + } } diff --git a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs index 14ae152aa8..7804acc09c 100644 --- a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs @@ -75,26 +75,21 @@ public VersionField DetermineIncrementedField( } private VersionField? FindCommitMessageIncrement( - EffectiveConfiguration configuration, ICommit? baseCommit, ICommit? currentCommit, string? label) + EffectiveConfiguration configuration, ICommit? baseVersionSource, ICommit currentCommit, string? label) { if (configuration.CommitMessageIncrementing == CommitMessageIncrementMode.Disabled) { return null; } - //get tags with valid version - depends on configuration (see #3757) - var targetShas = new Lazy>(() => - this.taggedSemanticVersionRepository.GetTaggedSemanticVersions(configuration.TagPrefix, configuration.SemanticVersionFormat) - .SelectMany(_ => _).Where(_ => _.Value.IsMatchForBranchSpecificLabel(label)).Select(_ => _.Tag.TargetSha).ToHashSet() + IEnumerable commits = GetCommitHistory( + tagPrefix: configuration.TagPrefix, + semanticVersionFormat: configuration.SemanticVersionFormat, + baseVersionSource: baseVersionSource, + currentCommit: currentCommit, + label: label ); - var commits = GetIntermediateCommits(baseCommit, currentCommit); - // consider commit messages since latest tag only (see #3071) - commits = commits - .Reverse() - .TakeWhile(x => !targetShas.Value.Contains(x.Sha)) - .Reverse(); - if (configuration.CommitMessageIncrementing == CommitMessageIncrementMode.MergeMessageOnly) { commits = commits.Where(c => c.Parents.Count() > 1); @@ -114,6 +109,41 @@ private static Regex TryGetRegexOrDefault(string? messageRegex, Regex defaultReg ? defaultRegex : CompiledRegexCache.GetOrAdd(messageRegex, pattern => new(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase)); + public IReadOnlyCollection GetCommitHistory( + string? tagPrefix, SemanticVersionFormat semanticVersionFormat, ICommit? baseVersionSource, ICommit currentCommit, string? label) + { + var targetShas = new Lazy>(() => + this.taggedSemanticVersionRepository.GetTaggedSemanticVersions(tagPrefix, semanticVersionFormat) + .SelectMany(_ => _).Where(_ => _.Value.IsMatchForBranchSpecificLabel(label)).Select(_ => _.Tag.TargetSha).ToHashSet() + ); + + var intermediateCommits = GetIntermediateCommits(baseVersionSource, currentCommit).ToArray(); + + var commitLog = intermediateCommits.ToDictionary(element => element.Id.Sha); + + foreach (var item in intermediateCommits.Reverse()) + { + if (!commitLog.ContainsKey(item.Sha)) continue; + + if (targetShas.Value.Contains(item.Sha)) + { + void RemoveCommitFromHistory(ICommit commit) + { + if (!commitLog.ContainsKey(commit.Sha)) return; + + commitLog.Remove(commit.Sha); + foreach (var item in commit.Parents) + { + RemoveCommitFromHistory(item); + } + } + RemoveCommitFromHistory(item); + } + } + + return commitLog.Values; + } + /// /// Get the sequence of commits in a repository between a (exclusive) /// and a particular (inclusive) @@ -149,7 +179,7 @@ private Dictionary GetHeadCommitsMap(ICommit? headCommit) => /// private ICommit[] GetHeadCommits(ICommit? headCommit) => this.headCommitsCache.GetOrAdd(headCommit?.Sha ?? "NULL", () => - GetCommitsReacheableFromHead(repository, headCommit).ToArray()); + GetCommitsReacheableFromHead(headCommit).ToArray()); private VersionField? GetIncrementFromCommit(ICommit commit, Regex majorRegex, Regex minorRegex, Regex patchRegex, Regex none) => this.commitIncrementCache.GetOrAdd(commit.Sha, () => @@ -164,11 +194,7 @@ private ICommit[] GetHeadCommits(ICommit? headCommit) => return null; } - /// - /// Query a for the sequence of commits from the beginning to a particular - /// (inclusive) - /// - private static IEnumerable GetCommitsReacheableFromHead(IGitRepository repo, ICommit? headCommit) + private IEnumerable GetCommitsReacheableFromHead(ICommit? headCommit) { var filter = new CommitFilter { @@ -176,7 +202,7 @@ private static IEnumerable GetCommitsReacheableFromHead(IGitRepository SortBy = CommitSortStrategies.Topological | CommitSortStrategies.Reverse }; - return repo.Commits.QueryBy(filter); + return repository.Commits.QueryBy(filter); } public IEnumerable GetMergedCommits(ICommit mergeCommit, int index) @@ -202,7 +228,7 @@ private static ICommit GetMergedHead(ICommit mergeCommit) { var parents = mergeCommit.Parents.Skip(1).ToList(); if (parents.Count > 1) - throw new NotSupportedException("Mainline development does not support more than one merge source in a single commit yet"); + throw new NotSupportedException("GitVersion does not support more than one merge source in a single commit yet"); return parents.Single(); } From 85701ff9e60b259fee49d20b14a0831239fadf4d Mon Sep 17 00:00:00 2001 From: Hardy Hobeck Date: Wed, 28 Feb 2024 14:00:20 +0100 Subject: [PATCH 007/544] Integrate code review remarks --- .../IncrementStrategyFinder.cs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs index 7804acc09c..f4fe8265d4 100644 --- a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs @@ -109,7 +109,7 @@ private static Regex TryGetRegexOrDefault(string? messageRegex, Regex defaultReg ? defaultRegex : CompiledRegexCache.GetOrAdd(messageRegex, pattern => new(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase)); - public IReadOnlyCollection GetCommitHistory( + private IReadOnlyCollection GetCommitHistory( string? tagPrefix, SemanticVersionFormat semanticVersionFormat, ICommit? baseVersionSource, ICommit currentCommit, string? label) { var targetShas = new Lazy>(() => @@ -121,23 +121,22 @@ public IReadOnlyCollection GetCommitHistory( var commitLog = intermediateCommits.ToDictionary(element => element.Id.Sha); - foreach (var item in intermediateCommits.Reverse()) + foreach (var intermediateCommit in intermediateCommits.Reverse()) { - if (!commitLog.ContainsKey(item.Sha)) continue; + if (!commitLog.ContainsKey(intermediateCommit.Sha)) continue; - if (targetShas.Value.Contains(item.Sha)) + if (targetShas.Value.Contains(intermediateCommit.Sha)) { - void RemoveCommitFromHistory(ICommit commit) + void RemoveCommitFromHistory(ICommit commit, HashSet traversedCommits) { - if (!commitLog.ContainsKey(commit.Sha)) return; + if (!traversedCommits.Add(commit) || !commitLog.Remove(commit.Sha)) return; - commitLog.Remove(commit.Sha); - foreach (var item in commit.Parents) + foreach (var parentCommit in commit.Parents) { - RemoveCommitFromHistory(item); + RemoveCommitFromHistory(parentCommit, traversedCommits); } } - RemoveCommitFromHistory(item); + RemoveCommitFromHistory(intermediateCommit, new HashSet()); } } From 475f65c5c7020ce314d70af5cbebd5a73e746ed9 Mon Sep 17 00:00:00 2001 From: Hardy Hobeck Date: Wed, 28 Feb 2024 18:11:45 +0100 Subject: [PATCH 008/544] Change recursive call in incrementStrategyFinder --- .../IncrementStrategyFinder.cs | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs index f4fe8265d4..93c04fa163 100644 --- a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs @@ -112,7 +112,7 @@ private static Regex TryGetRegexOrDefault(string? messageRegex, Regex defaultReg private IReadOnlyCollection GetCommitHistory( string? tagPrefix, SemanticVersionFormat semanticVersionFormat, ICommit? baseVersionSource, ICommit currentCommit, string? label) { - var targetShas = new Lazy>(() => + var targetShas = new Lazy>(() => this.taggedSemanticVersionRepository.GetTaggedSemanticVersions(tagPrefix, semanticVersionFormat) .SelectMany(_ => _).Where(_ => _.Value.IsMatchForBranchSpecificLabel(label)).Select(_ => _.Tag.TargetSha).ToHashSet() ); @@ -123,20 +123,21 @@ private IReadOnlyCollection GetCommitHistory( foreach (var intermediateCommit in intermediateCommits.Reverse()) { - if (!commitLog.ContainsKey(intermediateCommit.Sha)) continue; - - if (targetShas.Value.Contains(intermediateCommit.Sha)) + if (targetShas.Value.Contains(intermediateCommit.Sha) && commitLog.Remove(intermediateCommit.Sha)) { - void RemoveCommitFromHistory(ICommit commit, HashSet traversedCommits) + var parentCommits = intermediateCommit.Parents.ToList(); + while (parentCommits.Count != 0) { - if (!traversedCommits.Add(commit) || !commitLog.Remove(commit.Sha)) return; - - foreach (var parentCommit in commit.Parents) + List temporaryList = new(); + foreach (var parentCommit in parentCommits) { - RemoveCommitFromHistory(parentCommit, traversedCommits); + if (commitLog.Remove(parentCommit.Sha)) + { + temporaryList.AddRange(parentCommit.Parents); + } } + parentCommits = temporaryList; } - RemoveCommitFromHistory(intermediateCommit, new HashSet()); } } From c4a89f240ff0b545a7e9924c65e9e4d965f9dc6c Mon Sep 17 00:00:00 2001 From: Artur Date: Sat, 9 Mar 2024 16:19:20 +0100 Subject: [PATCH 009/544] (ci) cleanup --- build/artifacts/Tasks/Default.cs | 4 +--- build/build/Tasks/Default.cs | 4 +--- build/build/Tasks/Package.cs | 4 +--- build/build/Tasks/Test.cs | 4 +--- build/chores/Tasks/Default.cs | 4 +--- build/docker/Tasks/Default.cs | 4 +--- build/docker/Tasks/DockerHubReadmePublish.cs | 4 +--- build/docs/Tasks/Default.cs | 4 +--- build/publish/Tasks/Default.cs | 4 +--- build/publish/Tasks/PublishChocolatey.cs | 4 +--- build/publish/Tasks/PublishNuget.cs | 4 +--- build/release/Tasks/Default.cs | 4 +--- build/release/Tasks/PublishRelease.cs | 4 +--- 13 files changed, 13 insertions(+), 39 deletions(-) diff --git a/build/artifacts/Tasks/Default.cs b/build/artifacts/Tasks/Default.cs index 69d435c477..702a604678 100644 --- a/build/artifacts/Tasks/Default.cs +++ b/build/artifacts/Tasks/Default.cs @@ -1,6 +1,4 @@ namespace Artifacts.Tasks; [TaskDescription("Shows this output")] -public class Default : Common.Tasks.Default -{ -} +public class Default : Common.Tasks.Default; diff --git a/build/build/Tasks/Default.cs b/build/build/Tasks/Default.cs index 57b473ee58..42a99a37ee 100644 --- a/build/build/Tasks/Default.cs +++ b/build/build/Tasks/Default.cs @@ -1,6 +1,4 @@ namespace Build.Tasks; [TaskDescription("Shows this output")] -public class Default : Common.Tasks.Default -{ -} +public class Default : Common.Tasks.Default; diff --git a/build/build/Tasks/Package.cs b/build/build/Tasks/Package.cs index 00386c7320..38fefc0f80 100644 --- a/build/build/Tasks/Package.cs +++ b/build/build/Tasks/Package.cs @@ -5,6 +5,4 @@ namespace Build.Tasks; [IsDependentOn(typeof(PackageChocolatey))] [IsDependentOn(typeof(PackageNuget))] [IsDependentOn(typeof(PackageArchive))] -public class Package : FrostingTask -{ -} +public class Package : FrostingTask; diff --git a/build/build/Tasks/Test.cs b/build/build/Tasks/Test.cs index e8bf15f20a..e659371ec8 100644 --- a/build/build/Tasks/Test.cs +++ b/build/build/Tasks/Test.cs @@ -3,6 +3,4 @@ namespace Build.Tasks; [TaskName(nameof(Test))] [TaskDescription("(CI only) Run the tests and publish the results")] [IsDependentOn(typeof(PublishCoverage))] -public class Test : FrostingTask -{ -} +public class Test : FrostingTask; diff --git a/build/chores/Tasks/Default.cs b/build/chores/Tasks/Default.cs index 0df4f50886..a2d01e0324 100644 --- a/build/chores/Tasks/Default.cs +++ b/build/chores/Tasks/Default.cs @@ -1,6 +1,4 @@ namespace Chores.Tasks; [TaskDescription("Shows this output")] -public class Default : Common.Tasks.Default -{ -} +public class Default : Common.Tasks.Default; diff --git a/build/docker/Tasks/Default.cs b/build/docker/Tasks/Default.cs index 57deb33a47..c414fa6931 100644 --- a/build/docker/Tasks/Default.cs +++ b/build/docker/Tasks/Default.cs @@ -1,6 +1,4 @@ namespace Docker.Tasks; [TaskDescription("Shows this output")] -public class Default : Common.Tasks.Default -{ -} +public class Default : Common.Tasks.Default; diff --git a/build/docker/Tasks/DockerHubReadmePublish.cs b/build/docker/Tasks/DockerHubReadmePublish.cs index 7f871be654..dde53c1a72 100644 --- a/build/docker/Tasks/DockerHubReadmePublish.cs +++ b/build/docker/Tasks/DockerHubReadmePublish.cs @@ -7,9 +7,7 @@ namespace Docker.Tasks; [TaskName(nameof(DockerHubReadmePublish))] [IsDependentOn(typeof(DockerHubReadmePublishInternal))] [TaskDescription("Publish the DockerHub updated README.md")] -public class DockerHubReadmePublish : FrostingTask -{ -} +public class DockerHubReadmePublish : FrostingTask; [TaskName(nameof(DockerHubReadmePublishInternal))] [TaskDescription("Publish the DockerHub updated README.md")] public class DockerHubReadmePublishInternal : FrostingTask diff --git a/build/docs/Tasks/Default.cs b/build/docs/Tasks/Default.cs index 86555fbb28..9413406fc1 100644 --- a/build/docs/Tasks/Default.cs +++ b/build/docs/Tasks/Default.cs @@ -1,6 +1,4 @@ namespace Docs.Tasks; [TaskDescription("Shows this output")] -public class Default : Common.Tasks.Default -{ -} +public class Default : Common.Tasks.Default; diff --git a/build/publish/Tasks/Default.cs b/build/publish/Tasks/Default.cs index eed5903ce5..88260f7a6d 100644 --- a/build/publish/Tasks/Default.cs +++ b/build/publish/Tasks/Default.cs @@ -1,6 +1,4 @@ namespace Publish.Tasks; [TaskDescription("Shows this output")] -public class Default : Common.Tasks.Default -{ -} +public class Default : Common.Tasks.Default; diff --git a/build/publish/Tasks/PublishChocolatey.cs b/build/publish/Tasks/PublishChocolatey.cs index e79f80370d..fce099205d 100644 --- a/build/publish/Tasks/PublishChocolatey.cs +++ b/build/publish/Tasks/PublishChocolatey.cs @@ -7,9 +7,7 @@ namespace Publish.Tasks; [TaskName(nameof(PublishChocolatey))] [TaskDescription("Publish chocolatey packages")] [IsDependentOn(typeof(PublishChocolateyInternal))] -public class PublishChocolatey : FrostingTask -{ -} +public class PublishChocolatey : FrostingTask; [TaskName(nameof(PublishChocolateyInternal))] [TaskDescription("Publish chocolatey packages")] diff --git a/build/publish/Tasks/PublishNuget.cs b/build/publish/Tasks/PublishNuget.cs index e8a0fb77bb..2abb602526 100644 --- a/build/publish/Tasks/PublishNuget.cs +++ b/build/publish/Tasks/PublishNuget.cs @@ -6,9 +6,7 @@ namespace Publish.Tasks; [TaskName(nameof(PublishNuget))] [TaskDescription("Publish nuget packages")] [IsDependentOn(typeof(PublishNugetInternal))] -public class PublishNuget : FrostingTask -{ -} +public class PublishNuget : FrostingTask; [TaskName(nameof(PublishNugetInternal))] [TaskDescription("Publish nuget packages")] diff --git a/build/release/Tasks/Default.cs b/build/release/Tasks/Default.cs index e842138737..595447a5db 100644 --- a/build/release/Tasks/Default.cs +++ b/build/release/Tasks/Default.cs @@ -1,6 +1,4 @@ namespace Release.Tasks; [TaskDescription("Shows this output")] -public class Default : Common.Tasks.Default -{ -} +public class Default : Common.Tasks.Default; diff --git a/build/release/Tasks/PublishRelease.cs b/build/release/Tasks/PublishRelease.cs index 4f6ab1a3d0..7bbaf8ea9c 100644 --- a/build/release/Tasks/PublishRelease.cs +++ b/build/release/Tasks/PublishRelease.cs @@ -8,9 +8,7 @@ namespace Release.Tasks; [TaskDescription("Publish release")] [IsDependentOn(typeof(PublishReleaseInternal))] -public class PublishRelease : FrostingTask -{ -} +public class PublishRelease : FrostingTask; [TaskName(nameof(PublishReleaseInternal))] [TaskDescription("Publish release")] From a024546e455e7e099dbef82c57867bbb1724c397 Mon Sep 17 00:00:00 2001 From: Artur Date: Sat, 9 Mar 2024 20:59:57 +0100 Subject: [PATCH 010/544] move dotnet-tools.json to .config folder --- dotnet-tools.json => .config/dotnet-tools.json | 0 build/CI.sln | 2 +- build/common/Utilities/CakeHostExtensions.cs | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename dotnet-tools.json => .config/dotnet-tools.json (100%) diff --git a/dotnet-tools.json b/.config/dotnet-tools.json similarity index 100% rename from dotnet-tools.json rename to .config/dotnet-tools.json diff --git a/build/CI.sln b/build/CI.sln index 897353c709..67ace32076 100644 --- a/build/CI.sln +++ b/build/CI.sln @@ -3,9 +3,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sln", "sln", "{EC2C1EC4-BE5 ProjectSection(SolutionItems) = preProject Directory.Build.props = Directory.Build.props Directory.Packages.props = Directory.Packages.props - ..\dotnet-tools.json = ..\dotnet-tools.json ..\global.json = ..\global.json ..\.gitignore = ..\.gitignore + ..\.config\dotnet-tools.json = ..\.config\dotnet-tools.json EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "build", "build\build.csproj", "{1AC00FB2-E28A-46B7-9683-AA7A1AFC29EB}" diff --git a/build/common/Utilities/CakeHostExtensions.cs b/build/common/Utilities/CakeHostExtensions.cs index 5b8681122f..43b964c8b1 100644 --- a/build/common/Utilities/CakeHostExtensions.cs +++ b/build/common/Utilities/CakeHostExtensions.cs @@ -12,7 +12,7 @@ public static CakeHost UseRootDirectory(this CakeHost host) public static CakeHost InstallToolsFromRootManifest(this CakeHost host) { - host = host.UseModule().InstallToolsFromManifest(Extensions.GetRootDirectory().CombineWithFilePath("dotnet-tools.json").FullPath); + host = host.UseModule().InstallToolsFromManifest(Extensions.GetRootDirectory().CombineWithFilePath(".config/dotnet-tools.json").FullPath); return host; } From 1ac59049181d409d41e00d7dc1d6cdb094c3e4c6 Mon Sep 17 00:00:00 2001 From: Artur Date: Sun, 10 Mar 2024 08:02:29 +0100 Subject: [PATCH 011/544] update global.json sdk to 8.0.201 --- global.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/global.json b/global.json index 65eb540c45..b070ca42c2 100644 --- a/global.json +++ b/global.json @@ -1,9 +1,10 @@ { "projects": [ "build", + "new-cli", "src" ], "sdk": { - "version": "8.0.200" + "version": "8.0.201" } } From 45865514f9a05dfe9b1e65b28a9ad38773b94e02 Mon Sep 17 00:00:00 2001 From: Artur Date: Sun, 10 Mar 2024 09:36:25 +0100 Subject: [PATCH 012/544] cleanup --- build/CI.sln.DotSettings | 3 ++- build/artifacts/BuildContext.cs | 6 +----- build/build/BuildContext.cs | 6 +----- build/build/Tasks/ValidateVersion.cs | 4 ++-- build/build/Utilities/Credentials.cs | 2 +- build/chores/BuildContext.cs | 7 +------ build/common/Utilities/TaskArgumentsAttribute.cs | 11 +++-------- build/docker/BuildContext.cs | 6 +----- build/docker/Utilities/Credentials.cs | 2 +- build/docs/BuildContext.cs | 6 +----- build/docs/Utilities/Credentials.cs | 2 +- build/publish/BuildContext.cs | 7 ++----- build/publish/Utilities/Credentials.cs | 6 +++--- build/release/BuildContext.cs | 6 +----- build/release/Utilities/Credentials.cs | 2 +- 15 files changed, 22 insertions(+), 54 deletions(-) diff --git a/build/CI.sln.DotSettings b/build/CI.sln.DotSettings index f37a772647..4d7da80b2d 100644 --- a/build/CI.sln.DotSettings +++ b/build/CI.sln.DotSettings @@ -1,4 +1,5 @@  OS True - True \ No newline at end of file + True + True \ No newline at end of file diff --git a/build/artifacts/BuildContext.cs b/build/artifacts/BuildContext.cs index 73b3b1a4ef..9c3b353ede 100644 --- a/build/artifacts/BuildContext.cs +++ b/build/artifacts/BuildContext.cs @@ -2,15 +2,11 @@ namespace Artifacts; -public class BuildContext : BuildContextBase +public class BuildContext(ICakeContext context) : BuildContextBase(context) { public string MsBuildConfiguration { get; } = Constants.DefaultConfiguration; public bool IsDockerOnLinux { get; set; } public IEnumerable Images { get; set; } = new List(); - - public BuildContext(ICakeContext context) : base(context) - { - } } diff --git a/build/build/BuildContext.cs b/build/build/BuildContext.cs index 57624599dc..2580b482fd 100644 --- a/build/build/BuildContext.cs +++ b/build/build/BuildContext.cs @@ -3,7 +3,7 @@ namespace Build; -public class BuildContext : BuildContextBase +public class BuildContext(ICakeContext context) : BuildContextBase(context) { public string MsBuildConfiguration { get; set; } = Constants.DefaultConfiguration; @@ -19,8 +19,4 @@ public class BuildContext : BuildContextBase public Credentials? Credentials { get; set; } public DotNetMSBuildSettings MsBuildSettings { get; } = new(); - - public BuildContext(ICakeContext context) : base(context) - { - } } diff --git a/build/build/Tasks/ValidateVersion.cs b/build/build/Tasks/ValidateVersion.cs index a73ad7c87c..317a5caa7b 100644 --- a/build/build/Tasks/ValidateVersion.cs +++ b/build/build/Tasks/ValidateVersion.cs @@ -9,7 +9,7 @@ public class ValidateVersion : FrostingTask { public override void Run(BuildContext context) { - var gitversionTool = context.GetGitVersionToolLocation(); - context.ValidateOutput("dotnet", $"\"{gitversionTool}\" -version", context.Version!.GitVersion!.InformationalVersion!); + var gitVersionTool = context.GetGitVersionToolLocation(); + context.ValidateOutput("dotnet", $"\"{gitVersionTool}\" -version", context.Version!.GitVersion!.InformationalVersion!); } } diff --git a/build/build/Utilities/Credentials.cs b/build/build/Utilities/Credentials.cs index 94057dd729..058ccde33a 100644 --- a/build/build/Utilities/Credentials.cs +++ b/build/build/Utilities/Credentials.cs @@ -8,6 +8,6 @@ public class Credentials public static Credentials GetCredentials(ICakeContext context) => new() { - CodeCov = new CodeCovCredentials(context.EnvironmentVariable("CODECOV_TOKEN")), + CodeCov = new(context.EnvironmentVariable("CODECOV_TOKEN")), }; } diff --git a/build/chores/BuildContext.cs b/build/chores/BuildContext.cs index 92660009f3..8f832935b6 100644 --- a/build/chores/BuildContext.cs +++ b/build/chores/BuildContext.cs @@ -1,8 +1,3 @@ namespace Chores; -public class BuildContext : FrostingContext -{ - public BuildContext(ICakeContext context) : base(context) - { - } -} +public class BuildContext(ICakeContext context) : FrostingContext(context); diff --git a/build/common/Utilities/TaskArgumentsAttribute.cs b/build/common/Utilities/TaskArgumentsAttribute.cs index d93561884c..54a618c953 100644 --- a/build/common/Utilities/TaskArgumentsAttribute.cs +++ b/build/common/Utilities/TaskArgumentsAttribute.cs @@ -5,13 +5,8 @@ namespace Common.Utilities; /// /// [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = true)] -public class TaskArgumentAttribute : Attribute +public class TaskArgumentAttribute(string name, params string[] possibleValues) : Attribute { - public string Name { get; } - public string[] PossibleValues { get; } - public TaskArgumentAttribute(string name, params string[] possibleValues) - { - Name = name; - PossibleValues = possibleValues; - } + public string Name { get; } = name; + public string[] PossibleValues { get; } = possibleValues; } diff --git a/build/docker/BuildContext.cs b/build/docker/BuildContext.cs index 555d342399..232325c31b 100644 --- a/build/docker/BuildContext.cs +++ b/build/docker/BuildContext.cs @@ -3,7 +3,7 @@ namespace Docker; -public class BuildContext : BuildContextBase +public class BuildContext(ICakeContext context) : BuildContextBase(context) { public Credentials? Credentials { get; set; } public bool IsDockerOnLinux { get; set; } @@ -11,8 +11,4 @@ public class BuildContext : BuildContextBase public IEnumerable Images { get; set; } = new List(); public DockerRegistry DockerRegistry { get; set; } public ICollection Architectures { get; set; } = new List(); - - public BuildContext(ICakeContext context) : base(context) - { - } } diff --git a/build/docker/Utilities/Credentials.cs b/build/docker/Utilities/Credentials.cs index 75f45b5928..2f32094dd6 100644 --- a/build/docker/Utilities/Credentials.cs +++ b/build/docker/Utilities/Credentials.cs @@ -8,7 +8,7 @@ public class Credentials public static Credentials GetCredentials(ICakeContext context) => new() { - DockerHub = new DockerHubCredentials( + DockerHub = new( context.EnvironmentVariable("DOCKER_USERNAME"), context.EnvironmentVariable("DOCKER_PASSWORD")), }; diff --git a/build/docs/BuildContext.cs b/build/docs/BuildContext.cs index ca79d42541..c3b8efd477 100644 --- a/build/docs/BuildContext.cs +++ b/build/docs/BuildContext.cs @@ -4,13 +4,9 @@ namespace Docs; -public class BuildContext : BuildContextBase +public class BuildContext(ICakeContext context) : BuildContextBase(context) { public bool ForcePublish { get; set; } public Credentials? Credentials { get; set; } public WyamSettings? WyamSettings { get; set; } - - public BuildContext(ICakeContext context) : base(context) - { - } } diff --git a/build/docs/Utilities/Credentials.cs b/build/docs/Utilities/Credentials.cs index c221d8dd9f..13de8ec6db 100644 --- a/build/docs/Utilities/Credentials.cs +++ b/build/docs/Utilities/Credentials.cs @@ -7,7 +7,7 @@ public class Credentials public GitHubCredentials? GitHub { get; private init; } public static Credentials GetCredentials(ICakeContext context) => new() { - GitHub = new GitHubCredentials( + GitHub = new( context.EnvironmentVariable("GITHUB_TOKEN"), context.EnvironmentVariable("GITHUB_USERNAME")) }; diff --git a/build/publish/BuildContext.cs b/build/publish/BuildContext.cs index 3033e3705a..e2ef7d662e 100644 --- a/build/publish/BuildContext.cs +++ b/build/publish/BuildContext.cs @@ -3,12 +3,9 @@ namespace Publish; -public class BuildContext : BuildContextBase +public class BuildContext(ICakeContext context) : BuildContextBase(context) { public Credentials? Credentials { get; set; } - public List Packages { get; } = new(); - public BuildContext(ICakeContext context) : base(context) - { - } + public List Packages { get; } = []; } diff --git a/build/publish/Utilities/Credentials.cs b/build/publish/Utilities/Credentials.cs index e14c628c2e..aa2ef63082 100644 --- a/build/publish/Utilities/Credentials.cs +++ b/build/publish/Utilities/Credentials.cs @@ -10,8 +10,8 @@ public class Credentials public static Credentials GetCredentials(ICakeContext context) => new() { - GitHub = new GitHubCredentials(context.EnvironmentVariable("GITHUB_TOKEN")), - Nuget = new NugetCredentials(context.EnvironmentVariable("NUGET_API_KEY")), - Chocolatey = new ChocolateyCredentials(context.EnvironmentVariable("CHOCOLATEY_API_KEY")), + GitHub = new(context.EnvironmentVariable("GITHUB_TOKEN")), + Nuget = new(context.EnvironmentVariable("NUGET_API_KEY")), + Chocolatey = new(context.EnvironmentVariable("CHOCOLATEY_API_KEY")), }; } diff --git a/build/release/BuildContext.cs b/build/release/BuildContext.cs index 7b01b01652..d29e09cd0a 100644 --- a/build/release/BuildContext.cs +++ b/build/release/BuildContext.cs @@ -3,11 +3,7 @@ namespace Release; -public class BuildContext : BuildContextBase +public class BuildContext(ICakeContext context) : BuildContextBase(context) { public Credentials? Credentials { get; set; } - - public BuildContext(ICakeContext context) : base(context) - { - } } diff --git a/build/release/Utilities/Credentials.cs b/build/release/Utilities/Credentials.cs index 94501bb5b7..ab698c4f95 100644 --- a/build/release/Utilities/Credentials.cs +++ b/build/release/Utilities/Credentials.cs @@ -7,6 +7,6 @@ public class Credentials public GitHubCredentials? GitHub { get; private init; } public static Credentials GetCredentials(ICakeContext context) => new() { - GitHub = new GitHubCredentials(context.EnvironmentVariable("GITHUB_TOKEN")), + GitHub = new(context.EnvironmentVariable("GITHUB_TOKEN")), }; } From c5974d68492f0c3466e1707fac1744aad71a5543 Mon Sep 17 00:00:00 2001 From: Artur Date: Sun, 10 Mar 2024 11:28:48 +0100 Subject: [PATCH 013/544] updated dependabot configutations --- .github/dependabot.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 68699b5812..8759a0ab79 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -52,13 +52,10 @@ updates: nunit: patterns: - "NUnit.*" - directory: "/src" + directory: "/" schedule: interval: daily open-pull-requests-limit: 10 - ignore: - - dependency-name: "Microsoft.Build" - versions: ["16.9.0", "16.11.0"] - package-ecosystem: github-actions labels: From 18985fc39c0a7fcd6dafcb55a66cb20957626765 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 10 Mar 2024 10:31:42 +0000 Subject: [PATCH 014/544] (docs deps): Bump the remark group with 1 update Bumps the remark group with 1 update: [remark-textr](https://github.com/remarkjs/remark-textr). Updates `remark-textr` from 6.0.0 to 6.1.0 - [Release notes](https://github.com/remarkjs/remark-textr/releases) - [Commits](https://github.com/remarkjs/remark-textr/compare/6.0.0...6.1.0) --- updated-dependencies: - dependency-name: remark-textr dependency-type: direct:development update-type: version-update:semver-minor dependency-group: remark ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index c42a1fbf70..1ae562d2e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -73,7 +73,7 @@ "remark-preset-lint-markdown-style-guide": "^5.1.3", "remark-preset-lint-recommended": "^6.1.3", "remark-retext": "^6.0.0", - "remark-textr": "^6.0.0", + "remark-textr": "^6.1.0", "remark-validate-links": "^13.0.0" } }, @@ -7700,9 +7700,9 @@ } }, "node_modules/remark-textr": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/remark-textr/-/remark-textr-6.0.0.tgz", - "integrity": "sha512-0quq24eO79RRviuPeWT0TrvuKYEXGv1iH+sGA1zF62yW/YJWmRyMrgtoXUYgwG5r9WA3/l9afWVc3RjZ2b8DFA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/remark-textr/-/remark-textr-6.1.0.tgz", + "integrity": "sha512-3A61/6Dn8x5wS7f9BubnIjwZfttEw9+PWVFtwOvRzKXLmZDV1mgi9MJeaQ9BNzWhojsSRHWLNa2JHKCOOI5DfA==", "dev": true, "dependencies": { "@types/mdast": "^4.0.0", @@ -14972,9 +14972,9 @@ } }, "remark-textr": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/remark-textr/-/remark-textr-6.0.0.tgz", - "integrity": "sha512-0quq24eO79RRviuPeWT0TrvuKYEXGv1iH+sGA1zF62yW/YJWmRyMrgtoXUYgwG5r9WA3/l9afWVc3RjZ2b8DFA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/remark-textr/-/remark-textr-6.1.0.tgz", + "integrity": "sha512-3A61/6Dn8x5wS7f9BubnIjwZfttEw9+PWVFtwOvRzKXLmZDV1mgi9MJeaQ9BNzWhojsSRHWLNa2JHKCOOI5DfA==", "dev": true, "requires": { "@types/mdast": "^4.0.0", diff --git a/package.json b/package.json index cd9ef98712..2e77aee1e0 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "remark-preset-lint-markdown-style-guide": "^5.1.3", "remark-preset-lint-recommended": "^6.1.3", "remark-retext": "^6.0.0", - "remark-textr": "^6.0.0", + "remark-textr": "^6.1.0", "remark-validate-links": "^13.0.0" }, "overrides": { From c68fad7f370bb4edd4c8133878b1b0c52636d6e2 Mon Sep 17 00:00:00 2001 From: Artur Date: Sun, 10 Mar 2024 11:33:13 +0100 Subject: [PATCH 015/544] temporary set global.json version to 8.0.100 --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index b070ca42c2..53a28b004c 100644 --- a/global.json +++ b/global.json @@ -5,6 +5,6 @@ "src" ], "sdk": { - "version": "8.0.201" + "version": "8.0.100" } } From 420b41a8f7bec087300f129ce6b405bd6c9c67b0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 10 Mar 2024 10:35:54 +0000 Subject: [PATCH 016/544] (ci deps): Bump Cake.Coverlet from 3.0.4 to 4.0.1 in /build Bumps [Cake.Coverlet](https://github.com/romanx/Cake.Coverlet) from 3.0.4 to 4.0.1. - [Release notes](https://github.com/romanx/Cake.Coverlet/releases) - [Commits](https://github.com/romanx/Cake.Coverlet/commits/v4.0.1) --- updated-dependencies: - dependency-name: Cake.Coverlet dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- build/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Directory.Packages.props b/build/Directory.Packages.props index bf4780e912..d11b9079fb 100644 --- a/build/Directory.Packages.props +++ b/build/Directory.Packages.props @@ -5,7 +5,7 @@ - + From b72c77d0d211eba25d7b47166bcdff8cb9cfee30 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 10 Mar 2024 10:37:05 +0000 Subject: [PATCH 017/544] (deps): Bump gitreleasemanager.tool from 0.16.0 to 0.17.0 Bumps [gitreleasemanager.tool](https://github.com/GitTools/GitReleaseManager) from 0.16.0 to 0.17.0. - [Release notes](https://github.com/GitTools/GitReleaseManager/releases) - [Changelog](https://github.com/GitTools/GitReleaseManager/blob/develop/GitReleaseManager.yaml) - [Commits](https://github.com/GitTools/GitReleaseManager/compare/0.16.0...0.17.0) --- updated-dependencies: - dependency-name: gitreleasemanager.tool dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .config/dotnet-tools.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 84ab2006ea..1327cd3a52 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "gitreleasemanager.tool": { - "version": "0.16.0", + "version": "0.17.0", "commands": [ "dotnet-gitreleasemanager" ] @@ -15,4 +15,4 @@ ] } } -} +} \ No newline at end of file From e17835e8afbbc440926f5252bf4611378badaf2a Mon Sep 17 00:00:00 2001 From: Artur Date: Sun, 10 Mar 2024 11:28:48 +0100 Subject: [PATCH 018/544] updated dependabot configurations --- .github/dependabot.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 68699b5812..8759a0ab79 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -52,13 +52,10 @@ updates: nunit: patterns: - "NUnit.*" - directory: "/src" + directory: "/" schedule: interval: daily open-pull-requests-limit: 10 - ignore: - - dependency-name: "Microsoft.Build" - versions: ["16.9.0", "16.11.0"] - package-ecosystem: github-actions labels: From bf631f0c896442867d0db28b444e62dfc2c36293 Mon Sep 17 00:00:00 2001 From: Artur Date: Sun, 10 Mar 2024 12:01:00 +0100 Subject: [PATCH 019/544] update global.json sdk to 8.0.201 --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index 53a28b004c..b070ca42c2 100644 --- a/global.json +++ b/global.json @@ -5,6 +5,6 @@ "src" ], "sdk": { - "version": "8.0.100" + "version": "8.0.201" } } From 472be19514a28fb634c4d2044dcc8dc0643fff0d Mon Sep 17 00:00:00 2001 From: Artur Date: Sun, 10 Mar 2024 12:09:51 +0100 Subject: [PATCH 020/544] nuget updates --- Directory.Packages.props | 2 +- src/Directory.Packages.props | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 49a3c3dcce..354f6e70cd 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -10,7 +10,7 @@ - + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 5ce85093a7..0f7714bd0e 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -7,7 +7,7 @@ - + From ff4e668c709bad224b6fe89121b9171c71e0309d Mon Sep 17 00:00:00 2001 From: Artur Date: Wed, 13 Mar 2024 08:23:55 +0100 Subject: [PATCH 021/544] update global.json sdk to 8.0.202 --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index b070ca42c2..cf34f2d62d 100644 --- a/global.json +++ b/global.json @@ -5,6 +5,6 @@ "src" ], "sdk": { - "version": "8.0.201" + "version": "8.0.202" } } From 269585f07ac79e0abb3d64864866bb07c302406f Mon Sep 17 00:00:00 2001 From: Hardy Hobeck Date: Wed, 13 Mar 2024 16:15:39 +0100 Subject: [PATCH 022/544] Consider somehow the IGitVersionConfiguration::Ignore property. --- docs/input/docs/reference/configuration.md | 2 +- .../SupportedWorkflows/TrunkBased/v1.yml | 2 +- .../TrunkBasedConfigurationBuilder.cs | 122 +++++++ .../IntegrationTests/IgnoreBeforeScenarios.cs | 40 --- .../IntegrationTests/IgnoreCommitScenarios.cs | 334 ++++++++++++++++++ .../Configuration/EffectiveConfiguration.cs | 3 + .../IgnoreConfigurationExtensions.cs | 33 ++ .../Core/Abstractions/IRepositoryStore.cs | 6 +- src/GitVersion.Core/Core/GitPreparer.cs | 1 + .../Core/GitVersionContextFactory.cs | 21 +- .../Core/ITaggedSemanticVersionRepository.cs | 9 +- src/GitVersion.Core/Core/RepositoryStore.cs | 34 +- .../Core/TaggedSemanticVersionRepository.cs | 28 +- src/GitVersion.Core/GitVersionContext.cs | 2 + src/GitVersion.Core/PublicAPI.Unshipped.txt | 11 +- .../Abstractions/IIncrementStrategyFinder.cs | 2 +- .../IncrementStrategyFinder.cs | 41 ++- .../Trunk/CommitOnTrunkWithStableTagBase.cs | 1 - .../Trunk/LastCommitOnTrunkWithStableTag.cs | 3 - .../ContinuousDeliveryVersionCalculator.cs | 3 +- .../ContinuousDeploymentVersionCalculator.cs | 3 +- .../ManualDeploymentVersionCalculator.cs | 3 +- .../NextVersionCalculator.cs | 8 +- .../VersionCalculatorBase.cs | 18 +- .../MergeMessageVersionStrategy.cs | 2 +- .../TrunkBasedVersionStrategy.cs | 8 +- 26 files changed, 622 insertions(+), 118 deletions(-) create mode 100644 src/GitVersion.Configuration/TrunkBasedConfigurationBuilder.cs delete mode 100644 src/GitVersion.Core.Tests/IntegrationTests/IgnoreBeforeScenarios.cs create mode 100644 src/GitVersion.Core.Tests/IntegrationTests/IgnoreCommitScenarios.cs create mode 100644 src/GitVersion.Core/Configuration/IgnoreConfigurationExtensions.cs diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index 45cbecc3d0..da84070111 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -384,8 +384,8 @@ branches: regex: (?.+) source-branches: - main - - release - feature + - hotfix - pull-request ignore: sha: [] diff --git a/src/GitVersion.Configuration/SupportedWorkflows/TrunkBased/v1.yml b/src/GitVersion.Configuration/SupportedWorkflows/TrunkBased/v1.yml index f2da9a9ddd..bb225073de 100644 --- a/src/GitVersion.Configuration/SupportedWorkflows/TrunkBased/v1.yml +++ b/src/GitVersion.Configuration/SupportedWorkflows/TrunkBased/v1.yml @@ -59,8 +59,8 @@ branches: regex: (?.+) source-branches: - main - - release - feature + - hotfix - pull-request ignore: sha: [] diff --git a/src/GitVersion.Configuration/TrunkBasedConfigurationBuilder.cs b/src/GitVersion.Configuration/TrunkBasedConfigurationBuilder.cs new file mode 100644 index 0000000000..a522d694a7 --- /dev/null +++ b/src/GitVersion.Configuration/TrunkBasedConfigurationBuilder.cs @@ -0,0 +1,122 @@ +using GitVersion.VersionCalculation; + +namespace GitVersion.Configuration; + +internal sealed class TrunkBasedConfigurationBuilder : ConfigurationBuilderBase +{ + public static TrunkBasedConfigurationBuilder New => new(); + + private TrunkBasedConfigurationBuilder() + { + WithConfiguration(new GitVersionConfiguration() + { + AssemblyFileVersioningScheme = ConfigurationConstants.DefaultAssemblyFileVersioningScheme, + AssemblyVersioningScheme = ConfigurationConstants.DefaultAssemblyVersioningScheme, + CommitDateFormat = ConfigurationConstants.DefaultCommitDateFormat, + MajorVersionBumpMessage = IncrementStrategyFinder.DefaultMajorPattern, + MinorVersionBumpMessage = IncrementStrategyFinder.DefaultMinorPattern, + NoBumpMessage = IncrementStrategyFinder.DefaultNoBumpPattern, + PatchVersionBumpMessage = IncrementStrategyFinder.DefaultPatchPattern, + SemanticVersionFormat = ConfigurationConstants.DefaultSemanticVersionFormat, + VersionStrategies = [ + VersionStrategies.ConfiguredNextVersion, + VersionStrategies.TrunkBased + ], + TagPrefix = ConfigurationConstants.DefaultTagPrefix, + VersionInBranchPattern = ConfigurationConstants.DefaultVersionInBranchPattern, + TagPreReleaseWeight = ConfigurationConstants.DefaultTagPreReleaseWeight, + UpdateBuildNumber = ConfigurationConstants.DefaultUpdateBuildNumber, + DeploymentMode = DeploymentMode.ManualDeployment, + RegularExpression = string.Empty, + Label = ConfigurationConstants.BranchNamePlaceholder, + Increment = IncrementStrategy.Inherit, + CommitMessageIncrementing = CommitMessageIncrementMode.Enabled, + PreventIncrement = new PreventIncrementConfiguration() + { + OfMergedBranch = false, + WhenBranchMerged = false, + WhenCurrentCommitTagged = true + }, + TrackMergeTarget = false, + TrackMergeMessage = true, + TracksReleaseBranches = false, + IsReleaseBranch = false, + IsMainBranch = false + }); + + WithBranch(MainBranch.Name).WithConfiguration(new BranchConfiguration() + { + Increment = IncrementStrategy.Patch, + RegularExpression = MainBranch.RegexPattern, + DeploymentMode = DeploymentMode.ContinuousDeployment, + SourceBranches = [], + Label = string.Empty, + PreventIncrement = new PreventIncrementConfiguration() + { + OfMergedBranch = true + }, + TrackMergeTarget = false, + TracksReleaseBranches = false, + IsMainBranch = true, + IsReleaseBranch = false, + PreReleaseWeight = 55000 + }); + + WithBranch(FeatureBranch.Name).WithConfiguration(new BranchConfiguration() + { + Increment = IncrementStrategy.Minor, + RegularExpression = FeatureBranch.RegexPattern, + SourceBranches = + [ + this.MainBranch.Name + ], + PreventIncrement = new PreventIncrementConfiguration() + { + WhenCurrentCommitTagged = false + }, + PreReleaseWeight = 30000 + }); + + WithBranch(HotfixBranch.Name).WithConfiguration(new BranchConfiguration() + { + Increment = IncrementStrategy.Patch, + RegularExpression = HotfixBranch.RegexPattern, + SourceBranches = + [ + this.MainBranch.Name + ], + PreventIncrement = new PreventIncrementConfiguration() + { + WhenCurrentCommitTagged = false + }, + PreReleaseWeight = 30000 + }); + + WithBranch(PullRequestBranch.Name).WithConfiguration(new BranchConfiguration + { + Increment = IncrementStrategy.Inherit, + RegularExpression = PullRequestBranch.RegexPattern, + DeploymentMode = DeploymentMode.ManualDeployment, + SourceBranches = + [ + this.MainBranch.Name + ], + Label = "PullRequest", + LabelNumberPattern = ConfigurationConstants.DefaultLabelNumberPattern, + PreReleaseWeight = 30000 + }); + + WithBranch(UnknownBranch.Name).WithConfiguration(new BranchConfiguration + { + RegularExpression = UnknownBranch.RegexPattern, + DeploymentMode = DeploymentMode.ManualDeployment, + Increment = IncrementStrategy.Inherit, + SourceBranches = + [ + this.MainBranch.Name, + this.FeatureBranch.Name, + this.PullRequestBranch.Name + ] + }); + } +} diff --git a/src/GitVersion.Core.Tests/IntegrationTests/IgnoreBeforeScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/IgnoreBeforeScenarios.cs deleted file mode 100644 index 0150b215a4..0000000000 --- a/src/GitVersion.Core.Tests/IntegrationTests/IgnoreBeforeScenarios.cs +++ /dev/null @@ -1,40 +0,0 @@ -using GitVersion.Configuration; -using GitVersion.Core.Tests.Helpers; - -namespace GitVersion.Core.Tests.IntegrationTests; - -[TestFixture] -public class IgnoreBeforeScenarios : TestBase -{ - [TestCase(null, "0.0.1-0")] - [TestCase("0.0.1", "0.0.1-0")] - [TestCase("0.1.0", "0.1.0-0")] - [TestCase("1.0.0", "1.0.0-0")] - public void ShouldFallbackToBaseVersionWhenAllCommitsAreIgnored(string? nextVersion, string expectedFullSemVer) - { - using var fixture = new EmptyRepositoryFixture(); - var dateTimeNow = DateTimeOffset.Now; - fixture.MakeACommit(); - - var configuration = GitFlowConfigurationBuilder.New.WithNextVersion(nextVersion) - .WithIgnoreConfiguration(new IgnoreConfiguration { Before = dateTimeNow.AddDays(1) }).Build(); - - fixture.AssertFullSemver(expectedFullSemVer, configuration); - } - - [TestCase(null, "0.0.1-1")] - [TestCase("0.0.1", "0.0.1-1")] - [TestCase("0.1.0", "0.1.0-1")] - [TestCase("1.0.0", "1.0.0-1")] - public void ShouldNotFallbackToBaseVersionWhenAllCommitsAreNotIgnored(string? nextVersion, string expectedFullSemVer) - { - using var fixture = new EmptyRepositoryFixture(); - var dateTimeNow = DateTimeOffset.Now; - fixture.MakeACommit(); - - var configuration = GitFlowConfigurationBuilder.New.WithNextVersion(nextVersion) - .WithIgnoreConfiguration(new IgnoreConfiguration { Before = dateTimeNow.AddDays(-1) }).Build(); - - fixture.AssertFullSemver(expectedFullSemVer, configuration); - } -} diff --git a/src/GitVersion.Core.Tests/IntegrationTests/IgnoreCommitScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/IgnoreCommitScenarios.cs new file mode 100644 index 0000000000..186e233f74 --- /dev/null +++ b/src/GitVersion.Core.Tests/IntegrationTests/IgnoreCommitScenarios.cs @@ -0,0 +1,334 @@ +using GitVersion.Configuration; +using GitVersion.Core.Tests.Helpers; + +namespace GitVersion.Core.Tests.IntegrationTests; + +[TestFixture] +public class IgnoreCommitScenarios : TestBase +{ + [Test] + public void ShouldThrowGitVersionExceptionWhenAllCommitsAreIgnored() + { + using var fixture = new EmptyRepositoryFixture(); + var dateTimeNow = DateTimeOffset.Now; + fixture.MakeACommit(); + + var configuration = GitFlowConfigurationBuilder.New + .WithIgnoreConfiguration(new IgnoreConfiguration { Before = dateTimeNow.AddYears(1) }).Build(); + + Should.Throw(() => fixture.GetVersion(configuration)) + .Message.ShouldBe("No commits found on the current branch."); + } + + [TestCase(null, "0.0.1-1")] + [TestCase("0.0.1", "0.0.1-1")] + [TestCase("0.1.0", "0.1.0-1")] + [TestCase("1.0.0", "1.0.0-1")] + public void ShouldNotFallbackToBaseVersionWhenAllCommitsAreNotIgnored(string? nextVersion, string expectedFullSemVer) + { + using var fixture = new EmptyRepositoryFixture(); + var dateTimeNow = DateTimeOffset.Now; + fixture.MakeACommit(); + + var configuration = GitFlowConfigurationBuilder.New.WithNextVersion(nextVersion) + .WithIgnoreConfiguration(new IgnoreConfiguration { Before = dateTimeNow.AddYears(-1) }).Build(); + + fixture.AssertFullSemver(expectedFullSemVer, configuration); + } + + [Test] + public void GivenTrunkBasedWorkflowWithCommitParameterThenVersionShouldBeCorrect() + { + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + var commitB = fixture.Repository.MakeACommit("B"); + fixture.MakeACommit("C"); + fixture.MakeACommit("D"); + + var configuration = TrunkBasedConfigurationBuilder.New.Build(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2", configuration, commitId: commitB.Sha); + } + + [Test] + public void GivenTrunkBasedWorkflowWithIgnoreConfigurationForCommitThenVersionShouldBeCorrect() + { + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + var commitB = fixture.Repository.MakeACommit("B"); + fixture.MakeACommit("C"); + fixture.MakeACommit("D"); + + var configuration = TrunkBasedConfigurationBuilder.New + .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitB.Sha] }) + .Build(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3", configuration); + } + + [Test] + public void GivenTrunkBasedWorkflowWithIgnoreConfigurationForCommitBAndCommitParameterAThenVersionShouldBeCorrect() + { + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + var commitB = fixture.Repository.MakeACommit("B"); + var commitC = fixture.Repository.MakeACommit("C"); + fixture.MakeACommit("D"); + + var configuration = TrunkBasedConfigurationBuilder.New + .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitB.Sha] }) + .Build(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2", configuration, commitId: commitC.Sha); + } + + [Test] + public void GivenTrunkBasedWorkflowWithIgnoreConfigurationForCommitCAndCommitParameterCThenCommitBShouldBeUsed() + { + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + fixture.MakeACommit("B"); + var commitC = fixture.Repository.MakeACommit("C"); + + var configuration = TrunkBasedConfigurationBuilder.New + .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitC.Sha] }) + .Build(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2", configuration, commitId: commitC.Sha); + } + + [Test] + public void GivenTrunkBasedWorkflowWithIgnoreConfigurationForTaggedCommitThenTagShouldBeIgnored() + { + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + fixture.MakeACommit("B"); + var commitC = fixture.Repository.MakeACommit("C"); + fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("D"); + + var configuration = TrunkBasedConfigurationBuilder.New + .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitC.Sha] }) + .Build(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3", configuration); + } + + [Test] + public void GivenTrunkBasedWorkflowWithIgnoreConfigurationBeforeCommitWithTagThenTagShouldBeIgnored() + { + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + fixture.MakeACommit("B"); + var commitC = fixture.Repository.MakeACommit("C"); + fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("D"); + + var configuration = TrunkBasedConfigurationBuilder.New + .WithIgnoreConfiguration(new IgnoreConfiguration() { Before = commitC.Committer.When }) + .Build(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1", configuration); + } + + [TestCase(false, "1.0.1-0")] + [TestCase(true, "1.0.0")] + public void GivenTrunkBasedWorkflowWithIgnoreConfigurationOfCommitBThenTagShouldBeConsidered( + bool preventIncrementWhenCurrentCommitTagged, string semanticVersion) + { + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + fixture.ApplyTag("1.0.0"); + var commitB = fixture.Repository.MakeACommit("B"); + + var configuration = TrunkBasedConfigurationBuilder.New + .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitB.Sha] }) + .WithBranch("main", _ => _.WithIncrement(IncrementStrategy.Patch) + .WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged) + .WithDeploymentMode(GitVersion.VersionCalculation.DeploymentMode.ContinuousDelivery) + ).Build(); + + // ✅ succeeds as expected + fixture.AssertFullSemver(semanticVersion, configuration); + } + + [TestCase(false, "1.0.1-0")] + [TestCase(true, "1.0.0")] + public void GivenTrunkBasedWorkflowWithCommitParameterBThenTagShouldBeConsidered( + bool preventIncrementWhenCurrentCommitTagged, string semanticVersion) + { + using var fixture = new EmptyRepositoryFixture("main"); + + var commitA = fixture.Repository.MakeACommit("A"); + fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + var configuration = TrunkBasedConfigurationBuilder.New + .WithBranch("main", _ => _.WithIncrement(IncrementStrategy.Patch) + .WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged) + .WithDeploymentMode(GitVersion.VersionCalculation.DeploymentMode.ContinuousDelivery) + ).Build(); + + // ✅ succeeds as expected + fixture.AssertFullSemver(semanticVersion, configuration, commitId: commitA.Sha); + } + + [Test] + public void GivenGitHubFlowBasedWorkflowWithCommitParameterThenVersionShouldBeCorrect() + { + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + var commitB = fixture.Repository.MakeACommit("B"); + fixture.MakeACommit("C"); + fixture.MakeACommit("D"); + + var configuration = GitHubFlowConfigurationBuilder.New.Build(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-2", configuration, commitId: commitB.Sha); + } + + [Test] + public void GivenGitHubFlowWorkflowWithIgnoreConfigurationForCommitThenVersionShouldBeCorrect() + { + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + var commitB = fixture.Repository.MakeACommit("B"); + fixture.MakeACommit("C"); + fixture.MakeACommit("D"); + + var configuration = GitHubFlowConfigurationBuilder.New + .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitB.Sha] }) + .Build(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-3", configuration); + } + + [Test] + public void GivenGitHubFlowWorkflowWithIgnoreConfigurationForCommitBAndCommitParameterAThenVersionShouldBeCorrect() + { + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + var commitB = fixture.Repository.MakeACommit("B"); + var commitC = fixture.Repository.MakeACommit("C"); + fixture.MakeACommit("D"); + + var configuration = GitHubFlowConfigurationBuilder.New + .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitB.Sha] }) + .Build(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-2", configuration, commitId: commitC.Sha); + } + + [Test] + public void GivenGitHubFlowWorkflowWithIgnoreConfigurationForCommitCAndCommitParameterCThenCommitBShouldBeUsed() + { + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + fixture.MakeACommit("B"); + var commitC = fixture.Repository.MakeACommit("C"); + + var configuration = GitHubFlowConfigurationBuilder.New + .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitC.Sha] }) + .Build(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-2", configuration, commitId: commitC.Sha); + } + + [Test] + public void GivenGitHubFlowWorkflowWithIgnoreConfigurationForTaggedCommitThenTagShouldBeIgnored() + { + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + fixture.MakeACommit("B"); + var commitC = fixture.Repository.MakeACommit("C"); + fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("D"); + + var configuration = GitHubFlowConfigurationBuilder.New + .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitC.Sha] }) + .Build(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-3", configuration); + } + + [Test] + public void GivenGitHubFlowWorkflowWithIgnoreConfigurationBeforeCommitWithTagThenTagShouldBeIgnored() + { + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + fixture.MakeACommit("B"); + var commitC = fixture.Repository.MakeACommit("C"); + fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("D"); + + var configuration = GitHubFlowConfigurationBuilder.New + .WithIgnoreConfiguration(new IgnoreConfiguration() { Before = commitC.Committer.When }) + .Build(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + } + + [TestCase(false, "1.0.1-0")] + [TestCase(true, "1.0.0")] + public void GivenGitHubFlowWorkflowWithIgnoreConfigurationOfCommitBThenTagShouldBeConsidered( + bool preventIncrementWhenCurrentCommitTagged, string semanticVersion) + { + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + fixture.ApplyTag("1.0.0"); + var commitB = fixture.Repository.MakeACommit("B"); + + var configuration = GitHubFlowConfigurationBuilder.New + .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitB.Sha] }) + .WithBranch("main", _ => _.WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged)) + .Build(); + + // ✅ succeeds as expected + fixture.AssertFullSemver(semanticVersion, configuration); + } + + [TestCase(false, "1.0.1-0")] + [TestCase(true, "1.0.0")] + public void GivenGitHubFlowWorkflowWithCommitParameterBThenTagShouldBeConsidered( + bool preventIncrementWhenCurrentCommitTagged, string semanticVersion) + { + using var fixture = new EmptyRepositoryFixture("main"); + + var commitA = fixture.Repository.MakeACommit("A"); + fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + var configuration = GitHubFlowConfigurationBuilder.New + .WithBranch("main", _ => _.WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged)) + .Build(); + + // ✅ succeeds as expected + fixture.AssertFullSemver(semanticVersion, configuration, commitId: commitA.Sha); + } +} diff --git a/src/GitVersion.Core/Configuration/EffectiveConfiguration.cs b/src/GitVersion.Core/Configuration/EffectiveConfiguration.cs index d414e499fb..9505fb4383 100644 --- a/src/GitVersion.Core/Configuration/EffectiveConfiguration.cs +++ b/src/GitVersion.Core/Configuration/EffectiveConfiguration.cs @@ -60,6 +60,7 @@ public EffectiveConfiguration(IGitVersionConfiguration configuration, IBranchCon NoBumpMessage = configuration.NoBumpMessage; CommitMessageIncrementing = branchConfiguration.CommitMessageIncrementing.Value; VersionFilters = configuration.Ignore.ToFilters(); + Ignore = configuration.Ignore; TracksReleaseBranches = branchConfiguration.TracksReleaseBranches ?? false; IsReleaseBranch = branchConfiguration.IsReleaseBranch ?? false; IsMainBranch = branchConfiguration.IsMainBranch ?? false; @@ -123,6 +124,8 @@ public EffectiveConfiguration(IGitVersionConfiguration configuration, IBranchCon public IEnumerable VersionFilters { get; } + public IIgnoreConfiguration Ignore { get; } + public string? CommitDateFormat { get; } public bool UpdateBuildNumber { get; } diff --git a/src/GitVersion.Core/Configuration/IgnoreConfigurationExtensions.cs b/src/GitVersion.Core/Configuration/IgnoreConfigurationExtensions.cs new file mode 100644 index 0000000000..4308b39254 --- /dev/null +++ b/src/GitVersion.Core/Configuration/IgnoreConfigurationExtensions.cs @@ -0,0 +1,33 @@ +using GitVersion.Extensions; + +namespace GitVersion.Configuration; + +public static class IgnoreConfigurationExtensions +{ + public static IEnumerable Filter(this IIgnoreConfiguration ignore, IEnumerable source) + { + ignore.NotNull(); + source.NotNull(); + + if (!ignore.IsEmpty) + { + return source.Where(element => ShouldBeIgnored(element.Commit, ignore)); + } + return source; + } + + public static IEnumerable Filter(this IIgnoreConfiguration ignore, IEnumerable source) + { + ignore.NotNull(); + source.NotNull(); + + if (!ignore.IsEmpty) + { + return source.Where(element => ShouldBeIgnored(element, ignore)); + } + return source; + } + + private static bool ShouldBeIgnored(ICommit commit, IIgnoreConfiguration ignore) + => !(commit.When <= ignore.Before) && !ignore.Shas.Contains(commit.Sha); +} diff --git a/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs b/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs index 178309b953..c077ee994e 100644 --- a/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs +++ b/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs @@ -10,8 +10,10 @@ public interface IRepositoryStore ICommit? FindMergeBase(IBranch? branch, IBranch? otherBranch); ICommit? FindMergeBase(ICommit commit, ICommit mainlineTip); - ICommit? GetCurrentCommit(IBranch currentBranch, string? commitId); - IEnumerable GetCommitLog(ICommit? baseVersionSource, ICommit? currentCommit); + + ICommit? GetCurrentCommit(IBranch currentBranch, string? commitId, IIgnoreConfiguration ignore); + + IReadOnlyList GetCommitLog(ICommit? baseVersionSource, ICommit currentCommit, IIgnoreConfiguration ignore); IBranch GetTargetBranch(string? targetBranchName); IBranch? FindBranch(ReferenceName branchName); diff --git a/src/GitVersion.Core/Core/GitPreparer.cs b/src/GitVersion.Core/Core/GitPreparer.cs index fc511e7054..ec583dcbf3 100644 --- a/src/GitVersion.Core/Core/GitPreparer.cs +++ b/src/GitVersion.Core/Core/GitPreparer.cs @@ -278,6 +278,7 @@ private void ChooseLocalBranchToAttach(string? headSha, IReadOnlyCollection GetAllTaggedSemanticVersions( ILookup GetTaggedSemanticVersionsOfBranch( IBranch branch, string? tagPrefix, - SemanticVersionFormat format); + SemanticVersionFormat format, + IIgnoreConfiguration ignore); ILookup GetTaggedSemanticVersionsOfMergeTarget( IBranch branch, string? tagPrefix, - SemanticVersionFormat format); + SemanticVersionFormat format, + IIgnoreConfiguration ignore); ILookup GetTaggedSemanticVersionsOfMainBranches( IGitVersionConfiguration configuration, @@ -33,5 +35,6 @@ ILookup GetTaggedSemanticVersionsOfReleaseBranc SemanticVersionFormat format, params IBranch[] excludeBranches); - ILookup GetTaggedSemanticVersions(string? tagPrefix, SemanticVersionFormat format); + ILookup GetTaggedSemanticVersions( + string? tagPrefix, SemanticVersionFormat format, IIgnoreConfiguration ignore); } diff --git a/src/GitVersion.Core/Core/RepositoryStore.cs b/src/GitVersion.Core/Core/RepositoryStore.cs index 4ad673e6fa..a520de3ffe 100644 --- a/src/GitVersion.Core/Core/RepositoryStore.cs +++ b/src/GitVersion.Core/Core/RepositoryStore.cs @@ -27,8 +27,11 @@ public RepositoryStore(ILog log, IGitRepository repository) public ICommit? FindMergeBase(IBranch? branch, IBranch? otherBranch) => this.mergeBaseFinder.FindMergeBaseOf(branch, otherBranch); - public ICommit? GetCurrentCommit(IBranch currentBranch, string? commitId) + public ICommit? GetCurrentCommit(IBranch currentBranch, string? commitId, IIgnoreConfiguration ignore) { + currentBranch.NotNull(); + ignore.NotNull(); + ICommit? currentCommit = null; if (!commitId.IsNullOrWhiteSpace()) { @@ -45,11 +48,18 @@ public RepositoryStore(ILog log, IGitRepository repository) } } + IEnumerable commits = currentBranch.Commits; if (currentCommit != null) - return currentCommit; + { + commits = currentBranch.Commits.GetCommitsPriorTo(currentCommit.When); + } + else + { + this.log.Info("Using latest commit on specified branch"); + } - this.log.Info("Using latest commit on specified branch"); - return currentBranch.Tip; + commits = ignore.Filter(commits); + return commits.FirstOrDefault(); } public IBranch GetTargetBranch(string? targetBranchName) @@ -191,11 +201,21 @@ public IEnumerable FindCommitBranchesWasBranchedFrom(IBranch branc } } - public IEnumerable GetCommitLog(ICommit? baseVersionSource, ICommit? currentCommit) + public IReadOnlyList GetCommitLog(ICommit? baseVersionSource, ICommit currentCommit, IIgnoreConfiguration ignore) { - var filter = new CommitFilter { IncludeReachableFrom = currentCommit, ExcludeReachableFrom = baseVersionSource, SortBy = CommitSortStrategies.Topological | CommitSortStrategies.Time }; + currentCommit.NotNull(); + ignore.NotNull(); + + var filter = new CommitFilter + { + IncludeReachableFrom = currentCommit, + ExcludeReachableFrom = baseVersionSource, + SortBy = CommitSortStrategies.Topological | CommitSortStrategies.Time + }; + + var commits = this.repository.Commits.QueryBy(filter).ToArray(); - return this.repository.Commits.QueryBy(filter); + return ignore.Filter(commits).ToList(); } public bool IsCommitOnBranch(ICommit? baseVersionSource, IBranch branch, ICommit firstMatchingCommit) diff --git a/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs b/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs index 5af9503836..138c562edc 100644 --- a/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs +++ b/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs @@ -35,7 +35,8 @@ public ILookup GetAllTaggedSemanticVersions( var semanticVersionsOfBranch = GetTaggedSemanticVersionsOfBranch( branch: branch, tagPrefix: effectiveConfiguration.TagPrefix, - format: effectiveConfiguration.SemanticVersionFormat + format: effectiveConfiguration.SemanticVersionFormat, + ignore: configuration.Ignore ); foreach (var grouping in semanticVersionsOfBranch) { @@ -55,7 +56,8 @@ public ILookup GetAllTaggedSemanticVersions( var semanticVersionsOfMergeTarget = GetTaggedSemanticVersionsOfMergeTarget( branch: branch, tagPrefix: effectiveConfiguration.TagPrefix, - format: effectiveConfiguration.SemanticVersionFormat + format: effectiveConfiguration.SemanticVersionFormat, + ignore: configuration.Ignore ); foreach (var grouping in semanticVersionsOfMergeTarget) { @@ -120,7 +122,7 @@ public ILookup GetAllTaggedSemanticVersions( } public ILookup GetTaggedSemanticVersionsOfBranch( - IBranch branch, string? tagPrefix, SemanticVersionFormat format) + IBranch branch, string? tagPrefix, SemanticVersionFormat format, IIgnoreConfiguration ignore) { branch.NotNull(); tagPrefix ??= string.Empty; @@ -130,8 +132,9 @@ IEnumerable GetElements() using (this.log.IndentLog($"Getting tagged semantic versions on branch '{branch.Name.Canonical}'. " + $"TagPrefix: {tagPrefix} and Format: {format}")) { - var semanticVersions = GetTaggedSemanticVersions(tagPrefix, format); - foreach (var commit in branch.Commits) + var semanticVersions = GetTaggedSemanticVersions(tagPrefix, format, ignore); + + foreach (var commit in ignore.Filter(branch.Commits)) { foreach (var semanticVersion in semanticVersions[commit]) { @@ -160,7 +163,7 @@ IEnumerable GetElements() } public ILookup GetTaggedSemanticVersionsOfMergeTarget( - IBranch branch, string? tagPrefix, SemanticVersionFormat format) + IBranch branch, string? tagPrefix, SemanticVersionFormat format, IIgnoreConfiguration ignore) { branch.NotNull(); tagPrefix ??= string.Empty; @@ -170,9 +173,9 @@ public ILookup GetTaggedSemanticVersionsOfMerge using (this.log.IndentLog($"Getting tagged semantic versions by track merge target '{branch.Name.Canonical}'. " + $"TagPrefix: {tagPrefix} and Format: {format}")) { - var shaHashSet = new HashSet(branch.Commits.Select(element => element.Id.Sha)); + var shaHashSet = new HashSet(ignore.Filter(branch.Commits).Select(element => element.Id.Sha)); - foreach (var semanticVersion in GetTaggedSemanticVersions(tagPrefix, format).SelectMany(_ => _)) + foreach (var semanticVersion in GetTaggedSemanticVersions(tagPrefix, format, ignore).SelectMany(_ => _)) { foreach (var commit in semanticVersion.Tag.Commit.Parents.Where(element => shaHashSet.Contains(element.Id.Sha))) { @@ -214,7 +217,7 @@ IEnumerable GetElements() { foreach (var mainlinemBranch in branchRepository.GetMainBranches(configuration, excludeBranches)) { - foreach (var semanticVersion in GetTaggedSemanticVersionsOfBranch(mainlinemBranch, tagPrefix, format).SelectMany(_ => _)) + foreach (var semanticVersion in GetTaggedSemanticVersionsOfBranch(mainlinemBranch, tagPrefix, format, configuration.Ignore).SelectMany(_ => _)) { yield return semanticVersion; } @@ -239,7 +242,7 @@ IEnumerable GetElements() { foreach (var releaseBranch in branchRepository.GetReleaseBranches(configuration, excludeBranches)) { - foreach (var semanticVersion in GetTaggedSemanticVersionsOfBranch(releaseBranch, tagPrefix, format).SelectMany(_ => _)) + foreach (var semanticVersion in GetTaggedSemanticVersionsOfBranch(releaseBranch, tagPrefix, format, configuration.Ignore).SelectMany(_ => _)) { yield return semanticVersion; } @@ -250,7 +253,8 @@ IEnumerable GetElements() return GetElements().Distinct().ToLookup(element => element.Tag.Commit, element => element); } - public ILookup GetTaggedSemanticVersions(string? tagPrefix, SemanticVersionFormat format) + public ILookup GetTaggedSemanticVersions( + string? tagPrefix, SemanticVersionFormat format, IIgnoreConfiguration ignore) { tagPrefix ??= string.Empty; @@ -258,7 +262,7 @@ IEnumerable GetElements() { this.log.Info($"Getting tagged semantic versions. TagPrefix: {tagPrefix} and Format: {format}"); - foreach (var tag in this.gitRepository.Tags) + foreach (var tag in ignore.Filter(gitRepository.Tags)) { if (SemanticVersion.TryParse(tag.Name.Friendly, tagPrefix, out var semanticVersion, format)) { diff --git a/src/GitVersion.Core/GitVersionContext.cs b/src/GitVersion.Core/GitVersionContext.cs index 41e7cfe9a6..fd654d5dc1 100644 --- a/src/GitVersion.Core/GitVersionContext.cs +++ b/src/GitVersion.Core/GitVersionContext.cs @@ -20,6 +20,8 @@ public class GitVersionContext( public IBranch CurrentBranch { get; } = currentBranch.NotNull(); + public IEnumerable CurrentBranchCommits => CurrentBranch.Commits.GetCommitsPriorTo(CurrentCommit.When); + public ICommit CurrentCommit { get; } = currentCommit.NotNull(); public bool IsCurrentCommitTagged { get; } = isCurrentCommitTagged; diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 9a66723e78..7902498b8a 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -94,8 +94,8 @@ GitVersion.Common.IRepositoryStore.FindCommitBranchesWasBranchedFrom(GitVersion. GitVersion.Common.IRepositoryStore.FindMergeBase(GitVersion.IBranch? branch, GitVersion.IBranch? otherBranch) -> GitVersion.ICommit? GitVersion.Common.IRepositoryStore.FindMergeBase(GitVersion.ICommit! commit, GitVersion.ICommit! mainlineTip) -> GitVersion.ICommit? GitVersion.Common.IRepositoryStore.GetBranchesContainingCommit(GitVersion.ICommit! commit, System.Collections.Generic.IEnumerable? branches = null, bool onlyTrackedBranches = false) -> System.Collections.Generic.IEnumerable! -GitVersion.Common.IRepositoryStore.GetCommitLog(GitVersion.ICommit? baseVersionSource, GitVersion.ICommit? currentCommit) -> System.Collections.Generic.IEnumerable! -GitVersion.Common.IRepositoryStore.GetCurrentCommit(GitVersion.IBranch! currentBranch, string? commitId) -> GitVersion.ICommit? +GitVersion.Common.IRepositoryStore.GetCommitLog(GitVersion.ICommit? baseVersionSource, GitVersion.ICommit! currentCommit, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> System.Collections.Generic.IReadOnlyList! +GitVersion.Common.IRepositoryStore.GetCurrentCommit(GitVersion.IBranch! currentBranch, string? commitId, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> GitVersion.ICommit? GitVersion.Common.IRepositoryStore.GetNumberOfUncommittedChanges() -> int GitVersion.Common.IRepositoryStore.GetReleaseBranches(System.Collections.Generic.IEnumerable>! releaseBranchConfig) -> System.Collections.Generic.IEnumerable! GitVersion.Common.IRepositoryStore.GetSourceBranches(GitVersion.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, System.Collections.Generic.IEnumerable! excludedBranches) -> System.Collections.Generic.IEnumerable! @@ -115,6 +115,7 @@ GitVersion.Configuration.EffectiveConfiguration.AssemblyVersioningFormat.get -> GitVersion.Configuration.EffectiveConfiguration.AssemblyVersioningScheme.get -> GitVersion.Extensions.AssemblyVersioningScheme GitVersion.Configuration.EffectiveConfiguration.DeploymentMode.get -> GitVersion.VersionCalculation.DeploymentMode GitVersion.Configuration.EffectiveConfiguration.EffectiveConfiguration(GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.Configuration.IBranchConfiguration! branchConfiguration) -> void +GitVersion.Configuration.EffectiveConfiguration.Ignore.get -> GitVersion.Configuration.IIgnoreConfiguration! GitVersion.Configuration.EffectiveConfiguration.PreventIncrementOfMergedBranch.get -> bool GitVersion.Configuration.EffectiveConfiguration.PreventIncrementWhenBranchMerged.get -> bool GitVersion.Configuration.EffectiveConfiguration.PreventIncrementWhenCurrentCommitTagged.get -> bool @@ -192,6 +193,7 @@ GitVersion.Configuration.IGitVersionConfiguration.VersionInBranchPattern.get -> GitVersion.Configuration.IGitVersionConfiguration.VersionInBranchRegex.get -> System.Text.RegularExpressions.Regex! GitVersion.Configuration.IGitVersionConfiguration.VersionStrategy.get -> GitVersion.VersionCalculation.VersionStrategies GitVersion.Configuration.IGitVersionConfiguration.Workflow.get -> string? +GitVersion.Configuration.IgnoreConfigurationExtensions GitVersion.Configuration.IIgnoreConfiguration GitVersion.Configuration.IIgnoreConfiguration.Before.get -> System.DateTimeOffset? GitVersion.Configuration.IIgnoreConfiguration.IsEmpty.get -> bool @@ -241,6 +243,7 @@ GitVersion.GitVersionCommonModule.RegisterTypes(Microsoft.Extensions.DependencyI GitVersion.GitVersionContext GitVersion.GitVersionContext.Configuration.get -> GitVersion.Configuration.IGitVersionConfiguration! GitVersion.GitVersionContext.CurrentBranch.get -> GitVersion.IBranch! +GitVersion.GitVersionContext.CurrentBranchCommits.get -> System.Collections.Generic.IEnumerable! GitVersion.GitVersionContext.CurrentCommit.get -> GitVersion.ICommit! GitVersion.GitVersionContext.GitVersionContext(GitVersion.IBranch! currentBranch, GitVersion.ICommit! currentCommit, GitVersion.Configuration.IGitVersionConfiguration! configuration, bool isCurrentCommitTagged, int numberOfUncommittedChanges) -> void GitVersion.GitVersionContext.IsCurrentCommitTagged.get -> bool @@ -694,7 +697,7 @@ GitVersion.VersionCalculation.IIncrementStrategyFinder GitVersion.VersionCalculation.IIncrementStrategyFinder.DetermineIncrementedField(GitVersion.ICommit! currentCommit, GitVersion.VersionCalculation.BaseVersion! baseVersion, GitVersion.Configuration.EffectiveConfiguration! configuration, string? label) -> GitVersion.VersionField GitVersion.VersionCalculation.IIncrementStrategyFinder.GetIncrementForcedByCommit(GitVersion.ICommit! commit, GitVersion.Configuration.EffectiveConfiguration! configuration) -> GitVersion.VersionField GitVersion.VersionCalculation.IIncrementStrategyFinder.GetIncrementForCommits(string? majorVersionBumpMessage, string? minorVersionBumpMessage, string? patchVersionBumpMessage, string? noBumpMessage, GitVersion.ICommit![]! commits) -> GitVersion.VersionField? -GitVersion.VersionCalculation.IIncrementStrategyFinder.GetMergedCommits(GitVersion.ICommit! mergeCommit, int index) -> System.Collections.Generic.IEnumerable! +GitVersion.VersionCalculation.IIncrementStrategyFinder.GetMergedCommits(GitVersion.ICommit! mergeCommit, int index, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> System.Collections.Generic.IEnumerable! GitVersion.VersionCalculation.INextVersionCalculator GitVersion.VersionCalculation.INextVersionCalculator.FindVersion() -> GitVersion.SemanticVersion! GitVersion.VersionCalculation.IVariableProvider @@ -788,6 +791,8 @@ static GitVersion.Configuration.ConfigurationExtensions.GetReleaseBranchConfigur static GitVersion.Configuration.ConfigurationExtensions.IsReleaseBranch(this GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.IBranch! branch) -> bool static GitVersion.Configuration.ConfigurationExtensions.IsReleaseBranch(this GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.ReferenceName! branchName) -> bool static GitVersion.Configuration.ConfigurationExtensions.ToFilters(this GitVersion.Configuration.IIgnoreConfiguration! source) -> System.Collections.Generic.IEnumerable! +static GitVersion.Configuration.IgnoreConfigurationExtensions.Filter(this GitVersion.Configuration.IIgnoreConfiguration! ignore, System.Collections.Generic.IEnumerable! source) -> System.Collections.Generic.IEnumerable! +static GitVersion.Configuration.IgnoreConfigurationExtensions.Filter(this GitVersion.Configuration.IIgnoreConfiguration! ignore, System.Collections.Generic.IEnumerable! source) -> System.Collections.Generic.IEnumerable! static GitVersion.Extensions.AssemblyVersionsGeneratorExtensions.GetAssemblyFileVersion(this GitVersion.SemanticVersion! sv, GitVersion.Extensions.AssemblyFileVersioningScheme scheme) -> string? static GitVersion.Extensions.AssemblyVersionsGeneratorExtensions.GetAssemblyVersion(this GitVersion.SemanticVersion! sv, GitVersion.Extensions.AssemblyVersioningScheme scheme) -> string? static GitVersion.Extensions.CommonExtensions.NotNull(this T? value, string! name = "") -> T! diff --git a/src/GitVersion.Core/VersionCalculation/Abstractions/IIncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/Abstractions/IIncrementStrategyFinder.cs index fb8817767f..ff3b29a999 100644 --- a/src/GitVersion.Core/VersionCalculation/Abstractions/IIncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/Abstractions/IIncrementStrategyFinder.cs @@ -12,7 +12,7 @@ VersionField DetermineIncrementedField( ICommit[] commits ); - IEnumerable GetMergedCommits(ICommit mergeCommit, int index); + IEnumerable GetMergedCommits(ICommit mergeCommit, int index, IIgnoreConfiguration ignore); VersionField GetIncrementForcedByCommit(ICommit commit, EffectiveConfiguration configuration); } diff --git a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs index 93c04fa163..21b090c30a 100644 --- a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs @@ -87,7 +87,8 @@ public VersionField DetermineIncrementedField( semanticVersionFormat: configuration.SemanticVersionFormat, baseVersionSource: baseVersionSource, currentCommit: currentCommit, - label: label + label: label, + ignore: configuration.Ignore ); if (configuration.CommitMessageIncrementing == CommitMessageIncrementMode.MergeMessageOnly) @@ -109,16 +110,19 @@ private static Regex TryGetRegexOrDefault(string? messageRegex, Regex defaultReg ? defaultRegex : CompiledRegexCache.GetOrAdd(messageRegex, pattern => new(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase)); - private IReadOnlyCollection GetCommitHistory( - string? tagPrefix, SemanticVersionFormat semanticVersionFormat, ICommit? baseVersionSource, ICommit currentCommit, string? label) + private IReadOnlyCollection GetCommitHistory(string? tagPrefix, SemanticVersionFormat semanticVersionFormat, + ICommit? baseVersionSource, ICommit currentCommit, string? label, IIgnoreConfiguration ignore) { var targetShas = new Lazy>(() => - this.taggedSemanticVersionRepository.GetTaggedSemanticVersions(tagPrefix, semanticVersionFormat) - .SelectMany(_ => _).Where(_ => _.Value.IsMatchForBranchSpecificLabel(label)).Select(_ => _.Tag.TargetSha).ToHashSet() + taggedSemanticVersionRepository + .GetTaggedSemanticVersions(tagPrefix, semanticVersionFormat, ignore) + .SelectMany(_ => _) + .Where(_ => _.Value.IsMatchForBranchSpecificLabel(label)) + .Select(_ => _.Tag.TargetSha) + .ToHashSet() ); - var intermediateCommits = GetIntermediateCommits(baseVersionSource, currentCommit).ToArray(); - + var intermediateCommits = GetIntermediateCommits(baseVersionSource, currentCommit, ignore); var commitLog = intermediateCommits.ToDictionary(element => element.Id.Sha); foreach (var intermediateCommit in intermediateCommits.Reverse()) @@ -148,9 +152,9 @@ private IReadOnlyCollection GetCommitHistory( /// Get the sequence of commits in a repository between a (exclusive) /// and a particular (inclusive) /// - private IEnumerable GetIntermediateCommits(ICommit? baseCommit, ICommit? headCommit) + private IEnumerable GetIntermediateCommits(ICommit? baseCommit, ICommit headCommit, IIgnoreConfiguration ignore) { - var map = GetHeadCommitsMap(headCommit); + var map = GetHeadCommitsMap(headCommit, ignore); var commitAfterBaseIndex = 0; if (baseCommit != null) @@ -159,7 +163,7 @@ private IEnumerable GetIntermediateCommits(ICommit? baseCommit, ICommit commitAfterBaseIndex = baseIndex + 1; } - var headCommits = GetHeadCommits(headCommit); + var headCommits = GetHeadCommits(headCommit, ignore); return new ArraySegment(headCommits, commitAfterBaseIndex, headCommits.Length - commitAfterBaseIndex); } @@ -167,9 +171,9 @@ private IEnumerable GetIntermediateCommits(ICommit? baseCommit, ICommit /// Get a mapping of commit shas to their zero-based position in the sequence of commits from the beginning of a /// repository to a particular /// - private Dictionary GetHeadCommitsMap(ICommit? headCommit) => + private Dictionary GetHeadCommitsMap(ICommit? headCommit, IIgnoreConfiguration ignore) => this.headCommitsMapCache.GetOrAdd(headCommit?.Sha ?? "NULL", () => - GetHeadCommits(headCommit) + GetHeadCommits(headCommit, ignore) .Select((commit, index) => (commit.Sha, Index: index)) .ToDictionary(t => t.Sha, t => t.Index)); @@ -177,9 +181,9 @@ private Dictionary GetHeadCommitsMap(ICommit? headCommit) => /// Get the sequence of commits from the beginning of a repository to a particular /// (inclusive) /// - private ICommit[] GetHeadCommits(ICommit? headCommit) => + private ICommit[] GetHeadCommits(ICommit? headCommit, IIgnoreConfiguration ignore) => this.headCommitsCache.GetOrAdd(headCommit?.Sha ?? "NULL", () => - GetCommitsReacheableFromHead(headCommit).ToArray()); + GetCommitsReacheableFromHead(headCommit, ignore).ToArray()); private VersionField? GetIncrementFromCommit(ICommit commit, Regex majorRegex, Regex minorRegex, Regex patchRegex, Regex none) => this.commitIncrementCache.GetOrAdd(commit.Sha, () => @@ -194,7 +198,7 @@ private ICommit[] GetHeadCommits(ICommit? headCommit) => return null; } - private IEnumerable GetCommitsReacheableFromHead(ICommit? headCommit) + private IEnumerable GetCommitsReacheableFromHead(ICommit? headCommit, IIgnoreConfiguration ignore) { var filter = new CommitFilter { @@ -202,10 +206,11 @@ private IEnumerable GetCommitsReacheableFromHead(ICommit? headCommit) SortBy = CommitSortStrategies.Topological | CommitSortStrategies.Reverse }; - return repository.Commits.QueryBy(filter); + var commits = repository.Commits.QueryBy(filter); + return ignore.Filter(commits); } - public IEnumerable GetMergedCommits(ICommit mergeCommit, int index) + public IEnumerable GetMergedCommits(ICommit mergeCommit, int index, IIgnoreConfiguration ignore) { mergeCommit.NotNull(); @@ -221,7 +226,7 @@ public IEnumerable GetMergedCommits(ICommit mergeCommit, int index) ICommit findMergeBase = this.repository.FindMergeBase(baseCommit, mergedCommit) ?? throw new InvalidOperationException("Cannot find the base commit of merged branch."); - return GetIntermediateCommits(findMergeBase, mergedCommit); + return GetIntermediateCommits(findMergeBase, mergedCommit, ignore); } private static ICommit GetMergedHead(ICommit mergeCommit) diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTagBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTagBase.cs index 558554206c..d880036c63 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTagBase.cs @@ -19,7 +19,6 @@ public virtual IEnumerable GetIncrements(TrunkBasedIteration iter semanticVersion: context.SemanticVersion.NotNull() ); - context.Increment = VersionField.None; context.Label = commit.Configuration.GetBranchSpecificLabel(commit.BranchName, null); } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs index b7647771f8..96e75b57a5 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs @@ -26,9 +26,6 @@ public override IEnumerable GetIncrements(TrunkBasedIteration ite label: context.Label, forceIncrement: context.ForceIncrement ); - - context.Increment = VersionField.None; - context.Label = null; } } } diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeliveryVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeliveryVersionCalculator.cs index 8e90c0e432..8cd7bd2044 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeliveryVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeliveryVersionCalculator.cs @@ -3,7 +3,8 @@ namespace GitVersion.VersionCalculation; -internal sealed class ContinuousDeliveryVersionCalculator(ILog log, IRepositoryStore repositoryStore, Lazy versionContext) +internal sealed class ContinuousDeliveryVersionCalculator( + ILog log, IRepositoryStore repositoryStore, Lazy versionContext) : VersionCalculatorBase(log, repositoryStore, versionContext), IDeploymentModeCalculator { public SemanticVersion Calculate(SemanticVersion semanticVersion, ICommit? baseVersionSource) diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeploymentVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeploymentVersionCalculator.cs index 7ed5b72042..0808340627 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeploymentVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeploymentVersionCalculator.cs @@ -3,7 +3,8 @@ namespace GitVersion.VersionCalculation; -internal sealed class ContinuousDeploymentVersionCalculator(ILog log, IRepositoryStore repositoryStore, Lazy versionContext) +internal sealed class ContinuousDeploymentVersionCalculator( + ILog log, IRepositoryStore repositoryStore, Lazy versionContext) : VersionCalculatorBase(log, repositoryStore, versionContext), IDeploymentModeCalculator { public SemanticVersion Calculate(SemanticVersion semanticVersion, ICommit? baseVersionSource) diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ManualDeploymentVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ManualDeploymentVersionCalculator.cs index 842bc6ad74..41364db63d 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ManualDeploymentVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ManualDeploymentVersionCalculator.cs @@ -3,7 +3,8 @@ namespace GitVersion.VersionCalculation; -internal sealed class ManualDeploymentVersionCalculator(ILog log, IRepositoryStore repositoryStore, Lazy versionContext) +internal sealed class ManualDeploymentVersionCalculator( + ILog log, IRepositoryStore repositoryStore, Lazy versionContext) : VersionCalculatorBase(log, repositoryStore, versionContext), IDeploymentModeCalculator { public SemanticVersion Calculate(SemanticVersion semanticVersion, ICommit? baseVersionSource) diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs index b2f2a8130e..2f30762a9c 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs @@ -50,7 +50,8 @@ public virtual SemanticVersion FindVersion() NextVersion nextVersion = CalculateNextVersion(Context.CurrentBranch, Context.Configuration); - if (Context.IsCurrentCommitTagged && someBranchRelatedPropertiesMightBeNotKnown && nextVersion.Configuration.PreventIncrementWhenCurrentCommitTagged) + if (Context.IsCurrentCommitTagged && someBranchRelatedPropertiesMightBeNotKnown + && nextVersion.Configuration.PreventIncrementWhenCurrentCommitTagged) { var allTaggedSemanticVersions = taggedSemanticVersionRepository.GetAllTaggedSemanticVersions( Context.Configuration, nextVersion.Configuration, Context.CurrentBranch, null, Context.CurrentCommit.When @@ -72,7 +73,10 @@ public virtual SemanticVersion FindVersion() var ignore = Context.Configuration.Ignore; var alternativeSemanticVersion = taggedSemanticVersionRepository.GetTaggedSemanticVersionsOfBranch( - nextVersion.BranchConfiguration.Branch, Context.Configuration.TagPrefix, Context.Configuration.SemanticVersionFormat + branch: nextVersion.BranchConfiguration.Branch, + tagPrefix: Context.Configuration.TagPrefix, + format: Context.Configuration.SemanticVersionFormat, + ignore: Context.Configuration.Ignore ).Where(element => element.Key.When <= Context.CurrentCommit.When && !(element.Key.When <= ignore.Before) && !ignore.Shas.Contains(element.Key.Sha) ).SelectMany(element => element).Max()?.Value; diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/VersionCalculatorBase.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/VersionCalculatorBase.cs index b6115a2cd6..3c939332dc 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/VersionCalculatorBase.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/VersionCalculatorBase.cs @@ -4,7 +4,8 @@ namespace GitVersion.VersionCalculation; -internal abstract class VersionCalculatorBase(ILog log, IRepositoryStore repositoryStore, Lazy versionContext) +internal abstract class VersionCalculatorBase( + ILog log, IRepositoryStore repositoryStore, Lazy versionContext) { protected readonly ILog log = log.NotNull(); protected readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); @@ -14,16 +15,13 @@ internal abstract class VersionCalculatorBase(ILog log, IRepositoryStore reposit protected SemanticVersionBuildMetaData CreateVersionBuildMetaData(ICommit? baseVersionSource) { - var commitLogs = this.repositoryStore.GetCommitLog(baseVersionSource, Context.CurrentCommit); - - var ignore = Context.Configuration.Ignore; - if (!ignore.IsEmpty) - { - commitLogs = commitLogs - .Where(c => ignore.Before is null || (c.When > ignore.Before && !ignore.Shas.Contains(c.Sha))); - } - var commitsSinceTag = commitLogs.Count(); + var commitLogs = this.repositoryStore.GetCommitLog( + baseVersionSource: baseVersionSource, + currentCommit: Context.CurrentCommit, + ignore: Context.Configuration.Ignore + ); + int commitsSinceTag = commitLogs.Count; this.log.Info($"{commitsSinceTag} commits found between {baseVersionSource} and {Context.CurrentCommit}"); var shortSha = Context.CurrentCommit.Id.ToString(7); diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs index 8cc479a5b2..9ea12dded1 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs @@ -22,7 +22,7 @@ public override IEnumerable GetBaseVersions(EffectiveBranchConfigur if (!Context.Configuration.VersionStrategy.HasFlag(VersionStrategies.MergeMessage) || !configuration.Value.TrackMergeMessage) return []; - var commitsPriorToThan = Context.CurrentBranch.Commits.GetCommitsPriorTo(Context.CurrentCommit.When); + var commitsPriorToThan = configuration.Value.Ignore.Filter(Context.CurrentBranchCommits); var baseVersions = commitsPriorToThan .SelectMany(commit => { diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs index 5b6bbbcc02..e37c9ec087 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs @@ -71,13 +71,15 @@ public override IEnumerable GetBaseVersions(EffectiveBranchConfigur var iteration = CreateIteration(branchName: Context.CurrentBranch.Name, configuration: configuration.Value); + var commitsInReverseOrder = configuration.Value.Ignore.Filter(Context.CurrentBranchCommits); + var taggedSemanticVersions = taggedSemanticVersionRepository.GetAllTaggedSemanticVersions( Context.Configuration, configuration.Value, Context.CurrentBranch, null, Context.CurrentCommit.When ); var targetLabel = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); IterateOverCommitsRecursive( - commitsInReverseOrder: Context.CurrentBranch.Commits, + commitsInReverseOrder: commitsInReverseOrder, iteration: iteration, targetLabel: targetLabel, taggedSemanticVersions: taggedSemanticVersions @@ -140,7 +142,7 @@ private bool IterateOverCommitsRecursive( if (item.IsMergeCommit) { Lazy> mergedCommitsInReverseOrderLazy = new( - () => incrementStrategyFinder.GetMergedCommits(item, 1).Reverse().ToList() + () => incrementStrategyFinder.GetMergedCommits(item, 1, configuration.Ignore).Reverse().ToList() ); if (configuration.TrackMergeMessage @@ -162,7 +164,7 @@ private bool IterateOverCommitsRecursive( { if (configuration.IsMainBranch) throw new NotImplementedException(); mergedCommitsInReverseOrderLazy = new( - () => incrementStrategyFinder.GetMergedCommits(item, 0).Reverse().ToList() + () => incrementStrategyFinder.GetMergedCommits(item, 0, configuration.Ignore).Reverse().ToList() ); childConfiguration = configuration; } From ecb0b2e08aabc0330315ed0f2a8099839eaf2e6f Mon Sep 17 00:00:00 2001 From: Hardy Hobeck Date: Wed, 13 Mar 2024 16:26:00 +0100 Subject: [PATCH 023/544] Chagen documentation --- BREAKING_CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/BREAKING_CHANGES.md b/BREAKING_CHANGES.md index 27863697a4..9e538fa156 100644 --- a/BREAKING_CHANGES.md +++ b/BREAKING_CHANGES.md @@ -55,6 +55,7 @@ * TrunkBased * The initialization wizard has been removed. * On the `develop`, `release` and `hotfix` branch the introduced branch related property `prevent-increment.when-current-commit-tagged` has been set to `false` to get the incremented instead of the tagged semantic version. +* An exception that no commits found on the current branch will be thrown when the ignore commits before will be set to a future value Behavious now like an empty repository. ## v5.0.0 From bf0e34bc1e1340c9d8568075e095be4585defb3d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Mar 2024 17:21:55 +0000 Subject: [PATCH 024/544] (deps): Bump the microsoft group with 1 update Bumps the microsoft group with 1 update: [System.Text.Json](https://github.com/dotnet/runtime). Updates `System.Text.Json` from 8.0.2 to 8.0.3 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v8.0.2...v8.0.3) --- updated-dependencies: - dependency-name: System.Text.Json dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 0f7714bd0e..09913fa12e 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -22,7 +22,7 @@ - + From b8679f3e05367a38ce043c1500a131cc45ee5de4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Mar 2024 17:27:40 +0000 Subject: [PATCH 025/544] (deps): Bump coverlet.msbuild from 6.0.1 to 6.0.2 Bumps [coverlet.msbuild](https://github.com/coverlet-coverage/coverlet) from 6.0.1 to 6.0.2. - [Release notes](https://github.com/coverlet-coverage/coverlet/releases) - [Commits](https://github.com/coverlet-coverage/coverlet/compare/v6.0.1...v6.0.2) --- updated-dependencies: - dependency-name: coverlet.msbuild dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 0f7714bd0e..06970797ee 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -24,6 +24,6 @@ - + \ No newline at end of file From 74adfe4837e9955bcd36ceda2590ef6b97bef1f5 Mon Sep 17 00:00:00 2001 From: Hardy Hobeck <56404113+HHobeck@users.noreply.github.com> Date: Wed, 13 Mar 2024 18:38:17 +0100 Subject: [PATCH 026/544] Update BREAKING_CHANGES.md Co-authored-by: Artur --- BREAKING_CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BREAKING_CHANGES.md b/BREAKING_CHANGES.md index 9e538fa156..51c4d6a1e5 100644 --- a/BREAKING_CHANGES.md +++ b/BREAKING_CHANGES.md @@ -55,7 +55,7 @@ * TrunkBased * The initialization wizard has been removed. * On the `develop`, `release` and `hotfix` branch the introduced branch related property `prevent-increment.when-current-commit-tagged` has been set to `false` to get the incremented instead of the tagged semantic version. -* An exception that no commits found on the current branch will be thrown when the ignore commits before will be set to a future value Behavious now like an empty repository. +* When setting the "ignore commits before" parameter to a future value, an exception will occur if no commits are found on the current branch. This behavior mimics that of an empty repository. ## v5.0.0 From 4dd17c52c6b7145f9c2b74c4b527e400fd36a95a Mon Sep 17 00:00:00 2001 From: Artur Date: Wed, 13 Mar 2024 23:49:32 +0100 Subject: [PATCH 027/544] move to solution specific Directory.Packages.props dependabot does not support inheritable Directory.Packages.props --- Directory.Packages.props | 17 ----------------- new-cli/Directory.Packages.props | 14 +++++++++++++- new-cli/GitVersion.sln | 1 - src/Directory.Packages.props | 15 ++++++++++++++- src/GitVersion.sln | 1 - 5 files changed, 27 insertions(+), 21 deletions(-) delete mode 100644 Directory.Packages.props diff --git a/Directory.Packages.props b/Directory.Packages.props deleted file mode 100644 index 354f6e70cd..0000000000 --- a/Directory.Packages.props +++ /dev/null @@ -1,17 +0,0 @@ - - - true - - - - - - - - - - - - - - \ No newline at end of file diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index db9565dcb3..42109b92ef 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -1,10 +1,22 @@ - true + + + + + + + + + + + + + diff --git a/new-cli/GitVersion.sln b/new-cli/GitVersion.sln index 115f750a5f..a0e85b1fb5 100644 --- a/new-cli/GitVersion.sln +++ b/new-cli/GitVersion.sln @@ -50,7 +50,6 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "root", "root", "{D27CECCB-F012-433C-B026-84979C8C731E}" ProjectSection(SolutionItems) = preProject ..\global.json = ..\global.json - ..\Directory.Packages.props = ..\Directory.Packages.props EndProjectSection EndProject Global diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index a135529668..a17035ad3a 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -1,9 +1,22 @@ - true + + + + + + + + + + + + + + diff --git a/src/GitVersion.sln b/src/GitVersion.sln index cdcf7008da..af7ff58e14 100644 --- a/src/GitVersion.sln +++ b/src/GitVersion.sln @@ -58,7 +58,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "root", "root", "{7D3A83B4-9 ..\global.json = ..\global.json ..\schemas\6.0\GitVersion.json = ..\schemas\6.0\GitVersion.json ..\schemas\6.0\GitVersion.configuration.json = ..\schemas\6.0\GitVersion.configuration.json - ..\Directory.Packages.props = ..\Directory.Packages.props EndProjectSection EndProject Global From 939c4ed13a1c8a6810f77db824ff787965148bed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Mar 2024 23:02:21 +0000 Subject: [PATCH 028/544] (new-cli deps): Bump the microsoft group in /new-cli with 1 update Bumps the microsoft group in /new-cli with 1 update: [Microsoft.Extensions.DependencyInjection.Abstractions](https://github.com/dotnet/runtime). Updates `Microsoft.Extensions.DependencyInjection.Abstractions` from 8.0.0 to 8.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v8.0.0...v8.0.1) --- updated-dependencies: - dependency-name: Microsoft.Extensions.DependencyInjection.Abstractions dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 42109b92ef..301ca9fe04 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -11,7 +11,7 @@ - + From e42f8b69f112c403d22d2599d793dd877153bee1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Mar 2024 23:39:22 +0000 Subject: [PATCH 029/544] (deps): Bump the microsoft group with 1 update Bumps the microsoft group with 1 update: [Microsoft.Extensions.DependencyInjection.Abstractions](https://github.com/dotnet/runtime). Updates `Microsoft.Extensions.DependencyInjection.Abstractions` from 8.0.0 to 8.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v8.0.0...v8.0.1) --- updated-dependencies: - dependency-name: Microsoft.Extensions.DependencyInjection.Abstractions dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index a17035ad3a..fce7329594 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -11,7 +11,7 @@ - + From f07b4210349f5aab775a405f4c2c9010c86e112a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Mar 2024 14:27:29 +0000 Subject: [PATCH 030/544] (deps): Bump the microsoft group with 1 update Bumps the microsoft group with 1 update: [Microsoft.Extensions.DependencyInjection.Abstractions](https://github.com/dotnet/runtime). Updates `Microsoft.Extensions.DependencyInjection.Abstractions` from 8.0.0 to 8.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v8.0.0...v8.0.1) --- updated-dependencies: - dependency-name: Microsoft.Extensions.DependencyInjection.Abstractions dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index a17035ad3a..fce7329594 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -11,7 +11,7 @@ - + From 0d71c52ad26c7b5bfd6f2457d21d9648844768af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Mar 2024 14:41:10 +0000 Subject: [PATCH 031/544] (new-cli deps): Bump the microsoft group in /new-cli with 1 update Bumps the microsoft group in /new-cli with 1 update: [Microsoft.Extensions.DependencyInjection.Abstractions](https://github.com/dotnet/runtime). Updates `Microsoft.Extensions.DependencyInjection.Abstractions` from 8.0.0 to 8.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v8.0.0...v8.0.1) --- updated-dependencies: - dependency-name: Microsoft.Extensions.DependencyInjection.Abstractions dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 42109b92ef..301ca9fe04 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -11,7 +11,7 @@ - + From fe274547680193e13e1b7ab3324a85fe9442c885 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Fri, 15 Mar 2024 08:08:57 +0100 Subject: [PATCH 032/544] Enable ignored unit tests --- docs/input/docs/reference/configuration.md | 14 +- .../SupportedWorkflows/TrunkBased/v1.yml | 13 +- .../TrunkBasedConfigurationBuilder.cs | 20 +- .../Core/RepositoryStoreTests.cs | 1 - .../ReleaseBranchScenarios.cs | 7 +- ...anchedFromMainWhenCommitBTaggedAsStable.cs | 20 +- ...thOneCommitWhenCommitTaggedAsPreRelease.cs | 5 +- ...neCommitWhenCommitTaggedAsPreReleaseBar.cs | 21 +- ...neCommitWhenCommitTaggedAsPreReleaseFoo.cs | 5 +- ...chWithOneCommitWhenCommitTaggedAsStable.cs | 5 +- ...edToFeatureWhenCommitTaggedAsPreRelease.cs | 36 +- ...oFeatureWhenCommitTaggedAsPreReleaseBar.cs | 96 +- ...oFeatureWhenCommitTaggedAsPreReleaseFoo.cs | 38 +- ...anchedToFeatureWhenCommitTaggedAsStable.cs | 36 +- .../NextVersionCalculatorTests.cs | 844 ++++++------------ .../TrunkBased/Trunk/CommitOnTrunk.cs | 2 - .../Trunk/CommitOnTrunkBranchedBase.cs | 6 +- .../CommitOnTrunkWithPreReleaseTagBase.cs | 2 - .../LastCommitOnTrunkWithPreReleaseTag.cs | 3 - .../Trunk/MergeCommitOnTrunkBase.cs | 2 - .../GitVersionTaskExecutor.cs | 6 +- 21 files changed, 426 insertions(+), 756 deletions(-) diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index da84070111..2b08740c39 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -370,7 +370,7 @@ branches: - main pre-release-weight: 30000 pull-request: - mode: ManualDeployment + mode: ContinuousDelivery label: PullRequest increment: Inherit label-number-pattern: '[/-](?\d+)' @@ -379,17 +379,16 @@ branches: - main pre-release-weight: 30000 unknown: - mode: ManualDeployment - increment: Inherit + increment: Patch regex: (?.+) + prevent-increment: + when-current-commit-tagged: false source-branches: - main - - feature - - hotfix - - pull-request + pre-release-weight: 30000 ignore: sha: [] -mode: ManualDeployment +mode: ContinuousDelivery label: '{BranchName}' increment: Inherit prevent-increment: @@ -403,6 +402,7 @@ regex: '' tracks-release-branches: false is-release-branch: false is-main-branch: false + ``` The details of the available options are as follows: diff --git a/src/GitVersion.Configuration/SupportedWorkflows/TrunkBased/v1.yml b/src/GitVersion.Configuration/SupportedWorkflows/TrunkBased/v1.yml index bb225073de..023be21f85 100644 --- a/src/GitVersion.Configuration/SupportedWorkflows/TrunkBased/v1.yml +++ b/src/GitVersion.Configuration/SupportedWorkflows/TrunkBased/v1.yml @@ -45,7 +45,7 @@ branches: - main pre-release-weight: 30000 pull-request: - mode: ManualDeployment + mode: ContinuousDelivery label: PullRequest increment: Inherit label-number-pattern: '[/-](?\d+)' @@ -54,17 +54,16 @@ branches: - main pre-release-weight: 30000 unknown: - mode: ManualDeployment - increment: Inherit + increment: Patch regex: (?.+) + prevent-increment: + when-current-commit-tagged: false source-branches: - main - - feature - - hotfix - - pull-request + pre-release-weight: 30000 ignore: sha: [] -mode: ManualDeployment +mode: ContinuousDelivery label: '{BranchName}' increment: Inherit prevent-increment: diff --git a/src/GitVersion.Configuration/TrunkBasedConfigurationBuilder.cs b/src/GitVersion.Configuration/TrunkBasedConfigurationBuilder.cs index a522d694a7..133c19e407 100644 --- a/src/GitVersion.Configuration/TrunkBasedConfigurationBuilder.cs +++ b/src/GitVersion.Configuration/TrunkBasedConfigurationBuilder.cs @@ -26,7 +26,7 @@ private TrunkBasedConfigurationBuilder() VersionInBranchPattern = ConfigurationConstants.DefaultVersionInBranchPattern, TagPreReleaseWeight = ConfigurationConstants.DefaultTagPreReleaseWeight, UpdateBuildNumber = ConfigurationConstants.DefaultUpdateBuildNumber, - DeploymentMode = DeploymentMode.ManualDeployment, + DeploymentMode = DeploymentMode.ContinuousDelivery, RegularExpression = string.Empty, Label = ConfigurationConstants.BranchNamePlaceholder, Increment = IncrementStrategy.Inherit, @@ -80,7 +80,7 @@ private TrunkBasedConfigurationBuilder() WithBranch(HotfixBranch.Name).WithConfiguration(new BranchConfiguration() { Increment = IncrementStrategy.Patch, - RegularExpression = HotfixBranch.RegexPattern, + RegularExpression = "^hotfix(es)?[/-](?.+)", SourceBranches = [ this.MainBranch.Name @@ -96,7 +96,7 @@ private TrunkBasedConfigurationBuilder() { Increment = IncrementStrategy.Inherit, RegularExpression = PullRequestBranch.RegexPattern, - DeploymentMode = DeploymentMode.ManualDeployment, + DeploymentMode = DeploymentMode.ContinuousDelivery, SourceBranches = [ this.MainBranch.Name @@ -108,15 +108,17 @@ private TrunkBasedConfigurationBuilder() WithBranch(UnknownBranch.Name).WithConfiguration(new BranchConfiguration { + Increment = IncrementStrategy.Patch, RegularExpression = UnknownBranch.RegexPattern, - DeploymentMode = DeploymentMode.ManualDeployment, - Increment = IncrementStrategy.Inherit, SourceBranches = [ - this.MainBranch.Name, - this.FeatureBranch.Name, - this.PullRequestBranch.Name - ] + this.MainBranch.Name + ], + PreventIncrement = new PreventIncrementConfiguration() + { + WhenCurrentCommitTagged = false + }, + PreReleaseWeight = 30000 }); } } diff --git a/src/GitVersion.Core.Tests/Core/RepositoryStoreTests.cs b/src/GitVersion.Core.Tests/Core/RepositoryStoreTests.cs index 1597350f97..00ed164fc6 100644 --- a/src/GitVersion.Core.Tests/Core/RepositoryStoreTests.cs +++ b/src/GitVersion.Core.Tests/Core/RepositoryStoreTests.cs @@ -213,7 +213,6 @@ public void GetBranchesContainingCommitThrowsDirectlyOnNullCommit() } [Test] - [Ignore("Needs more investigations.")] public void FindCommitBranchWasBranchedFromShouldReturnNullIfTheRemoteIsTheOnlySource() { using var fixture = new RemoteRepositoryFixture(); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/ReleaseBranchScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/ReleaseBranchScenarios.cs index f8a9d103a2..4684491768 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/ReleaseBranchScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/ReleaseBranchScenarios.cs @@ -452,9 +452,12 @@ public void CommitBeetweenMergeReleaseToDevelopShouldNotResetCount() } [Test] - [Ignore("Needs investigation")] public void ReleaseBranchShouldUseBranchNameVersionDespiteBumpInPreviousCommit() { + var configuration = GitFlowConfigurationBuilder.New + .WithSemanticVersionFormat(SemanticVersionFormat.Loose) + .Build(); + using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeATaggedCommit("1.0"); fixture.Repository.MakeACommit("+semver:major"); @@ -462,7 +465,7 @@ public void ReleaseBranchShouldUseBranchNameVersionDespiteBumpInPreviousCommit() fixture.BranchTo("release/2.0"); - fixture.AssertFullSemver("2.0.0-beta.1+2"); + fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); } [Test] diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs index ffcae22f52..348fc74350 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs @@ -148,7 +148,6 @@ public string GetVersionWithNoLabelOnMain( return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-1+0")] @@ -232,11 +231,11 @@ public string GetVersionWithNoLabelOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Patch, "{BranchName}", ExpectedResult = "0.0.1-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithNoLabelOnMainAndTakeAlwaysIncrementedVersion( + public string GetVersionWithNoLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); @@ -358,7 +357,6 @@ public string GetVersionWithEmptyLabelOnMain( return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-1+0")] @@ -442,11 +440,11 @@ public string GetVersionWithEmptyLabelOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Patch, "{BranchName}", ExpectedResult = "0.0.1-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithEmptyLabelOnMainAndTakeAlwaysIncrementedVersion( + public string GetVersionWithEmptyLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); @@ -568,7 +566,6 @@ public string GetVersionWithLabelFooOnMain( return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-1+0")] @@ -652,11 +649,11 @@ public string GetVersionWithLabelFooOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Patch, "{BranchName}", ExpectedResult = "0.0.1-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithLabelFooOnMainAndTakeAlwaysIncrementedVersion( + public string GetVersionWithLabelFooAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); @@ -778,7 +775,6 @@ public string GetVersionWithLabelBarOnMain( return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-1+0")] @@ -862,11 +858,11 @@ public string GetVersionWithLabelBarOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Patch, "{BranchName}", ExpectedResult = "0.0.1-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithLabelBarOnMainAndTakeAlwaysIncrementedVersion( + public string GetVersionWithLabelBarAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs index ba140ea4e1..4040ad96dd 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs @@ -58,7 +58,6 @@ public string GetVersion(IncrementStrategy increment, string? label) return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-5+0")] [TestCase(IncrementStrategy.Patch, null, ExpectedResult = "0.0.0-5+0")] [TestCase(IncrementStrategy.Minor, null, ExpectedResult = "0.0.0-5+0")] @@ -78,10 +77,10 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar.1+1")] [TestCase(IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar.1+1")] [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] - public string GetVersionWithTakeAlwaysIncrementedVersion(IncrementStrategy increment, string? label) + public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs index 8793e188e8..156234a55a 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs @@ -58,11 +58,10 @@ public string GetVersion(IncrementStrategy increment, string? label) return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] - [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar")] - [TestCase(IncrementStrategy.Patch, null, ExpectedResult = "0.0.0-bar")] - [TestCase(IncrementStrategy.Minor, null, ExpectedResult = "0.0.0-bar")] - [TestCase(IncrementStrategy.Major, null, ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar+0")] + [TestCase(IncrementStrategy.Patch, null, ExpectedResult = "0.0.0-bar+0")] + [TestCase(IncrementStrategy.Minor, null, ExpectedResult = "0.0.0-bar+0")] + [TestCase(IncrementStrategy.Major, null, ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.None, "", ExpectedResult = "0.0.0-1+1")] [TestCase(IncrementStrategy.Patch, "", ExpectedResult = "0.0.1-1+1")] @@ -74,14 +73,14 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Minor, "foo", ExpectedResult = "0.1.0-foo.1+1")] [TestCase(IncrementStrategy.Major, "foo", ExpectedResult = "1.0.0-foo.1+1")] - [TestCase(IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar")] - [TestCase(IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.0-bar")] - [TestCase(IncrementStrategy.Minor, "bar", ExpectedResult = "0.0.0-bar")] - [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.0.0-bar")] - public string GetVersionWithTakeAlwaysIncrementedVersion(IncrementStrategy increment, string? label) + [TestCase(IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar+0")] + [TestCase(IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.0-bar+0")] + [TestCase(IncrementStrategy.Minor, "bar", ExpectedResult = "0.0.0-bar+0")] + [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.0.0-bar+0")] + public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs index 926d94fd3c..ea3a375d5f 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs @@ -58,7 +58,6 @@ public string GetVersion(IncrementStrategy increment, string? label) return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.5+0")] [TestCase(IncrementStrategy.Patch, null, ExpectedResult = "0.0.0-foo.5+0")] [TestCase(IncrementStrategy.Minor, null, ExpectedResult = "0.0.0-foo.5+0")] @@ -78,10 +77,10 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar.1+1")] [TestCase(IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar.1+1")] [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] - public string GetVersionWithTakeAlwaysIncrementedVersion(IncrementStrategy increment, string? label) + public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs index 40fe52b045..a75ab7755e 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs @@ -58,7 +58,6 @@ public string GetVersion(IncrementStrategy increment, string? label) return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+0")] [TestCase(IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-1+0")] [TestCase(IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-1+0")] @@ -78,10 +77,10 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar.1+0")] [TestCase(IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar.1+0")] [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+0")] - public string GetVersionWithTakeAlwaysIncrementedVersion(IncrementStrategy increment, string? label) + public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs index fe27b519c3..58b7310910 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs @@ -145,7 +145,6 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-5+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-1+0")] @@ -249,14 +248,14 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] - public string GetVersionWithNoLabelOnMainAndTakeAlwaysIncrementedVersionOnFeature( + public string GetVersionWithNoLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) - ).Build(); + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; } @@ -374,7 +373,6 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-5+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-1+0")] @@ -478,14 +476,14 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] - public string GetVersionWithEmptyLabelOnMainAndTakeAlwaysIncrementedVersionOnFeature( + public string GetVersionWithEmptyLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) - ).Build(); + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; } @@ -603,7 +601,6 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-foo.1+0")] @@ -707,14 +704,14 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] - public string GetVersionWithLabelFooOnMainAndTakeAlwaysIncrementedVersionOnFeature( + public string GetVersionWithLabelFooAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) - ).Build(); + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; } @@ -832,7 +829,6 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-bar.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-bar.1+0")] @@ -936,14 +932,14 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] - public string GetVersionWithLabelBarOnMainAndTakeAlwaysIncrementedVersionOnFeature( + public string GetVersionWithLabelBarAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) - ).Build(); + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs index 7d6dbda2a5..77034f847e 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs @@ -145,12 +145,11 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] - [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Major, null, ExpectedResult = "1.0.0-bar+0")] - [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, null, ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, null, ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, "", ExpectedResult = "0.0.0-2+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, "", ExpectedResult = "0.0.1-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, "", ExpectedResult = "0.1.0-1+0")] @@ -161,18 +160,18 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, "foo", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Major, "foo", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, "foo", ExpectedResult = "0.0.0-foo.1+0")] - [TestCase(IncrementStrategy.None, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.None, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+0")] - [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, "{BranchName}", ExpectedResult = "0.0.0-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, "{BranchName}", ExpectedResult = "0.0.1-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.1+0")] - [TestCase(IncrementStrategy.Patch, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Patch, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Major, null, ExpectedResult = "1.0.0-bar+0")] @@ -187,7 +186,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Patch, IncrementStrategy.Minor, "foo", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Major, "foo", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Inherit, "foo", ExpectedResult = "0.0.2-foo.1+0")] - [TestCase(IncrementStrategy.Patch, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Patch, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+0")] @@ -198,7 +197,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Patch, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.2-foo.1+0")] - [TestCase(IncrementStrategy.Minor, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Minor, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Major, null, ExpectedResult = "1.0.0-bar+0")] @@ -213,7 +212,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Minor, IncrementStrategy.Minor, "foo", ExpectedResult = "0.2.0-foo.1+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Major, "foo", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Inherit, "foo", ExpectedResult = "0.2.0-foo.1+0")] - [TestCase(IncrementStrategy.Minor, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Minor, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+0")] @@ -224,7 +223,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Minor, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.2.0-foo.1+0")] - [TestCase(IncrementStrategy.Major, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Major, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, null, ExpectedResult = "1.0.0-bar+0")] @@ -239,7 +238,7 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "foo", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "foo", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "foo", ExpectedResult = "2.0.0-foo.1+0")] - [TestCase(IncrementStrategy.Major, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Major, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+0")] @@ -249,14 +248,14 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] - public string GetVersionWithNoLabelOnMainAndTakeAlwaysIncrementedVersionOnFeature( + public string GetVersionWithNoLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) - ).Build(); + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; } @@ -374,7 +373,6 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-1+0")] @@ -390,11 +388,11 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, "foo", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Major, "foo", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, "foo", ExpectedResult = "0.0.0-foo.1+0")] - [TestCase(IncrementStrategy.None, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.None, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+0")] - [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, "{BranchName}", ExpectedResult = "0.0.0-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, "{BranchName}", ExpectedResult = "0.0.1-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] @@ -416,7 +414,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Patch, IncrementStrategy.Minor, "foo", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Major, "foo", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Inherit, "foo", ExpectedResult = "0.0.2-foo.1+0")] - [TestCase(IncrementStrategy.Patch, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Patch, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+0")] @@ -442,7 +440,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Minor, IncrementStrategy.Minor, "foo", ExpectedResult = "0.2.0-foo.1+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Major, "foo", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Inherit, "foo", ExpectedResult = "0.2.0-foo.1+0")] - [TestCase(IncrementStrategy.Minor, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Minor, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+0")] @@ -468,7 +466,7 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "foo", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "foo", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "foo", ExpectedResult = "2.0.0-foo.1+0")] - [TestCase(IncrementStrategy.Major, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Major, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+0")] @@ -478,14 +476,14 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] - public string GetVersionWithEmptyLabelOnMainAndTakeAlwaysIncrementedVersionOnFeature( + public string GetVersionWithEmptyLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) - ).Build(); + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; } @@ -603,7 +601,6 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-foo.1+0")] @@ -619,11 +616,11 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, "foo", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Major, "foo", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, "foo", ExpectedResult = "0.0.0-foo.2+0")] - [TestCase(IncrementStrategy.None, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.None, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+0")] - [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, "{BranchName}", ExpectedResult = "0.0.0-foo.2+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, "{BranchName}", ExpectedResult = "0.0.1-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] @@ -645,7 +642,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Patch, IncrementStrategy.Minor, "foo", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Major, "foo", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Inherit, "foo", ExpectedResult = "0.0.2-foo.1+0")] - [TestCase(IncrementStrategy.Patch, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Patch, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+0")] @@ -671,7 +668,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Minor, IncrementStrategy.Minor, "foo", ExpectedResult = "0.2.0-foo.1+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Major, "foo", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Inherit, "foo", ExpectedResult = "0.2.0-foo.1+0")] - [TestCase(IncrementStrategy.Minor, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Minor, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+0")] @@ -697,7 +694,7 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "foo", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "foo", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "foo", ExpectedResult = "2.0.0-foo.1+0")] - [TestCase(IncrementStrategy.Major, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Major, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+0")] @@ -707,14 +704,14 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] - public string GetVersionWithLabelFooOnMainAndTakeAlwaysIncrementedVersionOnFeature( + public string GetVersionWithLabelFooAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) - ).Build(); + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; } @@ -832,12 +829,11 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] - [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Major, null, ExpectedResult = "1.0.0-bar+0")] - [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, null, ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, null, ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, "", ExpectedResult = "0.0.0-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, "", ExpectedResult = "0.0.1-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, "", ExpectedResult = "0.1.0-1+0")] @@ -848,18 +844,18 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, "foo", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Major, "foo", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, "foo", ExpectedResult = "0.0.0-foo.1+0")] - [TestCase(IncrementStrategy.None, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.None, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+0")] - [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, "{BranchName}", ExpectedResult = "0.0.0-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, "{BranchName}", ExpectedResult = "0.0.1-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.1+0")] - [TestCase(IncrementStrategy.Patch, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Patch, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Major, null, ExpectedResult = "1.0.0-bar+0")] @@ -874,7 +870,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Patch, IncrementStrategy.Minor, "foo", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Major, "foo", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Inherit, "foo", ExpectedResult = "0.0.2-foo.1+0")] - [TestCase(IncrementStrategy.Patch, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Patch, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+0")] @@ -885,7 +881,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Patch, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Patch, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.2-foo.1+0")] - [TestCase(IncrementStrategy.Minor, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Minor, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Major, null, ExpectedResult = "1.0.0-bar+0")] @@ -900,7 +896,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Minor, IncrementStrategy.Minor, "foo", ExpectedResult = "0.2.0-foo.1+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Major, "foo", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Inherit, "foo", ExpectedResult = "0.2.0-foo.1+0")] - [TestCase(IncrementStrategy.Minor, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Minor, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+0")] @@ -911,7 +907,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Minor, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Minor, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.2.0-foo.1+0")] - [TestCase(IncrementStrategy.Major, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Major, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, null, ExpectedResult = "1.0.0-bar+0")] @@ -926,7 +922,7 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "foo", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "foo", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "foo", ExpectedResult = "2.0.0-foo.1+0")] - [TestCase(IncrementStrategy.Major, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar")] + [TestCase(IncrementStrategy.Major, IncrementStrategy.None, "bar", ExpectedResult = "0.0.0-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Patch, "bar", ExpectedResult = "0.0.1-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "bar", ExpectedResult = "0.1.0-bar+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+0")] @@ -936,14 +932,14 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] - public string GetVersionWithLabelBarOnMainAndTakeAlwaysIncrementedVersionOnFeature( + public string GetVersionWithLabelBarAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) - ).Build(); + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs index 5eff04e7e5..9d7121241d 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs @@ -145,7 +145,6 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.5+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-foo.1+0")] @@ -249,14 +248,14 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithNoLabelOnMainAndTakeAlwaysIncrementedVersionOnFeature( + public string GetVersionWithNoLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) - ).Build(); + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; } @@ -374,7 +373,6 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-1+0")] @@ -478,14 +476,14 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithEmptyLabelOnMainAndTakeAlwaysIncrementedVersionOnFeature( - IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) + public string GetVersionWithEmptyLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) - ).Build(); + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; } @@ -603,7 +601,6 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.5+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-foo.1+0")] @@ -707,14 +704,14 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithLabelFooOnMainAndTakeAlwaysIncrementedVersionOnFeature( + public string GetVersionWithLabelFooAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) - ).Build(); + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; } @@ -832,7 +829,6 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-bar.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-bar.1+0")] @@ -936,14 +932,14 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithLabelBarOnMainAndTakeAlwaysIncrementedVersionOnFeature( + public string GetVersionWithLabelBarAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) - ).Build(); + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs index 5de07cfe51..41486e0754 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs @@ -145,7 +145,6 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-1+0")] @@ -249,14 +248,14 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithNoLabelOnMainAndTakeAlwaysIncrementedVersionOnFeature( + public string GetVersionWithNoLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) - ).Build(); + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; } @@ -374,7 +373,6 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-1+0")] @@ -478,14 +476,14 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithEmptyLabelOnMainAndTakeAlwaysIncrementedVersionOnFeature( + public string GetVersionWithEmptyLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) - ).Build(); + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; } @@ -603,7 +601,6 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-foo.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-foo.1+0")] @@ -707,14 +704,14 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithLabelFooOnMainAndTakeAlwaysIncrementedVersionOnFeature( + public string GetVersionWithLabelFooAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) - ).Build(); + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; } @@ -832,7 +829,6 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In return fixture!.GetVersion(trunkBased).FullSemVer; } - [Ignore("Enable if WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) feature has been implemented!")] [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, null, ExpectedResult = "0.0.1-bar.1+0")] [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, null, ExpectedResult = "0.1.0-bar.1+0")] @@ -936,14 +932,14 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithLabelBarOnMainAndTakeAlwaysIncrementedVersionOnFeature( + public string GetVersionWithLabelBarAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder + .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) - //.WithTakeIncrementedVersion(TakeIncrementedVersion.TakeAlwaysIncrementedVersion) - ).Build(); + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; } diff --git a/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs index e2362a17ba..5b9cbfe2e6 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs @@ -1,570 +1,274 @@ -//using GitVersion.Common; -//using GitVersion.Configuration; -//using GitVersion.Core.Tests.Helpers; -//using GitVersion.Core.Tests.IntegrationTests; -//using GitVersion.Logging; -//using GitVersion.VersionCalculation; -//using LibGit2Sharp; -//using Microsoft.Extensions.DependencyInjection; - -//namespace GitVersion.Core.Tests.VersionCalculation; - -//public class NextVersionCalculatorTests : TestBase -//{ -// [Test] -// public void ShouldIncrementVersionBasedOnConfig() -// { -// var contextBuilder = new GitVersionContextBuilder(); - -// contextBuilder.Build(); - -// contextBuilder.ServicesProvider.ShouldNotBeNull(); -// var nextVersionCalculator = contextBuilder.ServicesProvider.GetRequiredService(); -// nextVersionCalculator.ShouldNotBeNull(); - -// var nextVersion = nextVersionCalculator.FindVersion(); - -// nextVersion.IncrementedVersion.ToString().ShouldBe("0.0.1"); -// } - -// [Test] -// public void DoesNotIncrementWhenBaseVersionSaysNotTo() -// { -// var contextBuilder = new GitVersionContextBuilder(); - -// var overrideConfiguration = new Dictionary() -// { -// { "next-version", "1.0.0" } -// }; -// contextBuilder.WithOverrideConfiguration(overrideConfiguration).Build(); - -// contextBuilder.ServicesProvider.ShouldNotBeNull(); -// var nextVersionCalculator = contextBuilder.ServicesProvider.GetRequiredService(); - -// nextVersionCalculator.ShouldNotBeNull(); - -// var nextVersion = nextVersionCalculator.FindVersion(); - -// nextVersion.IncrementedVersion.ToString().ShouldBe("1.0.0"); -// } - -// [Test] -// public void AppliesBranchPreReleaseTag() -// { -// var contextBuilder = new GitVersionContextBuilder(); - -// contextBuilder.WithDevelopBranch().Build(); - -// contextBuilder.ServicesProvider.ShouldNotBeNull(); -// var nextVersionCalculator = contextBuilder.ServicesProvider.GetRequiredService(); -// nextVersionCalculator.ShouldNotBeNull(); - -// var nextVersion = nextVersionCalculator.FindVersion(); - -// nextVersion.IncrementedVersion.ToString("f").ShouldBe("0.1.0-alpha.1+0"); -// } - -// [Test] -// public void PreReleaseLabelCanUseBranchName() -// { -// var configuration = GitFlowConfigurationBuilder.New -// .WithNextVersion("1.0.0") -// .WithBranch("custom", builder => builder -// .WithRegularExpression("custom/") -// .WithLabel(ConfigurationConstants.BranchNamePlaceholder) -// .WithSourceBranches() -// ) -// .Build(); - -// using var fixture = new EmptyRepositoryFixture(); -// fixture.MakeACommit(); -// fixture.BranchTo("develop"); -// fixture.MakeACommit(); -// fixture.BranchTo("custom/foo"); -// fixture.MakeACommit(); - -// fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); -// } - -// [Test] -// public void PreReleaseVersionMainline() -// { -// var configuration = GitFlowConfigurationBuilder.New -// .WithNextVersion("1.0.0") -// .WithBranch("unknown", builder => builder.WithDeploymentMode(DeploymentMode.Mainline)) -// .WithBranch("main", builder => builder.WithDeploymentMode(DeploymentMode.Mainline)) -// .Build(); - -// using var fixture = new EmptyRepositoryFixture(); -// fixture.MakeACommit(); -// fixture.BranchTo("foo"); -// fixture.MakeACommit(); - -// fixture.AssertFullSemver("1.0.0-foo.1", configuration); -// } - -// [Test] -// public void MergeIntoMainline() -// { -// var configuration = GitFlowConfigurationBuilder.New -// .WithNextVersion("1.0.0") -// .WithBranch("main", builder => builder.WithDeploymentMode(DeploymentMode.Mainline)) -// .Build(); - -// using var fixture = new EmptyRepositoryFixture(); -// fixture.MakeACommit(); -// fixture.BranchTo("foo"); -// fixture.MakeACommit(); -// fixture.Checkout(MainBranch); -// fixture.MergeNoFF("foo"); - -// fixture.AssertFullSemver("1.0.0", configuration); -// } - -// [Test] -// public void MergeFeatureIntoMainline() -// { -// var configuration = GitFlowConfigurationBuilder.New -// .WithBranch("main", builder => builder.WithDeploymentMode(DeploymentMode.Mainline)) -// .WithBranch("feature", builder => builder.WithDeploymentMode(DeploymentMode.Mainline)) -// .Build(); - -// using var fixture = new EmptyRepositoryFixture(); -// fixture.MakeACommit(); -// fixture.ApplyTag("1.0.0"); -// fixture.AssertFullSemver("1.0.0", configuration); - -// fixture.BranchTo("feature/foo"); -// fixture.MakeACommit(); -// fixture.AssertFullSemver("1.0.1-foo.1", configuration); -// fixture.ApplyTag("1.0.1-foo.1"); - -// fixture.Checkout(MainBranch); -// fixture.MergeNoFF("feature/foo"); -// fixture.AssertFullSemver("1.0.1", configuration); -// } - -// [Test] -// public void MergeFeatureIntoMainlineWithMinorIncrement() -// { -// var configuration = GitFlowConfigurationBuilder.New -// .WithBranch("main", builder => builder.WithDeploymentMode(DeploymentMode.Mainline)) -// .WithBranch("feature", builder => builder -// .WithDeploymentMode(DeploymentMode.Mainline) -// .WithIncrement(IncrementStrategy.Minor) -// ) -// .Build(); - -// using var fixture = new EmptyRepositoryFixture(); -// fixture.MakeACommit(); -// fixture.ApplyTag("1.0.0"); -// fixture.AssertFullSemver("1.0.0", configuration); - -// fixture.BranchTo("feature/foo"); -// fixture.MakeACommit(); -// fixture.AssertFullSemver("1.1.0-foo.1", configuration); -// fixture.ApplyTag("1.1.0-foo.1"); - -// fixture.Checkout(MainBranch); -// fixture.MergeNoFF("feature/foo"); -// fixture.AssertFullSemver("1.1.0", configuration); -// } - -// [Test] -// public void MergeFeatureIntoMainlineWithMinorIncrementAndThenMergeHotfix() -// { -// var configuration = GitFlowConfigurationBuilder.New -// .WithDeploymentMode(DeploymentMode.Mainline) -// .WithBranch("feature", builder => builder -// .WithIncrement(IncrementStrategy.Minor) -// .WithDeploymentMode(DeploymentMode.Mainline)) -// .WithBranch("hotfix", builder => builder.WithDeploymentMode(DeploymentMode.Mainline)) -// .Build(); - -// using var fixture = new EmptyRepositoryFixture(); -// fixture.MakeACommit(); -// fixture.ApplyTag("1.0.0"); -// fixture.AssertFullSemver("1.0.0", configuration); - -// fixture.BranchTo("feature/foo"); -// fixture.MakeACommit(); -// fixture.AssertFullSemver("1.1.0-foo.1", configuration); -// fixture.ApplyTag("1.1.0-foo.1"); - -// fixture.Checkout(MainBranch); -// fixture.MergeNoFF("feature/foo"); -// fixture.AssertFullSemver("1.1.0", configuration); -// fixture.ApplyTag("1.1.0"); - -// fixture.BranchTo("hotfix/bar"); -// fixture.MakeACommit(); -// fixture.AssertFullSemver("1.1.1-beta.1", configuration); -// fixture.ApplyTag("1.1.1-beta.1"); - -// fixture.Checkout(MainBranch); -// fixture.MergeNoFF("hotfix/bar"); -// fixture.AssertFullSemver("1.1.1", configuration); -// } - -// [Test] -// public void PreReleaseLabelCanUseBranchNameVariable() -// { -// var configuration = GitFlowConfigurationBuilder.New -// .WithNextVersion("1.0.0") -// .WithBranch("custom", builder => builder -// .WithRegularExpression("custom/") -// .WithLabel($"alpha.{ConfigurationConstants.BranchNamePlaceholder}") -// .WithSourceBranches() -// ) -// .Build(); - -// using var fixture = new EmptyRepositoryFixture(); -// fixture.MakeACommit(); -// fixture.BranchTo("develop"); -// fixture.MakeACommit(); -// fixture.BranchTo("custom/foo"); -// fixture.MakeACommit(); - -// fixture.AssertFullSemver("1.0.0-alpha.foo.1+3", configuration); -// } - -// [Test] -// public void PreReleaseNumberShouldBeScopeToPreReleaseLabelInContinuousDelivery() -// { -// var configuration = GitFlowConfigurationBuilder.New -// .WithBranch("main", builder => builder.WithLabel("beta")) -// .WithBranch("feature", builder => builder -// .WithDeploymentMode(DeploymentMode.ContinuousDelivery) -// ) -// .Build(); - -// using var fixture = new EmptyRepositoryFixture(); -// fixture.MakeACommit(); - -// fixture.BranchTo("feature/test"); -// fixture.MakeATaggedCommit("0.1.0-test.1"); -// fixture.MakeACommit(); - -// fixture.AssertFullSemver("0.1.0-test.2+1", configuration); - -// fixture.Checkout("main"); -// fixture.Repository.Merge("feature/test", Generate.SignatureNow()); - -// fixture.AssertFullSemver("0.1.0-beta.1+3", configuration); -// } - -// [Test] -// public void GetNextVersionOnNonMainlineBranchWithoutCommitsShouldWorkNormally() -// { -// var configuration = GitFlowConfigurationBuilder.New -// .WithNextVersion("1.0.0") -// .WithBranch("feature", builder => builder.WithDeploymentMode(DeploymentMode.Mainline)) -// .Build(); - -// using var fixture = new EmptyRepositoryFixture(); -// fixture.MakeACommit("initial commit"); -// fixture.BranchTo("feature/f1"); -// fixture.AssertFullSemver("1.0.0-f1.0", configuration); -// } - -// [Test] -// public void ChoosesHighestVersionReturnedFromStrategies() -// { -// // Arrange -// var branchMock = GitToolsTestingExtensions.CreateMockBranch("main", GitToolsTestingExtensions.CreateMockCommit()); -// var configuration = GitFlowConfigurationBuilder.New.Build(); -// var context = new GitVersionContext(branchMock, null, configuration, null, 0); -// var repositoryStoreMock = Substitute.For(); -// var effectiveConfiguration = context.Configuration.GetEffectiveConfiguration(branchMock); -// var effectiveBranchConfiguration = new EffectiveBranchConfiguration(branchMock, effectiveConfiguration); -// var effectiveBranchConfigurationFinderMock = Substitute.For(); -// effectiveBranchConfigurationFinderMock.GetConfigurations(branchMock, configuration).Returns(new[] { effectiveBranchConfiguration }); -// var incrementStrategyFinderMock = Substitute.For(); -// repositoryStoreMock.GetSourceBranches(branchMock, configuration, Arg.Any>()).Returns(Enumerable.Empty()); -// var dateTimeOffset = DateTimeOffset.Now; -// var versionStrategies = new IVersionStrategy[] { new V1Strategy(DateTimeOffset.Now), new V2Strategy(dateTimeOffset) }; -// var mainlineVersionCalculatorMock = Substitute.For(); -// mainlineVersionCalculatorMock.CreateVersionBuildMetaData(Arg.Any()).Returns(SemanticVersionBuildMetaData.Empty); -// var continuousDeploymentVersionCalculatorMock = Substitute.For(); - -// var unitUnderTest = new NextVersionCalculator( -// Substitute.For(), -// mainlineVersionCalculator: mainlineVersionCalculatorMock, -// continuousDeploymentVersionCalculator: continuousDeploymentVersionCalculatorMock, -// repositoryStoreMock, new(context), -// versionStrategies, effectiveBranchConfigurationFinderMock, -// incrementStrategyFinderMock -// ); - -// // Act -// var nextVersion = unitUnderTest.FindVersion(); - -// // Assert -// nextVersion.BaseVersion.SemanticVersion.ToString().ShouldBe("2.0.0"); -// nextVersion.BaseVersion.ShouldIncrement.ShouldBe(true); -// nextVersion.BaseVersion.BaseVersionSource.ShouldNotBeNull(); -// nextVersion.BaseVersion.BaseVersionSource.When.ShouldBe(dateTimeOffset); -// } - -// [Test] -// public void UsesWhenFromNextBestMatchIfHighestDoesntHaveWhen() -// { -// // Arrange -// var branchMock = GitToolsTestingExtensions.CreateMockBranch("main", GitToolsTestingExtensions.CreateMockCommit()); -// var configuration = GitFlowConfigurationBuilder.New.Build(); -// var context = new GitVersionContext(branchMock, null, configuration, null, 0); -// var repositoryStoreMock = Substitute.For(); -// var effectiveConfiguration = context.Configuration.GetEffectiveConfiguration(branchMock); -// var effectiveBranchConfiguration = new EffectiveBranchConfiguration(branchMock, effectiveConfiguration); -// var effectiveBranchConfigurationFinderMock = Substitute.For(); -// effectiveBranchConfigurationFinderMock.GetConfigurations(branchMock, configuration).Returns(new[] { effectiveBranchConfiguration }); -// var incrementStrategyFinderMock = Substitute.For(); -// repositoryStoreMock.GetSourceBranches(branchMock, configuration, Arg.Any>()).Returns(Enumerable.Empty()); -// var when = DateTimeOffset.Now; -// var versionStrategies = new IVersionStrategy[] { new V1Strategy(when), new V2Strategy(null) }; -// var mainlineVersionCalculatorMock = Substitute.For(); -// mainlineVersionCalculatorMock.CreateVersionBuildMetaData(Arg.Any()).Returns(SemanticVersionBuildMetaData.Empty); -// var continuousDeploymentVersionCalculatorMock = Substitute.For(); - -// var unitUnderTest = new NextVersionCalculator( -// Substitute.For(), -// mainlineVersionCalculator: mainlineVersionCalculatorMock, -// continuousDeploymentVersionCalculator: continuousDeploymentVersionCalculatorMock, -// repositoryStoreMock, new(context), -// versionStrategies, effectiveBranchConfigurationFinderMock, -// incrementStrategyFinderMock -// ); - -// // Act -// var nextVersion = unitUnderTest.FindVersion(); - -// // Assert -// nextVersion.BaseVersion.SemanticVersion.ToString().ShouldBe("2.0.0"); -// nextVersion.BaseVersion.ShouldIncrement.ShouldBe(true); -// nextVersion.BaseVersion.BaseVersionSource.ShouldNotBeNull(); -// nextVersion.BaseVersion.BaseVersionSource.When.ShouldBe(when); -// } - -// [Test] -// public void UsesWhenFromNextBestMatchIfHighestDoesntHaveWhenReversedOrder() -// { -// // Arrange -// var branchMock = GitToolsTestingExtensions.CreateMockBranch("main", GitToolsTestingExtensions.CreateMockCommit()); -// var configuration = GitFlowConfigurationBuilder.New.Build(); -// var context = new GitVersionContext(branchMock, null, configuration, null, 0); -// var repositoryStoreMock = Substitute.For(); -// var effectiveConfiguration = context.Configuration.GetEffectiveConfiguration(branchMock); -// var effectiveBranchConfiguration = new EffectiveBranchConfiguration(branchMock, effectiveConfiguration); -// var effectiveBranchConfigurationFinderMock = Substitute.For(); -// effectiveBranchConfigurationFinderMock.GetConfigurations(branchMock, configuration).Returns(new[] { effectiveBranchConfiguration }); -// var incrementStrategyFinderMock = Substitute.For(); -// repositoryStoreMock.GetSourceBranches(branchMock, configuration, Arg.Any>()).Returns(Enumerable.Empty()); -// var when = DateTimeOffset.Now; -// var versionStrategies = new IVersionStrategy[] { new V2Strategy(null), new V1Strategy(when) }; -// var mainlineVersionCalculatorMock = Substitute.For(); -// mainlineVersionCalculatorMock.CreateVersionBuildMetaData(Arg.Any()).Returns(SemanticVersionBuildMetaData.Empty); -// var continuousDeploymentVersionCalculatorMock = Substitute.For(); - -// var unitUnderTest = new NextVersionCalculator( -// Substitute.For(), -// mainlineVersionCalculator: mainlineVersionCalculatorMock, -// continuousDeploymentVersionCalculator: continuousDeploymentVersionCalculatorMock, -// repositoryStoreMock, new(context), -// versionStrategies, effectiveBranchConfigurationFinderMock, -// incrementStrategyFinderMock -// ); - -// // Act -// var nextVersion = unitUnderTest.FindVersion(); - -// // Assert -// nextVersion.BaseVersion.SemanticVersion.ToString().ShouldBe("2.0.0"); -// nextVersion.BaseVersion.ShouldIncrement.ShouldBe(true); -// nextVersion.BaseVersion.BaseVersionSource.ShouldNotBeNull(); -// nextVersion.BaseVersion.BaseVersionSource.When.ShouldBe(when); -// } - -// [Test] -// public void ShouldNotFilterVersion() -// { -// // Arrange -// var branchMock = GitToolsTestingExtensions.CreateMockBranch("main", GitToolsTestingExtensions.CreateMockCommit()); -// var configuration = GitFlowConfigurationBuilder.New.Build(); -// var context = new GitVersionContext(branchMock, null, configuration, null, 0); -// var repositoryStoreMock = Substitute.For(); -// var effectiveConfiguration = context.Configuration.GetEffectiveConfiguration(branchMock); -// var effectiveBranchConfiguration = new EffectiveBranchConfiguration(branchMock, effectiveConfiguration); -// var effectiveBranchConfigurationFinderMock = Substitute.For(); -// effectiveBranchConfigurationFinderMock.GetConfigurations(branchMock, configuration).Returns(new[] { effectiveBranchConfiguration }); -// var incrementStrategyFinderMock = Substitute.For(); -// repositoryStoreMock.GetSourceBranches(branchMock, configuration, Arg.Any>()).Returns(Enumerable.Empty()); -// var version = new BaseVersion("dummy", false, new SemanticVersion(2), GitToolsTestingExtensions.CreateMockCommit(), null); -// var versionStrategies = new IVersionStrategy[] { new TestVersionStrategy(version) }; -// var mainlineVersionCalculatorMock = Substitute.For(); -// mainlineVersionCalculatorMock.CreateVersionBuildMetaData(Arg.Any()).Returns(SemanticVersionBuildMetaData.Empty); -// var continuousDeploymentVersionCalculatorMock = Substitute.For(); - -// var unitUnderTest = new NextVersionCalculator( -// Substitute.For(), -// mainlineVersionCalculator: mainlineVersionCalculatorMock, -// continuousDeploymentVersionCalculator: continuousDeploymentVersionCalculatorMock, -// repositoryStoreMock, new(context), -// versionStrategies, effectiveBranchConfigurationFinderMock, -// incrementStrategyFinderMock -// ); - -// // Act -// var nextVersion = unitUnderTest.FindVersion(); - -// // Assert -// nextVersion.BaseVersion.Source.ShouldBe(version.Source); -// nextVersion.BaseVersion.ShouldIncrement.ShouldBe(version.ShouldIncrement); -// nextVersion.BaseVersion.SemanticVersion.ShouldBe(version.SemanticVersion); -// } - -// [Test] -// public void ShouldFilterVersion() -// { -// // Arrange -// var commitToExclude = GitToolsTestingExtensions.CreateMockCommit(); -// var branchMock = GitToolsTestingExtensions.CreateMockBranch("main", GitToolsTestingExtensions.CreateMockCommit()); -// var ignoreConfiguration = IgnoreConfigurationBuilder.New.WithShas(commitToExclude.Sha).Build(); -// var configuration = GitFlowConfigurationBuilder.New.WithIgnoreConfiguration(ignoreConfiguration).Build(); -// var context = new GitVersionContext(branchMock, null, configuration, null, 0); -// var repositoryStoreMock = Substitute.For(); -// var effectiveConfiguration = context.Configuration.GetEffectiveConfiguration(branchMock); -// var effectiveBranchConfiguration = new EffectiveBranchConfiguration(branchMock, effectiveConfiguration); -// var effectiveBranchConfigurationFinderMock = Substitute.For(); -// effectiveBranchConfigurationFinderMock.GetConfigurations(branchMock, configuration).Returns(new[] { effectiveBranchConfiguration }); -// var incrementStrategyFinderMock = Substitute.For(); -// repositoryStoreMock.GetSourceBranches(branchMock, configuration, Arg.Any>()).Returns(Enumerable.Empty()); -// var higherVersion = new BaseVersion("exclude", false, new SemanticVersion(2), commitToExclude, null); -// var lowerVersion = new BaseVersion("dummy", false, new SemanticVersion(1), GitToolsTestingExtensions.CreateMockCommit(), null); -// var versionStrategies = new IVersionStrategy[] { new TestVersionStrategy(higherVersion, lowerVersion) }; -// var mainlineVersionCalculatorMock = Substitute.For(); -// mainlineVersionCalculatorMock.CreateVersionBuildMetaData(Arg.Any()).Returns(SemanticVersionBuildMetaData.Empty); -// var continuousDeploymentVersionCalculatorMock = Substitute.For(); - -// var unitUnderTest = new NextVersionCalculator( -// Substitute.For(), -// mainlineVersionCalculator: mainlineVersionCalculatorMock, -// continuousDeploymentVersionCalculator: continuousDeploymentVersionCalculatorMock, -// repositoryStoreMock, new(context), -// versionStrategies, effectiveBranchConfigurationFinderMock, -// incrementStrategyFinderMock -// ); - -// // Act -// var nextVersion = unitUnderTest.FindVersion(); - -// // Assert -// nextVersion.BaseVersion.Source.ShouldNotBe(higherVersion.Source); -// nextVersion.BaseVersion.SemanticVersion.ShouldNotBe(higherVersion.SemanticVersion); -// nextVersion.BaseVersion.Source.ShouldBe(lowerVersion.Source); -// nextVersion.BaseVersion.SemanticVersion.ShouldBe(lowerVersion.SemanticVersion); -// } - -// [Test] -// public void ShouldIgnorePreReleaseVersionInMainlineMode() -// { -// // Arrange -// var branchMock = GitToolsTestingExtensions.CreateMockBranch("main", GitToolsTestingExtensions.CreateMockCommit()); -// var configuration = GitFlowConfigurationBuilder.New -// .WithBranch("main", builder => builder.WithDeploymentMode(DeploymentMode.Mainline)) -// .Build(); -// var context = new GitVersionContext(branchMock, null, configuration, null, 0); -// var repositoryStoreMock = Substitute.For(); -// var effectiveConfiguration = context.Configuration.GetEffectiveConfiguration(branchMock); -// var effectiveBranchConfiguration = new EffectiveBranchConfiguration(branchMock, effectiveConfiguration); -// var effectiveBranchConfigurationFinderMock = Substitute.For(); -// effectiveBranchConfigurationFinderMock.GetConfigurations(branchMock, configuration).Returns(new[] { effectiveBranchConfiguration }); -// var incrementStrategyFinderMock = Substitute.For(); -// repositoryStoreMock.GetSourceBranches(branchMock, configuration, Arg.Any>()).Returns(Enumerable.Empty()); -// var lowerVersion = new BaseVersion("dummy", false, new SemanticVersion(1), GitToolsTestingExtensions.CreateMockCommit(), null); -// var preReleaseVersion = new BaseVersion( -// "prerelease", -// false, -// new SemanticVersion(1, 0, 1) -// { -// PreReleaseTag = new SemanticVersionPreReleaseTag -// { -// Name = "alpha", -// Number = 1 -// } -// }, -// GitToolsTestingExtensions.CreateMockCommit(), -// null -// ); -// var mainlineVersionCalculatorMock = Substitute.For(); -// mainlineVersionCalculatorMock.Calculate(Arg.Any()).Returns(lowerVersion.SemanticVersion); -// var continuousDeploymentVersionCalculatorMock = Substitute.For(); - -// var versionStrategies = new IVersionStrategy[] { new TestVersionStrategy(preReleaseVersion, lowerVersion) }; -// var unitUnderTest = new NextVersionCalculator(Substitute.For(), mainlineVersionCalculatorMock, continuousDeploymentVersionCalculatorMock, -// repositoryStoreMock, new(context), versionStrategies, effectiveBranchConfigurationFinderMock, incrementStrategyFinderMock); - -// // Act -// var nextVersion = unitUnderTest.FindVersion(); - -// // Assert -// nextVersion.BaseVersion.Source.ShouldNotBe(preReleaseVersion.Source); -// nextVersion.BaseVersion.SemanticVersion.ShouldNotBe(preReleaseVersion.SemanticVersion); -// nextVersion.BaseVersion.Source.ShouldBe(lowerVersion.Source); -// nextVersion.BaseVersion.SemanticVersion.ShouldBe(lowerVersion.SemanticVersion); -// } - -// private sealed class V1Strategy : IVersionStrategy -// { -// private readonly ICommit? when; - -// public V1Strategy(DateTimeOffset? when) -// { -// if (when != null) -// { -// this.when = GitToolsTestingExtensions.CreateMockCommit(); -// this.when.When.Returns(when.Value); -// } -// else -// { -// this.when = null; -// } -// } - -// public IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) -// { -// yield return new BaseVersion("Source 1", false, new SemanticVersion(1), this.when, null); -// } -// } - -// private sealed class V2Strategy : IVersionStrategy -// { -// private readonly ICommit? when; - -// public V2Strategy(DateTimeOffset? when) -// { -// if (when != null) -// { -// this.when = GitToolsTestingExtensions.CreateMockCommit(); -// this.when.When.Returns(when.Value); -// } -// else -// { -// this.when = null; -// } -// } - -// public IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) -// { -// yield return new BaseVersion("Source 2", true, new SemanticVersion(2), this.when, null); -// } -// } - -// private sealed class TestVersionStrategy : IVersionStrategy -// { -// private readonly IEnumerable baseVersions; - -// public TestVersionStrategy(params BaseVersion[] baseVersions) => this.baseVersions = baseVersions; - -// public IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) => this.baseVersions; -// } -//} +using GitVersion.Configuration; +using GitVersion.Core.Tests.Helpers; +using GitVersion.Core.Tests.IntegrationTests; +using GitVersion.VersionCalculation; +using LibGit2Sharp; +using Microsoft.Extensions.DependencyInjection; + +namespace GitVersion.Core.Tests.VersionCalculation; + +public class NextVersionCalculatorTests : TestBase +{ + [Test] + public void ShouldIncrementVersionBasedOnConfig() + { + var contextBuilder = new GitVersionContextBuilder(); + + contextBuilder.Build(); + + contextBuilder.ServicesProvider.ShouldNotBeNull(); + var nextVersionCalculator = contextBuilder.ServicesProvider.GetRequiredService(); + nextVersionCalculator.ShouldNotBeNull(); + + var nextVersion = nextVersionCalculator.FindVersion(); + + nextVersion.ToString().ShouldBe("0.0.1-0"); + } + + [Test] + public void DoesNotIncrementWhenBaseVersionSaysNotTo() + { + var contextBuilder = new GitVersionContextBuilder(); + + var overrideConfiguration = new Dictionary() + { + { "next-version", "1.0.0" } + }; + contextBuilder.WithOverrideConfiguration(overrideConfiguration).Build(); + + contextBuilder.ServicesProvider.ShouldNotBeNull(); + var nextVersionCalculator = contextBuilder.ServicesProvider.GetRequiredService(); + + nextVersionCalculator.ShouldNotBeNull(); + + var nextVersion = nextVersionCalculator.FindVersion(); + + nextVersion.ToString().ShouldBe("1.0.0-0"); + } + + [Test] + public void AppliesBranchPreReleaseTag() + { + var contextBuilder = new GitVersionContextBuilder(); + + contextBuilder.WithDevelopBranch().Build(); + + contextBuilder.ServicesProvider.ShouldNotBeNull(); + var nextVersionCalculator = contextBuilder.ServicesProvider.GetRequiredService(); + nextVersionCalculator.ShouldNotBeNull(); + + var nextVersion = nextVersionCalculator.FindVersion(); + + nextVersion.ToString("f").ShouldBe("0.1.0-alpha.0"); + } + + [Test] + public void PreReleaseLabelCanUseBranchName() + { + var configuration = GitFlowConfigurationBuilder.New + .WithNextVersion("1.0.0") + .WithBranch("custom", builder => builder + .WithRegularExpression("^custom?[/-](?.+)") + .WithLabel(ConfigurationConstants.BranchNamePlaceholder) + .WithSourceBranches() + ) + .Build(); + + using var fixture = new EmptyRepositoryFixture(); + fixture.MakeACommit(); + fixture.BranchTo("develop"); + fixture.MakeACommit(); + fixture.BranchTo("custom/foo"); + fixture.MakeACommit(); + + fixture.AssertFullSemver("1.0.0-foo.3", configuration); + } + + [Test] + public void PreReleaseVersionMainline() + { + var configuration = TrunkBasedConfigurationBuilder.New.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + fixture.MakeACommit(); + fixture.MakeACommit(); + fixture.BranchTo("feature/foo"); + fixture.MakeACommit(); + + fixture.AssertFullSemver("0.1.0-foo.1", configuration); + + fixture.BranchTo("bar"); + fixture.MakeACommit(); + + fixture.AssertFullSemver("0.0.3-bar.2", configuration); + } + + [Test] + public void MergeIntoMainline() + { + var configuration = TrunkBasedConfigurationBuilder.New + .WithNextVersion("1.0.0") + .Build(); + + using var fixture = new EmptyRepositoryFixture(); + fixture.MakeACommit(); + fixture.BranchTo("foo"); + fixture.MakeACommit(); + fixture.Checkout(MainBranch); + fixture.MergeNoFF("foo"); + + fixture.AssertFullSemver("1.0.0", configuration); + } + + [Test] + public void MergeFeatureIntoMainline() + { + var configuration = TrunkBasedConfigurationBuilder.New.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + fixture.MakeACommit(); + fixture.ApplyTag("1.0.0"); + fixture.AssertFullSemver("1.0.0", configuration); + + fixture.BranchTo("feature/foo"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.1.0-foo.1", configuration); + fixture.ApplyTag("1.1.0-foo.1"); + + fixture.Checkout(MainBranch); + fixture.MergeNoFF("feature/foo"); + fixture.AssertFullSemver("1.1.0", configuration); + } + + [Test] + public void MergeHotfixIntoMainline() + { + var configuration = TrunkBasedConfigurationBuilder.New.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + fixture.MakeACommit(); + fixture.ApplyTag("1.0.0"); + fixture.AssertFullSemver("1.0.0", configuration); + + fixture.BranchTo("hotfix/foo"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.0.1-foo.1", configuration); + fixture.ApplyTag("1.0.1-foo.1"); + + fixture.Checkout(MainBranch); + fixture.MergeNoFF("hotfix/foo"); + fixture.AssertFullSemver("1.0.1", configuration); + } + + [Test] + public void MergeFeatureIntoMainlineWithMinorIncrement() + { + var configuration = TrunkBasedConfigurationBuilder.New.Build(); + + using var fixture = new EmptyRepositoryFixture(); + fixture.MakeACommit(); + fixture.ApplyTag("1.0.0"); + fixture.AssertFullSemver("1.0.0", configuration); + + fixture.BranchTo("feature/foo"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.1.0-foo.1", configuration); + fixture.ApplyTag("1.1.0-foo.1"); + + fixture.Checkout(MainBranch); + fixture.MergeNoFF("feature/foo"); + fixture.AssertFullSemver("1.1.0", configuration); + } + + [Test] + public void MergeFeatureIntoMainlineWithMinorIncrementAndThenMergeHotfix() + { + var configuration = TrunkBasedConfigurationBuilder.New.Build(); + + using var fixture = new EmptyRepositoryFixture(); + fixture.MakeACommit(); + fixture.ApplyTag("1.0.0"); + fixture.AssertFullSemver("1.0.0", configuration); + + fixture.BranchTo("feature/foo"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.1.0-foo.1", configuration); + fixture.ApplyTag("1.1.0-foo.1"); + + fixture.Checkout(MainBranch); + fixture.MergeNoFF("feature/foo"); + fixture.AssertFullSemver("1.1.0", configuration); + fixture.ApplyTag("1.1.0"); + + fixture.BranchTo("hotfix/bar"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.1.1-bar.1", configuration); + fixture.ApplyTag("1.1.1-bar.1"); + + fixture.Checkout(MainBranch); + fixture.MergeNoFF("hotfix/bar"); + fixture.AssertFullSemver("1.1.1", configuration); + } + + [Test] + public void PreReleaseLabelCanUseBranchNameVariable() + { + var configuration = GitFlowConfigurationBuilder.New + .WithNextVersion("1.0.0") + .WithBranch("custom", builder => builder + .WithRegularExpression("^custom?[/-](?.+)") + .WithLabel($"alpha.{ConfigurationConstants.BranchNamePlaceholder}") + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithSourceBranches() + ) + .Build(); + + using var fixture = new EmptyRepositoryFixture(); + fixture.MakeACommit(); + fixture.BranchTo("develop"); + fixture.MakeACommit(); + fixture.BranchTo("custom/foo"); + fixture.MakeACommit(); + + fixture.AssertFullSemver("1.0.0-alpha.foo.1+3", configuration); + } + + [Test] + public void PreReleaseNumberShouldBeScopeToPreReleaseLabelInManualDeployment() + { + var configuration = GitFlowConfigurationBuilder.New + .WithBranch("main", builder => builder + .WithLabel("beta").WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", builder => builder + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ) + .Build(); + + using var fixture = new EmptyRepositoryFixture(); + fixture.MakeACommit(); + + fixture.BranchTo("feature/test"); + fixture.MakeATaggedCommit("0.1.0-test.1"); + fixture.MakeACommit(); + + fixture.AssertFullSemver("0.1.0-test.2+1", configuration); + + fixture.Checkout("main"); + fixture.Repository.Merge("feature/test", Generate.SignatureNow()); + + fixture.AssertFullSemver("0.1.0-beta.1+3", configuration); + } + + [Test] + public void GetNextVersionOnNonMainlineBranchWithoutCommitsShouldWorkNormally() + { + var configuration = TrunkBasedConfigurationBuilder.New + .WithNextVersion("1.0.0") + .Build(); + + using var fixture = new EmptyRepositoryFixture(); + fixture.MakeACommit("initial commit"); + fixture.BranchTo("feature/f1"); + fixture.AssertFullSemver("1.0.0-f1.0", configuration); + } +} diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunk.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunk.cs index bb5411fe2d..558e3c914e 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunk.cs @@ -30,7 +30,5 @@ public IEnumerable GetIncrements(TrunkBasedIteration iteration, T ); context.BaseVersionSource = commit.Value; - context.Increment = VersionField.None; - context.Label = null; } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs index 94296d7663..db20d39e2b 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs @@ -1,5 +1,4 @@ using GitVersion.Configuration; -using GitVersion.Extensions; namespace GitVersion.VersionCalculation.TrunkBased.Trunk; @@ -8,13 +7,14 @@ internal abstract class CommitOnTrunkBranchedBase : ITrunkBasedIncrementer public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) => commit.Configuration.IsMainBranch && commit.BranchName != iteration.BranchName && commit.Successor is null; - public virtual IEnumerable GetIncrements(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public virtual IEnumerable GetIncrements( + TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { context.BaseVersionSource = commit.Value; var incrementForcedByBranch = iteration.Configuration.Increment == IncrementStrategy.Inherit ? commit.GetIncrementForcedByBranch() : iteration.Configuration.Increment.ToVersionField(); - context.Increment = context.Increment.Consolidate(incrementForcedByBranch); + context.Increment = incrementForcedByBranch; context.Label = iteration.Configuration.GetBranchSpecificLabel(iteration.BranchName, null) ?? context.Label; context.ForceIncrement = true; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs index 8dcd971faf..5b92871f58 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs @@ -17,7 +17,5 @@ public virtual IEnumerable GetIncrements(TrunkBasedIteration iter baseVersionSource: context.BaseVersionSource, semanticVersion: context.SemanticVersion.NotNull() ); - - context.Increment = VersionField.None; } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs index f64090f06d..0109a65ab4 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs @@ -30,9 +30,6 @@ public override IEnumerable GetIncrements(TrunkBasedIteration ite label: context.Label, forceIncrement: context.ForceIncrement ); - - context.Increment = VersionField.None; - context.Label = null; } } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunkBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunkBase.cs index db70c621ab..eab7856088 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunkBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunkBase.cs @@ -63,7 +63,5 @@ public virtual IEnumerable GetIncrements(TrunkBasedIteration iter ); context.BaseVersionSource = commit.Value; - context.Increment = VersionField.None; - context.Label = null; } } diff --git a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs index 9627f2615a..9252d5a6b5 100644 --- a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs +++ b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs @@ -100,9 +100,5 @@ public void WriteVersionInfoToBuildLog(WriteVersionInfoToBuildLog task) gitVersionOutputTool.OutputVariables(versionVariables, configuration.UpdateBuildNumber); } - private GitVersionVariables GitVersionVariables(GitVersionTaskBase task) - { - var versionVariables = serializer.FromFile(task.VersionFile); - return versionVariables; - } + private GitVersionVariables GitVersionVariables(GitVersionTaskBase task) => serializer.FromFile(task.VersionFile); } From ff3e1a217e0660e4a928a7854357ac706a091e1e Mon Sep 17 00:00:00 2001 From: HHobeck Date: Fri, 15 Mar 2024 11:59:57 +0100 Subject: [PATCH 033/544] Integrate code review remarks from arturcic --- docs/input/docs/reference/configuration.md | 9 ++++---- ...riteOutEffectiveConfiguration.approved.txt | 6 +++--- .../SupportedWorkflows/GitFlow/v1.yml | 6 +++--- .../SupportedWorkflows/GitHubFlow/v1.yml | 2 +- .../TrunkBasedConfigurationBuilder.cs | 2 +- .../TrunkBasedDevelopmentScenarios.cs | 21 ------------------- .../Configuration/ConfigurationConstants.cs | 6 +++--- src/GitVersion.Core/MergeMessage.cs | 3 ++- 8 files changed, 17 insertions(+), 38 deletions(-) diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index 2b08740c39..99b3aba154 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -105,7 +105,7 @@ branches: of-merged-branch: true when-current-commit-tagged: false track-merge-target: false - regex: ^releases?[/-] + regex: ^releases?[/-](?.+) source-branches: - develop - main @@ -153,7 +153,7 @@ branches: increment: Inherit prevent-increment: when-current-commit-tagged: false - regex: ^hotfix(es)?[/-] + regex: ^hotfix(es)?[/-](?.+) source-branches: - release - main @@ -168,7 +168,7 @@ branches: prevent-increment: of-merged-branch: true track-merge-target: false - regex: ^support[/-] + regex: ^support[/-](?.+) source-branches: - main is-source-branch-for: [] @@ -209,7 +209,6 @@ is-source-branch-for: [] tracks-release-branches: false is-release-branch: false is-main-branch: false - ``` The supported built-in configuration for the `GitHubFlow` workflow (`workflow: GitHubFlow/v1`) looks like: @@ -257,7 +256,7 @@ branches: of-merged-branch: true when-current-commit-tagged: false track-merge-target: false - regex: ^releases?[/-] + regex: ^releases?[/-](?.+) source-branches: - main - release diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt index a043a75634..83c233ec89 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt @@ -54,7 +54,7 @@ branches: of-merged-branch: true when-current-commit-tagged: false track-merge-target: false - regex: ^releases?[/-] + regex: ^releases?[/-](?.+) source-branches: - develop - main @@ -102,7 +102,7 @@ branches: increment: Inherit prevent-increment: when-current-commit-tagged: false - regex: ^hotfix(es)?[/-] + regex: ^hotfix(es)?[/-](?.+) source-branches: - release - main @@ -117,7 +117,7 @@ branches: prevent-increment: of-merged-branch: true track-merge-target: false - regex: ^support[/-] + regex: ^support[/-](?.+) source-branches: - main is-source-branch-for: [] diff --git a/src/GitVersion.Configuration/SupportedWorkflows/GitFlow/v1.yml b/src/GitVersion.Configuration/SupportedWorkflows/GitFlow/v1.yml index a043a75634..83c233ec89 100644 --- a/src/GitVersion.Configuration/SupportedWorkflows/GitFlow/v1.yml +++ b/src/GitVersion.Configuration/SupportedWorkflows/GitFlow/v1.yml @@ -54,7 +54,7 @@ branches: of-merged-branch: true when-current-commit-tagged: false track-merge-target: false - regex: ^releases?[/-] + regex: ^releases?[/-](?.+) source-branches: - develop - main @@ -102,7 +102,7 @@ branches: increment: Inherit prevent-increment: when-current-commit-tagged: false - regex: ^hotfix(es)?[/-] + regex: ^hotfix(es)?[/-](?.+) source-branches: - release - main @@ -117,7 +117,7 @@ branches: prevent-increment: of-merged-branch: true track-merge-target: false - regex: ^support[/-] + regex: ^support[/-](?.+) source-branches: - main is-source-branch-for: [] diff --git a/src/GitVersion.Configuration/SupportedWorkflows/GitHubFlow/v1.yml b/src/GitVersion.Configuration/SupportedWorkflows/GitHubFlow/v1.yml index 18dea546dd..48e1d6aabc 100644 --- a/src/GitVersion.Configuration/SupportedWorkflows/GitHubFlow/v1.yml +++ b/src/GitVersion.Configuration/SupportedWorkflows/GitHubFlow/v1.yml @@ -40,7 +40,7 @@ branches: of-merged-branch: true when-current-commit-tagged: false track-merge-target: false - regex: ^releases?[/-] + regex: ^releases?[/-](?.+) source-branches: - main - release diff --git a/src/GitVersion.Configuration/TrunkBasedConfigurationBuilder.cs b/src/GitVersion.Configuration/TrunkBasedConfigurationBuilder.cs index 133c19e407..1a17da8ae4 100644 --- a/src/GitVersion.Configuration/TrunkBasedConfigurationBuilder.cs +++ b/src/GitVersion.Configuration/TrunkBasedConfigurationBuilder.cs @@ -80,7 +80,7 @@ private TrunkBasedConfigurationBuilder() WithBranch(HotfixBranch.Name).WithConfiguration(new BranchConfiguration() { Increment = IncrementStrategy.Patch, - RegularExpression = "^hotfix(es)?[/-](?.+)", + RegularExpression = HotfixBranch.RegexPattern, SourceBranches = [ this.MainBranch.Name diff --git a/src/GitVersion.Core.Tests/IntegrationTests/TrunkBasedDevelopmentScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/TrunkBasedDevelopmentScenarios.cs index 80be294775..e3998d6179 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/TrunkBasedDevelopmentScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/TrunkBasedDevelopmentScenarios.cs @@ -36,27 +36,6 @@ private static GitFlowConfigurationBuilder GetConfigurationBuilder() => GitFlowC .WithSourceBranches("main") ); - [Test] - [Ignore("Support of multiple tunks are not implemented at the moment.")] - public void VerifyNonMainMainlineVersionIdenticalAsMain() - { - var configuration = GetConfigurationBuilder().Build(); - - using var fixture = new EmptyRepositoryFixture(); - fixture.Repository.MakeACommit("1"); - - fixture.BranchTo("feature/foo", "foo"); - fixture.MakeACommit("2 +semver: major"); - fixture.Checkout(MainBranch); - fixture.MergeNoFF("feature/foo"); - - fixture.AssertFullSemver("1.0.0", configuration); - - fixture.BranchTo("support/1.0", "support"); - - fixture.AssertFullSemver("1.0.0", configuration); - } - [Test] public void MergedFeatureBranchesToMainImpliesRelease() { diff --git a/src/GitVersion.Core/Configuration/ConfigurationConstants.cs b/src/GitVersion.Core/Configuration/ConfigurationConstants.cs index b3a8ffa6ef..b64bb3d869 100644 --- a/src/GitVersion.Core/Configuration/ConfigurationConstants.cs +++ b/src/GitVersion.Core/Configuration/ConfigurationConstants.cs @@ -42,10 +42,10 @@ internal static class ConfigurationConstants public const string MainBranchRegex = "^master$|^main$"; public const string DevelopBranchRegex = "^dev(elop)?(ment)?$"; - public const string ReleaseBranchRegex = "^releases?[/-]"; + public const string ReleaseBranchRegex = "^releases?[/-](?.+)"; public const string FeatureBranchRegex = "^features?[/-](?.+)"; public const string PullRequestBranchRegex = @"^(pull|pull\-requests|pr)[/-]"; - public const string HotfixBranchRegex = "^hotfix(es)?[/-]"; - public const string SupportBranchRegex = "^support[/-]"; + public const string HotfixBranchRegex = "^hotfix(es)?[/-](?.+)"; + public const string SupportBranchRegex = "^support[/-](?.+)"; public const string UnknownBranchRegex = "(?.+)"; } diff --git a/src/GitVersion.Core/MergeMessage.cs b/src/GitVersion.Core/MergeMessage.cs index 76cb9bcd7f..0750d5aedc 100644 --- a/src/GitVersion.Core/MergeMessage.cs +++ b/src/GitVersion.Core/MergeMessage.cs @@ -15,7 +15,8 @@ public class MergeMessage new("BitBucketPullv7", @"^Pull request #(?\d+).*\r?\n\r?\nMerge in (?.*) from (?[^\s]*) to (?[^\s]*)"), new("BitBucketCloudPull", @"^Merged in (?[^\s]*) \(pull request #(?\d+)\)"), new("GitHubPull", @"^Merge pull request #(?\d+) (from|in) (?:[^\s\/]+\/)?(?[^\s]*)(?: into (?[^\s]*))*"), - new("RemoteTracking", @"^Merge remote-tracking branch '(?[^\s]*)'(?: into (?[^\s]*))*") + new("RemoteTracking", @"^Merge remote-tracking branch '(?[^\s]*)'(?: into (?[^\s]*))*"), + new("AzureDevOpsPull", @"^Merge pull request (?\d+) from (?[^\s]*) into (?[^\s]*)") }; public MergeMessage(string mergeMessage, IGitVersionConfiguration configuration) From 08f03666990b43dadae6870de2a08691b973714a Mon Sep 17 00:00:00 2001 From: Artur Date: Fri, 15 Mar 2024 12:26:26 +0100 Subject: [PATCH 034/544] cleanup --- new-cli/GitVersion.Cli/Program.cs | 4 ++-- src/GitVersion.Configuration/GitVersion.Configuration.csproj | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/new-cli/GitVersion.Cli/Program.cs b/new-cli/GitVersion.Cli/Program.cs index 36a4da92ac..ef5c7de7d4 100644 --- a/new-cli/GitVersion.Cli/Program.cs +++ b/new-cli/GitVersion.Cli/Program.cs @@ -6,7 +6,8 @@ var modules = new IGitVersionModule[] { new CoreModule(), - new LibGit2SharpCoreModule() + new LibGit2SharpCoreModule(), + new CommandsImplModule() }; var cts = new CancellationTokenSource(); @@ -24,7 +25,6 @@ static IContainer RegisterModules(IEnumerable gitVersionModul { var serviceProvider = new ContainerRegistrar() .RegisterModules(gitVersionModules) - .RegisterModule(new CommandsImplModule()) .AddSingleton() .AddLogging() .Build(); diff --git a/src/GitVersion.Configuration/GitVersion.Configuration.csproj b/src/GitVersion.Configuration/GitVersion.Configuration.csproj index 73acc1ab24..e8d05c7f3a 100644 --- a/src/GitVersion.Configuration/GitVersion.Configuration.csproj +++ b/src/GitVersion.Configuration/GitVersion.Configuration.csproj @@ -1,7 +1,4 @@ - - - From 1387b13dc9ce41bf38746eab763dffedffdda238 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Fri, 15 Mar 2024 15:16:56 +0100 Subject: [PATCH 035/544] nuget update for MSBuild.ProjectCreation --- src/Directory.Packages.props | 4 +--- src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index fce7329594..4881ad2450 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -3,7 +3,6 @@ true - @@ -15,12 +14,11 @@ - - + diff --git a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj index 014609042b..23f81dc266 100644 --- a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj +++ b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj @@ -1,13 +1,13 @@ - + From b722c6cc715d82eb2bc351e79c6a1516b8e62513 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 15:56:41 +0000 Subject: [PATCH 036/544] (deps): Bump the analyzers group with 1 update Bumps the analyzers group with 1 update: [NUnit.Analyzers](https://github.com/nunit/nunit.analyzers). Updates `NUnit.Analyzers` from 4.0.1 to 4.1.0 - [Release notes](https://github.com/nunit/nunit.analyzers/releases) - [Changelog](https://github.com/nunit/nunit.analyzers/blob/master/CHANGES.txt) - [Commits](https://github.com/nunit/nunit.analyzers/compare/4.0.1...4.1.0) --- updated-dependencies: - dependency-name: NUnit.Analyzers dependency-type: direct:production update-type: version-update:semver-minor dependency-group: analyzers ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 4881ad2450..3e6775039c 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -30,7 +30,7 @@ - + From 20ccadd561440aa5767cadd05e3ac7a232fc1dd1 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 18 Mar 2024 19:18:02 +0100 Subject: [PATCH 037/544] cleanup --- .../ArgumentParserTests.cs | 8 ++-- .../PullRequestInBuildAgentTest.cs | 6 +-- .../TagCheckoutInBuildAgentTests.cs | 6 +-- src/GitVersion.App/ArgumentParser.cs | 2 +- .../Agents/EnvRunTests.cs | 2 +- .../ConfigurationFileLocatorTests.cs | 13 +++--- .../ConfigurationProviderTests.cs | 4 +- .../ConfigurationFileLocator.cs | 2 +- .../ConfigurationProvider.cs | 5 --- .../Core/GitVersionToolDirectoryTests.cs | 2 +- .../Helpers/GitVersionContextBuilder.cs | 29 ++++++++++--- .../Helpers/TestConsoleAdapter.cs | 1 + .../Helpers/TestFileSystem.cs | 7 +-- ...ngTheBehaviorOfDifferentVersioningModes.cs | 16 +++---- ...FeatureBranchFromAReleaseBranchScenario.cs | 2 +- .../IntegrationTests/IgnoreCommitScenarios.cs | 32 +++++++------- .../IntegrationTests/OtherScenarios.cs | 34 +++++++-------- .../VersionInMergedBranchNameScenarios.cs | 2 +- .../IntegrationTests/VersionInTagScenarios.cs | 4 +- ...elopBranchWithOneCommitMergedToMainWhen.cs | 2 +- ...gedToMainWhenMergedCommitTaggedAsStable.cs | 2 +- ...MergeCommitFromMainMergedBackToMainWhen.cs | 2 +- ...atureBranchWithAMergeCommitFromMainWhen.cs | 2 +- ...BranchWithOneCommitBranchedFromMainWhen.cs | 2 +- ...dFromMainWhenCommitAHasBumpMessageMajor.cs | 2 +- ...dFromMainWhenCommitAHasBumpMessageMinor.cs | 2 +- ...dFromMainWhenCommitAHasBumpMessagePatch.cs | 2 +- ...edFromMainWhenCommitATaggedAsPreRelease.cs | 2 +- ...romMainWhenCommitATaggedAsPreReleaseBar.cs | 2 +- ...romMainWhenCommitATaggedAsPreReleaseFoo.cs | 2 +- ...anchedFromMainWhenCommitATaggedAsStable.cs | 2 +- ...dFromMainWhenCommitBHasBumpMessageMajor.cs | 2 +- ...dFromMainWhenCommitBHasBumpMessageMinor.cs | 2 +- ...dFromMainWhenCommitBHasBumpMessagePatch.cs | 2 +- ...edFromMainWhenCommitBTaggedAsPreRelease.cs | 2 +- ...romMainWhenCommitBTaggedAsPreReleaseBar.cs | 2 +- ...romMainWhenCommitBTaggedAsPreReleaseFoo.cs | 2 +- ...anchedFromMainWhenCommitBTaggedAsStable.cs | 2 +- ...tureBranchWithOneCommitMergedToMainWhen.cs | 2 +- ...rgedToMainWhenCommitBTaggedAsPreRelease.cs | 2 +- ...dToMainWhenCommitBTaggedAsPreReleaseBar.cs | 2 +- ...dToMainWhenCommitBTaggedAsPreReleaseFoo.cs | 2 +- ...itMergedToMainWhenCommitBTaggedAsStable.cs | 2 +- ...oMainWithOneCommitBranchedToFeatureWhen.cs | 2 +- ...nchWithThreeCommitsBranchedFromMainWhen.cs | 2 +- ...eBranchWithThreeCommitsMergedToMainWhen.cs | 2 +- ...ranchWithTwoCommitsBranchedFromMainWhen.cs | 2 +- ...ureBranchWithTwoCommitsMergedToMainWhen.cs | 2 +- ...ranchWithOneCommitBranchedToFeatureWhen.cs | 2 +- ...dToFeatureWhenCommitHasBumpMessageMajor.cs | 2 +- ...dToFeatureWhenCommitHasBumpMessageMinor.cs | 2 +- ...dToFeatureWhenCommitHasBumpMessagePatch.cs | 2 +- ...edToFeatureWhenCommitTaggedAsPreRelease.cs | 2 +- ...oFeatureWhenCommitTaggedAsPreReleaseBar.cs | 2 +- ...oFeatureWhenCommitTaggedAsPreReleaseFoo.cs | 2 +- ...anchedToFeatureWhenCommitTaggedAsStable.cs | 2 +- ...bFlow+GivenAMainBranchWithOneCommitWhen.cs | 2 +- ...hOneCommitWhenCommitHasBumpMessageMajor.cs | 2 +- ...hOneCommitWhenCommitHasBumpMessageMinor.cs | 2 +- ...hOneCommitWhenCommitHasBumpMessagePatch.cs | 2 +- ...thOneCommitWhenCommitTaggedAsPreRelease.cs | 2 +- ...neCommitWhenCommitTaggedAsPreReleaseBar.cs | 2 +- ...neCommitWhenCommitTaggedAsPreReleaseFoo.cs | 2 +- ...chWithOneCommitWhenCommitTaggedAsStable.cs | 2 +- ...ow+GivenAMainBranchWithThreeCommitsWhen.cs | 2 +- ...anchWithTwoCommitsBranchedToFeatureWhen.cs | 2 +- ...atureWhenFirstCommitHasBumpMessageMajor.cs | 2 +- ...atureWhenFirstCommitHasBumpMessageMinor.cs | 2 +- ...atureWhenFirstCommitHasBumpMessagePatch.cs | 2 +- ...eatureWhenFirstCommitTaggedAsPreRelease.cs | 2 +- ...ureWhenFirstCommitTaggedAsPreReleaseBar.cs | 2 +- ...ureWhenFirstCommitTaggedAsPreReleaseFoo.cs | 2 +- ...dToFeatureWhenFirstCommitTaggedAsStable.cs | 2 +- ...Flow+GivenAMainBranchWithTwoCommitsWhen.cs | 2 +- ...mmitsWhenFirstCommitHasBumpMessageMajor.cs | 2 +- ...mmitsWhenFirstCommitHasBumpMessageMinor.cs | 2 +- ...mmitsWhenFirstCommitHasBumpMessagePatch.cs | 2 +- ...ommitsWhenFirstCommitTaggedAsPreRelease.cs | 2 +- ...itsWhenFirstCommitTaggedAsPreReleaseBar.cs | 2 +- ...itsWhenFirstCommitTaggedAsPreReleaseFoo.cs | 2 +- ...TwoCommitsWhenFirstCommitTaggedAsStable.cs | 2 +- ...mitsWhenSecondCommitHasBumpMessageMajor.cs | 2 +- ...mitsWhenSecondCommitHasBumpMessageMinor.cs | 2 +- ...mitsWhenSecondCommitHasBumpMessagePatch.cs | 2 +- ...mmitsWhenSecondCommitTaggedAsPreRelease.cs | 2 +- ...tsWhenSecondCommitTaggedAsPreReleaseBar.cs | 2 +- ...tsWhenSecondCommitTaggedAsPreReleaseFoo.cs | 2 +- ...woCommitsWhenSecondCommitTaggedAsStable.cs | 2 +- .../NextVersionCalculatorTests.cs | 12 +++--- ...nfiguredNextVersionVersionStrategyTests.cs | 2 +- .../MergeMessageBaseVersionStrategyTests.cs | 4 +- .../Core/Abstractions/IFileSystem.cs | 2 - src/GitVersion.Core/Core/FileSystem.cs | 6 --- .../Extensions/StringExtensions.cs | 8 ++-- .../{Logging => Helpers}/Disposable.cs | 2 +- src/GitVersion.Core/Helpers/PathHelper.cs | 17 +++++++- .../Helpers/StringComparerUtils.cs | 8 ---- src/GitVersion.Core/Logging/ConsoleAdapter.cs | 2 + src/GitVersion.Core/Logging/FileAppender.cs | 1 - src/GitVersion.Core/Logging/Log.cs | 1 + src/GitVersion.Core/Logging/LogExtensions.cs | 2 + src/GitVersion.Core/Logging/NullLog.cs | 2 + .../OutputVariables/GitVersionVariables.cs | 2 +- src/GitVersion.Core/PublicAPI.Unshipped.txt | 12 ++---- .../SemVer/SemanticVersionPreReleaseTag.cs | 9 ++-- .../InvalidFileCheckerTests.cs | 2 +- .../GenerateGitVersionInformationTest.cs | 3 ++ .../Tasks/UpdateAssemblyInfoTaskTest.cs | 3 ++ .../Helpers/MsBuildAdapter.cs | 1 + .../Output/AssemblyInfoFileUpdaterTests.cs | 43 +++++-------------- .../Output/FormatArgumentTests.cs | 4 +- .../Output/GitVersionInfoGeneratorTests.cs | 4 +- .../Output/ProjectFileUpdaterTests.cs | 5 ++- .../Output/WixFileTests.cs | 10 ++++- .../GitVersionInfo/GitVersionInfoGenerator.cs | 4 +- .../Fixtures/BaseGitFlowRepositoryFixture.cs | 20 +-------- .../Fixtures/EmptyRepositoryFixture.cs | 17 +------- .../Fixtures/RemoteRepositoryFixture.cs | 23 ++-------- .../Fixtures/RepositoryFixtureBase.cs | 29 ++++++++++--- 119 files changed, 271 insertions(+), 304 deletions(-) rename src/GitVersion.Core/{Logging => Helpers}/Disposable.cs (94%) delete mode 100644 src/GitVersion.Core/Helpers/StringComparerUtils.cs diff --git a/src/GitVersion.App.Tests/ArgumentParserTests.cs b/src/GitVersion.App.Tests/ArgumentParserTests.cs index 9dd75e0c7e..181578019e 100644 --- a/src/GitVersion.App.Tests/ArgumentParserTests.cs +++ b/src/GitVersion.App.Tests/ArgumentParserTests.cs @@ -597,8 +597,8 @@ public void EnsureAssemblyInfoFalse() [Test] public void DynamicRepoLocation() { - var arguments = this.argumentParser.ParseArguments("-dynamicRepoLocation c:\\foo\\"); - arguments.ClonePath.ShouldBe("c:\\foo\\"); + var arguments = this.argumentParser.ParseArguments(@"-dynamicRepoLocation /tmp/foo"); + arguments.ClonePath.ShouldBe("/tmp/foo"); } [Test] @@ -748,14 +748,14 @@ public void EnsureFormatIsSet() } [TestCase("custom-config.yaml")] - [TestCase(@"c:\custom-config.yaml")] + [TestCase("/tmp/custom-config.yaml")] public void ThrowIfConfigurationFileDoesNotExist(string configFile) => Should.Throw(() => _ = this.argumentParser.ParseArguments($"-config {configFile}")); [Test] public void EnsureConfigurationFileIsSet() { - var configFile = Path.GetTempPath() + Guid.NewGuid() + ".yaml"; + var configFile = PathHelper.GetTempPath() + Guid.NewGuid() + ".yaml"; File.WriteAllText(configFile, "next-version: 1.0.0"); var arguments = this.argumentParser.ParseArguments($"-config {configFile}"); arguments.ConfigurationFile.ShouldBe(configFile); diff --git a/src/GitVersion.App.Tests/PullRequestInBuildAgentTest.cs b/src/GitVersion.App.Tests/PullRequestInBuildAgentTest.cs index b93966f73c..38a3cc95d6 100644 --- a/src/GitVersion.App.Tests/PullRequestInBuildAgentTest.cs +++ b/src/GitVersion.App.Tests/PullRequestInBuildAgentTest.cs @@ -142,9 +142,9 @@ public async Task VerifyBitBucketPipelinesPullRequest(string pullRequestRef) private static async Task VerifyPullRequestVersionIsCalculatedProperly(string pullRequestRef, Dictionary env) { - using var fixture = new EmptyRepositoryFixture("main"); - var remoteRepositoryPath = PathHelper.GetTempPath(); - RepositoryFixtureBase.Init(remoteRepositoryPath, "main"); + using var fixture = new EmptyRepositoryFixture(); + var remoteRepositoryPath = PathHelper.GetRepositoryTempPath(); + RepositoryFixtureBase.Init(remoteRepositoryPath); using (var remoteRepository = new Repository(remoteRepositoryPath)) { remoteRepository.Config.Set("user.name", "Test"); diff --git a/src/GitVersion.App.Tests/TagCheckoutInBuildAgentTests.cs b/src/GitVersion.App.Tests/TagCheckoutInBuildAgentTests.cs index cb0e33f4f6..b66e9debf6 100644 --- a/src/GitVersion.App.Tests/TagCheckoutInBuildAgentTests.cs +++ b/src/GitVersion.App.Tests/TagCheckoutInBuildAgentTests.cs @@ -34,9 +34,9 @@ public async Task VerifyTagCheckoutOnGitHubActions() private static async Task VerifyTagCheckoutVersionIsCalculatedProperly(Dictionary env) { - using var fixture = new EmptyRepositoryFixture("main"); - var remoteRepositoryPath = PathHelper.GetTempPath(); - RepositoryFixtureBase.Init(remoteRepositoryPath, "main"); + using var fixture = new EmptyRepositoryFixture(); + var remoteRepositoryPath = PathHelper.GetRepositoryTempPath(); + RepositoryFixtureBase.Init(remoteRepositoryPath); using (var remoteRepository = new Repository(remoteRepositoryPath)) { remoteRepository.Config.Set("user.name", "Test"); diff --git a/src/GitVersion.App/ArgumentParser.cs b/src/GitVersion.App/ArgumentParser.cs index 781d431574..2f9e53197c 100644 --- a/src/GitVersion.App/ArgumentParser.cs +++ b/src/GitVersion.App/ArgumentParser.cs @@ -174,7 +174,7 @@ private void ParseTargetPath(Arguments arguments, string? name, IReadOnlyList(); // set environment variable and create an empty envrun file to indicate that EnvRun is running... - this.mFilePath = PathHelper.Combine(Path.GetTempPath(), "envrun.db"); + this.mFilePath = PathHelper.Combine(PathHelper.GetTempPath(), "envrun.db"); this.environment.SetEnvironmentVariable(EnvVarName, this.mFilePath); File.OpenWrite(this.mFilePath).Dispose(); } diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs index 22aa017ec9..ba988d2fba 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs @@ -13,9 +13,6 @@ public static class ConfigurationFileLocatorTests { public class DefaultConfigFileLocatorTests : TestBase { - private const string DefaultRepoPath = @"c:\MyGitRepo"; - private const string DefaultWorkingPath = @"c:\MyGitRepo\Working"; - private string repoPath; private string workingPath; private IFileSystem fileSystem; @@ -25,8 +22,8 @@ public class DefaultConfigFileLocatorTests : TestBase [SetUp] public void Setup() { - this.repoPath = DefaultRepoPath; - this.workingPath = DefaultWorkingPath; + this.repoPath = Path.Combine(PathHelper.GetTempPath(), "MyGitRepo"); + this.workingPath = Path.Combine(PathHelper.GetTempPath(), "MyGitRepo", "Working"); var options = Options.Create(new GitVersionOptions { WorkingDirectory = repoPath }); var sp = ConfigureServices(services => services.AddSingleton(options)); @@ -76,8 +73,8 @@ private string SetupConfigFileContent(string text, string fileName, string path) public class NamedConfigurationFileLocatorTests : TestBase { - private const string DefaultRepoPath = @"c:\MyGitRepo"; - private const string DefaultWorkingPath = @"c:\MyGitRepo\Working"; + private static readonly string DefaultRepoPath = Path.Combine(PathHelper.GetTempPath(), "MyGitRepo"); + private static readonly string DefaultWorkingPath = Path.Combine(PathHelper.GetTempPath(), "MyGitRepo", "Working"); private const string myConfigYaml = "my-config.yaml"; private string repoPath; @@ -189,7 +186,7 @@ public void NoWarnOnCustomYmlFileOutsideRepoPath() this.configFileLocator = sp.GetRequiredService(); this.fileSystem = sp.GetRequiredService(); - SetupConfigFileContent(string.Empty, path: @"c:\\Unrelated\\path"); + SetupConfigFileContent(string.Empty, path: PathHelper.Combine(PathHelper.GetTempPath(), "unrelatedPath")); var configurationProvider = (ConfigurationProvider)sp.GetRequiredService(); diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs index de631d05bf..4564e74cbe 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs @@ -13,8 +13,6 @@ namespace GitVersion.Core.Tests; [TestFixture] public class ConfigurationProviderTests : TestBase { - private const string DefaultRepoPath = @"c:\MyGitRepo"; - private string repoPath; private ConfigurationProvider configurationProvider; private IFileSystem fileSystem; @@ -22,7 +20,7 @@ public class ConfigurationProviderTests : TestBase [SetUp] public void Setup() { - this.repoPath = DefaultRepoPath; + this.repoPath = Path.Combine(PathHelper.GetTempPath(), "MyGitRepo"); var options = Options.Create(new GitVersionOptions { WorkingDirectory = repoPath }); var sp = ConfigureServices(services => services.AddSingleton(options)); this.configurationProvider = (ConfigurationProvider)sp.GetRequiredService(); diff --git a/src/GitVersion.Configuration/ConfigurationFileLocator.cs b/src/GitVersion.Configuration/ConfigurationFileLocator.cs index eda43e01a0..a3e763e38b 100644 --- a/src/GitVersion.Configuration/ConfigurationFileLocator.cs +++ b/src/GitVersion.Configuration/ConfigurationFileLocator.cs @@ -19,7 +19,7 @@ public bool TryGetConfigurationFile(string? workingDirectory, string? projectRoo public void Verify(string? workingDirectory, string? projectRootDirectory) { - if (!Path.IsPathRooted(this.configurationFile) && !fileSystem.PathsEqual(workingDirectory, projectRootDirectory)) + if (!Path.IsPathRooted(this.configurationFile) && !PathHelper.Equal(workingDirectory, projectRootDirectory)) WarnAboutAmbiguousConfigFileSelection(workingDirectory, projectRootDirectory); } diff --git a/src/GitVersion.Configuration/ConfigurationProvider.cs b/src/GitVersion.Configuration/ConfigurationProvider.cs index aa4920a6b9..6481e72304 100644 --- a/src/GitVersion.Configuration/ConfigurationProvider.cs +++ b/src/GitVersion.Configuration/ConfigurationProvider.cs @@ -1,20 +1,15 @@ using GitVersion.Configuration.SupportedWorkflows; using GitVersion.Extensions; -using GitVersion.Logging; using Microsoft.Extensions.Options; using YamlDotNet.Core; namespace GitVersion.Configuration; internal class ConfigurationProvider( - IFileSystem fileSystem, - ILog log, IConfigurationFileLocator configFileLocator, IOptions options) : IConfigurationProvider { - private readonly IFileSystem fileSystem = fileSystem.NotNull(); - private readonly ILog log = log.NotNull(); private readonly IConfigurationFileLocator configFileLocator = configFileLocator.NotNull(); private readonly IOptions options = options.NotNull(); diff --git a/src/GitVersion.Core.Tests/Core/GitVersionToolDirectoryTests.cs b/src/GitVersion.Core.Tests/Core/GitVersionToolDirectoryTests.cs index 34d252ad8f..35e976bcb6 100644 --- a/src/GitVersion.Core.Tests/Core/GitVersionToolDirectoryTests.cs +++ b/src/GitVersion.Core.Tests/Core/GitVersionToolDirectoryTests.cs @@ -15,7 +15,7 @@ public class GitVersionTaskDirectoryTests : TestBase [SetUp] public void SetUp() { - this.workDirectory = PathHelper.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); + this.workDirectory = PathHelper.Combine(PathHelper.GetTempPath(), Guid.NewGuid().ToString()); this.gitDirectory = Repository.Init(this.workDirectory).TrimEnd(Path.DirectorySeparatorChar); Assert.That(this.gitDirectory, Is.Not.Null); } diff --git a/src/GitVersion.Core.Tests/Helpers/GitVersionContextBuilder.cs b/src/GitVersion.Core.Tests/Helpers/GitVersionContextBuilder.cs index 51be354189..abce552ffd 100644 --- a/src/GitVersion.Core.Tests/Helpers/GitVersionContextBuilder.cs +++ b/src/GitVersion.Core.Tests/Helpers/GitVersionContextBuilder.cs @@ -5,12 +5,13 @@ namespace GitVersion.Core.Tests; -public class GitVersionContextBuilder +public class GitVersionContextBuilder : IDisposable { private IGitRepository? repository; + private EmptyRepositoryFixture? emptyRepositoryFixture; private IReadOnlyDictionary? overrideConfiguration; - public IServiceProvider? ServicesProvider; private Action? overrideServices; + public IServiceProvider? ServicesProvider; public GitVersionContextBuilder WithRepository(IGitRepository gitRepository) { @@ -56,11 +57,8 @@ public void Build() { var repo = this.repository ?? CreateRepository(); - var options = Options.Create(new GitVersionOptions - { - WorkingDirectory = new EmptyRepositoryFixture().RepositoryPath, - ConfigurationInfo = { OverrideConfiguration = this.overrideConfiguration } - }); + emptyRepositoryFixture = new(); + var options = Options.Create(new GitVersionOptions { WorkingDirectory = emptyRepositoryFixture.RepositoryPath, ConfigurationInfo = { OverrideConfiguration = this.overrideConfiguration } }); this.ServicesProvider = ConfigureServices(services => { @@ -94,4 +92,21 @@ private static IServiceProvider ConfigureServices(Action? ov return services.BuildServiceProvider(); } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + private void Dispose(bool disposing) + { + if (!disposing) + { + return; + } + + this.repository?.Dispose(); + this.emptyRepositoryFixture?.Dispose(); + } } diff --git a/src/GitVersion.Core.Tests/Helpers/TestConsoleAdapter.cs b/src/GitVersion.Core.Tests/Helpers/TestConsoleAdapter.cs index 7dde989624..cf136b9934 100644 --- a/src/GitVersion.Core.Tests/Helpers/TestConsoleAdapter.cs +++ b/src/GitVersion.Core.Tests/Helpers/TestConsoleAdapter.cs @@ -1,3 +1,4 @@ +using GitVersion.Helpers; using GitVersion.Logging; namespace GitVersion.Core.Tests.Helpers; diff --git a/src/GitVersion.Core.Tests/Helpers/TestFileSystem.cs b/src/GitVersion.Core.Tests/Helpers/TestFileSystem.cs index 1e6464ef70..432d1e16dd 100644 --- a/src/GitVersion.Core.Tests/Helpers/TestFileSystem.cs +++ b/src/GitVersion.Core.Tests/Helpers/TestFileSystem.cs @@ -4,7 +4,7 @@ namespace GitVersion.Core.Tests.Helpers; public class TestFileSystem : IFileSystem { - private readonly Dictionary fileSystem = new(StringComparerUtils.OsDependentComparer); + private readonly Dictionary fileSystem = new(SysEnv.OSVersion.Platform == PlatformID.Unix ? StringComparer.Ordinal : StringComparer.OrdinalIgnoreCase); public void Copy(string from, string to, bool overwrite) { @@ -94,9 +94,4 @@ public bool DirectoryExists(string path) } public long GetLastDirectoryWrite(string path) => 1; - - public bool PathsEqual(string? path, string? otherPath) => string.Equals( - Path.GetFullPath(path ?? throw new ArgumentNullException(nameof(path))).TrimEnd('\\').TrimEnd('/'), - Path.GetFullPath(otherPath ?? throw new ArgumentNullException(nameof(otherPath))).TrimEnd('\\').TrimEnd('/'), - StringComparerUtils.OsDependentComparison); } diff --git a/src/GitVersion.Core.Tests/IntegrationTests/ComparingTheBehaviorOfDifferentVersioningModes.cs b/src/GitVersion.Core.Tests/IntegrationTests/ComparingTheBehaviorOfDifferentVersioningModes.cs index fb234bb458..13a25d7a30 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/ComparingTheBehaviorOfDifferentVersioningModes.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/ComparingTheBehaviorOfDifferentVersioningModes.cs @@ -46,7 +46,7 @@ private static GitHubFlowConfigurationBuilder GetConfigurationBuilder() => GitHu [Test] public void ExpectedBehavior() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("1.0.0"); @@ -172,7 +172,7 @@ public void ExpectedBehavior() [Test] public void MainRelease() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("0.0.2"); @@ -186,7 +186,7 @@ public void MainRelease() [Test] public void MergeFeatureToMain() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("0.0.2"); fixture.BranchTo("feature/test"); @@ -220,7 +220,7 @@ public void MergeFeatureToMain() [Test] public void MergeFeatureToMainWithPreviousCommits() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("0.0.2"); fixture.MakeACommit(); @@ -270,7 +270,7 @@ public void MergeFeatureToMainWithPreviousCommits() [Test] public void MergeFeatureToMainWithMinorMinorSemversionIncrement() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("0.0.2"); fixture.BranchTo("feature/test"); @@ -304,7 +304,7 @@ public void MergeFeatureToMainWithMinorMinorSemversionIncrement() [Test] public void MergeFeatureToMainWithMajorMinorSemversionIncrement() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("0.0.2"); fixture.BranchTo("feature/test"); @@ -338,7 +338,7 @@ public void MergeFeatureToMainWithMajorMinorSemversionIncrement() [Test] public void MergeFeatureToMainWithPreviousCommitsAndMinorMinorSemversionIncrement() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("0.0.2"); fixture.MakeACommit("+semver: minor"); @@ -388,7 +388,7 @@ public void MergeFeatureToMainWithPreviousCommitsAndMinorMinorSemversionIncremen [Test] public void MergeFeatureToMainWithPreviousCommitsAndMinorMajorSemversionIncrement() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("0.0.2"); fixture.MakeACommit("+semver: minor"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/CreatingAFeatureBranchFromAReleaseBranchScenario.cs b/src/GitVersion.Core.Tests/IntegrationTests/CreatingAFeatureBranchFromAReleaseBranchScenario.cs index 8f30cec592..50d2c3e7f1 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/CreatingAFeatureBranchFromAReleaseBranchScenario.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/CreatingAFeatureBranchFromAReleaseBranchScenario.cs @@ -22,7 +22,7 @@ public void ShouldTreatTheFeatureBranchLikeTheFirstReleaseBranchWhenItHasBeenBra var configuration = GitFlowConfigurationBuilder.New.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeACommit(); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/IgnoreCommitScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/IgnoreCommitScenarios.cs index 186e233f74..9f56c41b7d 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/IgnoreCommitScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/IgnoreCommitScenarios.cs @@ -39,7 +39,7 @@ public void ShouldNotFallbackToBaseVersionWhenAllCommitsAreNotIgnored(string? ne [Test] public void GivenTrunkBasedWorkflowWithCommitParameterThenVersionShouldBeCorrect() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); var commitB = fixture.Repository.MakeACommit("B"); @@ -55,7 +55,7 @@ public void GivenTrunkBasedWorkflowWithCommitParameterThenVersionShouldBeCorrect [Test] public void GivenTrunkBasedWorkflowWithIgnoreConfigurationForCommitThenVersionShouldBeCorrect() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); var commitB = fixture.Repository.MakeACommit("B"); @@ -73,7 +73,7 @@ public void GivenTrunkBasedWorkflowWithIgnoreConfigurationForCommitThenVersionSh [Test] public void GivenTrunkBasedWorkflowWithIgnoreConfigurationForCommitBAndCommitParameterAThenVersionShouldBeCorrect() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); var commitB = fixture.Repository.MakeACommit("B"); @@ -91,7 +91,7 @@ public void GivenTrunkBasedWorkflowWithIgnoreConfigurationForCommitBAndCommitPar [Test] public void GivenTrunkBasedWorkflowWithIgnoreConfigurationForCommitCAndCommitParameterCThenCommitBShouldBeUsed() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeACommit("B"); @@ -108,7 +108,7 @@ public void GivenTrunkBasedWorkflowWithIgnoreConfigurationForCommitCAndCommitPar [Test] public void GivenTrunkBasedWorkflowWithIgnoreConfigurationForTaggedCommitThenTagShouldBeIgnored() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeACommit("B"); @@ -127,7 +127,7 @@ public void GivenTrunkBasedWorkflowWithIgnoreConfigurationForTaggedCommitThenTag [Test] public void GivenTrunkBasedWorkflowWithIgnoreConfigurationBeforeCommitWithTagThenTagShouldBeIgnored() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeACommit("B"); @@ -148,7 +148,7 @@ public void GivenTrunkBasedWorkflowWithIgnoreConfigurationBeforeCommitWithTagThe public void GivenTrunkBasedWorkflowWithIgnoreConfigurationOfCommitBThenTagShouldBeConsidered( bool preventIncrementWhenCurrentCommitTagged, string semanticVersion) { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("1.0.0"); @@ -170,7 +170,7 @@ public void GivenTrunkBasedWorkflowWithIgnoreConfigurationOfCommitBThenTagShould public void GivenTrunkBasedWorkflowWithCommitParameterBThenTagShouldBeConsidered( bool preventIncrementWhenCurrentCommitTagged, string semanticVersion) { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); var commitA = fixture.Repository.MakeACommit("A"); fixture.ApplyTag("1.0.0"); @@ -189,7 +189,7 @@ public void GivenTrunkBasedWorkflowWithCommitParameterBThenTagShouldBeConsidered [Test] public void GivenGitHubFlowBasedWorkflowWithCommitParameterThenVersionShouldBeCorrect() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); var commitB = fixture.Repository.MakeACommit("B"); @@ -205,7 +205,7 @@ public void GivenGitHubFlowBasedWorkflowWithCommitParameterThenVersionShouldBeCo [Test] public void GivenGitHubFlowWorkflowWithIgnoreConfigurationForCommitThenVersionShouldBeCorrect() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); var commitB = fixture.Repository.MakeACommit("B"); @@ -223,7 +223,7 @@ public void GivenGitHubFlowWorkflowWithIgnoreConfigurationForCommitThenVersionSh [Test] public void GivenGitHubFlowWorkflowWithIgnoreConfigurationForCommitBAndCommitParameterAThenVersionShouldBeCorrect() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); var commitB = fixture.Repository.MakeACommit("B"); @@ -241,7 +241,7 @@ public void GivenGitHubFlowWorkflowWithIgnoreConfigurationForCommitBAndCommitPar [Test] public void GivenGitHubFlowWorkflowWithIgnoreConfigurationForCommitCAndCommitParameterCThenCommitBShouldBeUsed() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeACommit("B"); @@ -258,7 +258,7 @@ public void GivenGitHubFlowWorkflowWithIgnoreConfigurationForCommitCAndCommitPar [Test] public void GivenGitHubFlowWorkflowWithIgnoreConfigurationForTaggedCommitThenTagShouldBeIgnored() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeACommit("B"); @@ -277,7 +277,7 @@ public void GivenGitHubFlowWorkflowWithIgnoreConfigurationForTaggedCommitThenTag [Test] public void GivenGitHubFlowWorkflowWithIgnoreConfigurationBeforeCommitWithTagThenTagShouldBeIgnored() { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeACommit("B"); @@ -298,7 +298,7 @@ public void GivenGitHubFlowWorkflowWithIgnoreConfigurationBeforeCommitWithTagThe public void GivenGitHubFlowWorkflowWithIgnoreConfigurationOfCommitBThenTagShouldBeConsidered( bool preventIncrementWhenCurrentCommitTagged, string semanticVersion) { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("1.0.0"); @@ -318,7 +318,7 @@ public void GivenGitHubFlowWorkflowWithIgnoreConfigurationOfCommitBThenTagShould public void GivenGitHubFlowWorkflowWithCommitParameterBThenTagShouldBeConsidered( bool preventIncrementWhenCurrentCommitTagged, string semanticVersion) { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); var commitA = fixture.Repository.MakeACommit("A"); fixture.ApplyTag("1.0.0"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs index 6ccb0c86b2..2b387ec7bc 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs @@ -200,7 +200,7 @@ public void EnsurePreReleaseTagLabelWillBeConsideredIfNoLabelIsDefined(long patc .WithLabel(null).WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit(); @@ -265,7 +265,7 @@ public void EnsurePreReleaseTagLabelWithInitialTagForPatchNumberOneWillBeConside .WithLabel(null).WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("1.0.0"); fixture.MakeACommit(); @@ -332,7 +332,7 @@ public void EnsurePreReleaseTagLabelWithInitialTagForPatchNumberTwoAndThreeWillB .WithLabel(null).WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("1.0.0"); fixture.MakeACommit(); @@ -399,7 +399,7 @@ public void EnsurePreReleaseTagLabelWillBeConsideredIfLabelIsEmpty(long patchNum .WithLabel(string.Empty).WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit(); @@ -463,7 +463,7 @@ public void EnsurePreReleaseTagLabelWithInitialTagWillBeConsideredIfLabelIsEmpty .WithLabel(string.Empty).WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("1.0.0"); fixture.MakeACommit(); @@ -529,7 +529,7 @@ public void EnsurePreReleaseTagLabelWillBeConsideredIfAlphaLabelIsDefined(long p .WithLabel("alpha").WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit(); @@ -596,7 +596,7 @@ public void EnsurePreReleaseTagLabelWithInitialTagWillBeConsideredIfAlphaLabelIs .WithLabel("alpha").WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("1.0.0"); fixture.MakeACommit(); @@ -663,7 +663,7 @@ public void EnsurePreReleaseTagLabelWillBeConsideredIfBetaLabelIsDefined(long pa .WithLabel("beta").WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit(); @@ -727,7 +727,7 @@ public void EnsurePreReleaseTagLabelWithInitialTagWillBeConsideredIfBetaLabelIsD .WithLabel("beta").WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("1.0.0"); fixture.MakeACommit(); @@ -792,7 +792,7 @@ public void EnsurePreReleaseTagLabelWillBeConsideredIfGammaLabelIsDefined(long p .WithLabel("gamma").WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit(); @@ -856,7 +856,7 @@ public void EnsurePreReleaseTagLabelWithInitialTagWillBeConsideredIfGammaLabelIs .WithLabel("gamma").WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("1.0.0"); fixture.MakeACommit(); @@ -924,7 +924,7 @@ public void IncreaseVersionWithBumpMessageWhenCommitMessageIncrementIsEnabledAnd ) .Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit(); // ✅ succeeds as expected @@ -964,7 +964,7 @@ public void IncreaseVersionWithBumpMessageWhenCommitMessageIncrementIsEnabledAnd .WithIsMainBranch(false) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit(); // ✅ succeeds as expected @@ -1044,7 +1044,7 @@ public void EnsureThePreReleaseTagIsCorrectlyGeneratedWhenPreReleaseLabelIsEmpty .WithDeploymentMode(DeploymentMode.ContinuousDelivery) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeCommits(5); var _ = fixture.GetVersion(configuration); @@ -1071,7 +1071,7 @@ public void EnsurePreventIncrementWhenCurrentCommitTaggedOnDevelopWithDeployment .WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); if (!tag.IsNullOrEmpty()) fixture.ApplyTag(tag); fixture.BranchTo("develop"); @@ -1098,7 +1098,7 @@ public void EnsurePreventIncrementWhenCurrentCommitTaggedOnDevelopWithDeployment .WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); if (!tag.IsNullOrEmpty()) fixture.ApplyTag(tag); fixture.BranchTo("develop"); @@ -1125,7 +1125,7 @@ public void EnsurePreventIncrementWhenCurrentCommitTaggedOnDevelopWithDeployment .WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); if (!tag.IsNullOrEmpty()) fixture.ApplyTag(tag); fixture.BranchTo("develop"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/VersionInMergedBranchNameScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/VersionInMergedBranchNameScenarios.cs index 2e605dca8e..f1cefe017a 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/VersionInMergedBranchNameScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/VersionInMergedBranchNameScenarios.cs @@ -30,7 +30,7 @@ public void DoesNotTakeVersionFromNameOfNonReleaseBranch() [TestCase("hotfix")] public void DoesNotTakeVersionFromBranchWithAccidentalVersion(string branch) { - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("1.0.0"); fixture.BranchTo($"{branch}/downgrade-some-lib-to-3.2.1"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/VersionInTagScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/VersionInTagScenarios.cs index 616bf506c1..d78735900c 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/VersionInTagScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/VersionInTagScenarios.cs @@ -15,7 +15,7 @@ public void TagPreReleaseWeightIsNotConfigured_HeadIsATaggedCommit_WeightedPreRe .Build(); // Act - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("1.1.0"); var version = fixture.GetVersion(configuration); @@ -33,7 +33,7 @@ public void TagPreReleaseWeightIsConfigured_HeadIsATaggedCommit_WeightedPreRelea .Build(); // Act - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("1.1.0"); var version = fixture.GetVersion(configuration); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs index 1f9ebc1ac3..d6dde387bd 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs @@ -26,7 +26,7 @@ public void OneTimeSetUp() // |/ // * 58 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("develop"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs index b1b05c1dc4..b2b7c500a9 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs @@ -26,7 +26,7 @@ public void OneTimeSetUp() // |/ // * 58 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("develop"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs index 59e6386fd8..6445d464cc 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs @@ -31,7 +31,7 @@ public void OneTimeSetUp() // |/ // A 58 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs index 77b55990fa..8a794e8616 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs @@ -27,7 +27,7 @@ public void OneTimeSetUp() // |/ // A 58 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs index 36fbfc8383..99346fb127 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 47 minutes ago (HEAD -> feature/foo) // A 51 minutes ago (main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs index 656cc1d362..79613c831f 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 47 minutes ago (HEAD -> feature/foo) // A 51 minutes ago (main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A +semver: major"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs index 2646ecd4b5..356e1c3021 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 47 minutes ago (HEAD -> feature/foo) // A 51 minutes ago (main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A +semver: minor"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs index 8245ca27ea..c23a133f91 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 47 minutes ago (HEAD -> feature/foo) // A 51 minutes ago (main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A +semver: patch"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs index 096e63cb84..db029d830d 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 47 minutes ago (HEAD -> feature/foo) // A 51 minutes ago (main) (tag 0.0.0-4) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.0-4"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs index 23403c1a51..2197f87b0b 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 47 minutes ago (HEAD -> feature/foo) // A 51 minutes ago (main) (tag 0.0.0-bar) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.0-bar"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs index ae40d134d1..ea7747aa59 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 47 minutes ago (HEAD -> feature/foo) // A 51 minutes ago (main) (tag 0.0.0-foo.4) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.0-foo.4"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs index e21ddc34af..9f3fd4fca8 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 47 minutes ago (HEAD -> feature/foo) // A 51 minutes ago (main) (tag 0.0.0) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.0"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs index fea9c49462..a43ab72ee2 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 47 minutes ago (HEAD -> feature/foo) // A 51 minutes ago (main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs index 0230968690..c097da8bf1 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 47 minutes ago (HEAD -> feature/foo) // A 51 minutes ago (main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs index 7797492706..7e03c0029a 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 47 minutes ago (HEAD -> feature/foo) // A 51 minutes ago (main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs index fd3c88649e..b0dc36582c 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 47 minutes ago (HEAD -> feature/foo) (tag 0.0.0-4) // A 51 minutes ago (main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs index 220cb1b99f..cf6bf5def1 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 47 minutes ago (HEAD -> feature/foo) (tag 0.0.0-bar) // A 51 minutes ago (main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs index dc2ac981d0..88f4b0c92e 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 47 minutes ago (HEAD -> feature/foo) (tag 0.0.0-foo.4) // A 51 minutes ago (main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs index 348fc74350..12ea448041 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 47 minutes ago (HEAD -> feature/foo) (tag 0.0.0) // A 51 minutes ago (main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs index e98eb07ab0..8b7808d63f 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs @@ -26,7 +26,7 @@ public void OneTimeSetUp() // |/ // A 58 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs index 09851bfcf2..d7c028d45c 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs @@ -20,7 +20,7 @@ public class GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreR [OneTimeSetUp] public void OneTimeSetUp() { - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); // * 54 minutes ago (HEAD -> main) // |\ diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs index c21f09f475..8711eaea64 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs @@ -20,7 +20,7 @@ public class GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreR [OneTimeSetUp] public void OneTimeSetUp() { - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); // * 55 minutes ago (HEAD -> main) // |\ diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs index 2c2cbd21ba..8ccdca3a5c 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs @@ -20,7 +20,7 @@ public class GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreR [OneTimeSetUp] public void OneTimeSetUp() { - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); // * 55 minutes ago (HEAD -> main) // |\ diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs index 9afb005f96..318456a731 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs @@ -20,7 +20,7 @@ public class GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStab [OneTimeSetUp] public void OneTimeSetUp() { - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); // * 55 minutes ago (HEAD -> main) // |\ diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs index 44ac89da0f..d66ed5eea3 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs @@ -27,7 +27,7 @@ public void OneTimeSetUp() // |/ // A 58 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs index 7dfdc6fbf3..fad5196b3a 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs @@ -25,7 +25,7 @@ public void OneTimeSetUp() // B 47 minutes ago // A 51 minutes ago (main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs index 4fff71e50c..18060a587a 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs @@ -28,7 +28,7 @@ public void OneTimeSetUp() // |/ // A 58 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs index d6c7d20ee6..d734f91b1b 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs @@ -24,7 +24,7 @@ public void OneTimeSetUp() // B 47 minutes ago // A 51 minutes ago (main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs index e967276bf6..96ff7c1d99 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs @@ -27,7 +27,7 @@ public void OneTimeSetUp() // |/ // A 58 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs index a3e593d0c4..dd13044296 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() { // A 58 minutes ago (HEAD -> feature/foo, main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs index 946b8dac40..342e335655 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() { // A 58 minutes ago (HEAD -> feature/foo, main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A +semver: major"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs index 8ab792eeac..a8bc27b841 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() { // A 58 minutes ago (HEAD -> feature/foo, main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A +semver: minor"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs index 55d9ed6277..1b53dcd4e1 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() { // A 58 minutes ago (HEAD -> feature/foo, main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A +semver: patch"); fixture.BranchTo("feature/foo"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs index 58b7310910..cf22d83b58 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() { // A 58 minutes ago (HEAD -> feature/foo, main) (tag 0.0.0-4) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.0-4"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs index 77034f847e..d6b5e15637 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() { // A 58 minutes ago (HEAD -> feature/foo, main) (tag 0.0.0-bar) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.0-bar"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs index 9d7121241d..883c900658 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() { // A 58 minutes ago (HEAD -> feature/foo, main) (tag 0.0.0-foo.4) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.0-foo.4"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs index 41486e0754..a46910e703 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() { // A 58 minutes ago (HEAD -> feature/foo, main) (tag 0.0.0) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.0"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs index 3e6257947a..10908de45a 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs @@ -21,7 +21,7 @@ public void OneTimeSetUp() { // A 59 minutes ago (HEAD -> main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs index 50ac4c58cb..e016a3633f 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs @@ -21,7 +21,7 @@ public void OneTimeSetUp() { // A 59 minutes ago (HEAD -> main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A +semver: major"); } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs index b0b578915a..ab8ee19875 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs @@ -21,7 +21,7 @@ public void OneTimeSetUp() { // A 59 minutes ago (HEAD -> main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A +semver: minor"); } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs index 57b2b50ed5..371606ec94 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs @@ -21,7 +21,7 @@ public void OneTimeSetUp() { // A 59 minutes ago (HEAD -> main) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A +semver: patch"); } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs index 872a2b1c2f..48cf614d0f 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs @@ -21,7 +21,7 @@ public void OneTimeSetUp() { // A 59 minutes ago (HEAD -> main) (tag 0.0.0-4) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.0-4"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs index 455b312395..77fb96cb38 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs @@ -21,7 +21,7 @@ public void OneTimeSetUp() { // A 59 minutes ago (HEAD -> main) (tag 0.0.0-bar) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.0-bar"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs index 6b0afcb49d..2d96a45c8b 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs @@ -21,7 +21,7 @@ public void OneTimeSetUp() { // A 59 minutes ago (HEAD -> main) (tag 0.0.0-foo.4) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.0-foo.4"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs index afa59167e9..b96c62a6af 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs @@ -21,7 +21,7 @@ public void OneTimeSetUp() { // A 59 minutes ago (HEAD -> main) (tag 0.0.0) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.0"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs index 44940742ec..9b82d11f7f 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 58 minutes ago // A 59 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeACommit("B"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs index 86473801b3..47f2826def 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 54 minutes ago (main) (HEAD -> feature/foo) // A 56 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeACommit("B"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs index 2563b590e5..cae332c393 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 54 minutes ago (main) (HEAD -> feature/foo) // A 56 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A +semver: major"); fixture.MakeACommit("B"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs index 69ad50d9e4..5e13f68ce1 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 54 minutes ago (main) (HEAD -> feature/foo) // A 56 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A +semver: minor"); fixture.MakeACommit("B"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs index bc7f3738f2..6c806e5549 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 54 minutes ago (main) (HEAD -> feature/foo) // A 56 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A +semver: patch"); fixture.MakeACommit("B"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs index e2abafa7a3..de3cb67f98 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 54 minutes ago (main) (HEAD -> feature/foo) // A 56 minutes ago (0.0.3-4) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.3-4"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs index ddc87f80ed..cf89dbbf1f 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 54 minutes ago (main) (HEAD -> feature/foo) // A 56 minutes ago (0.0.3-bar) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.3-bar"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs index 9136a86378..21aa63002b 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 54 minutes ago (main) (HEAD -> feature/foo) // A 56 minutes ago (0.0.3-foo.4) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.3-foo.4"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs index ddce4c502d..92fb7f6e77 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs @@ -23,7 +23,7 @@ public void OneTimeSetUp() // B 54 minutes ago (main) (HEAD -> feature/foo) // A 56 minutes ago (0.0.3) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.3"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs index dfbf6f5977..9135837571 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() // B 58 minutes ago (HEAD -> main) // A 59 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeACommit("B"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs index 3ed0c7586e..6752bc8a94 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() // B 58 minutes ago (HEAD -> main) // A 59 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A +semver: major"); fixture.MakeACommit("B"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs index e5ff33cfe0..c0ea1976e5 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() // B 58 minutes ago (HEAD -> main) // A 59 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A +semver: minor"); fixture.MakeACommit("B"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs index f4db1d0fa5..3a707f9fa0 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() // B 58 minutes ago (HEAD -> main) // A 59 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A +semver: patch"); fixture.MakeACommit("B"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs index ca9bc165d1..61ea406039 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() // B 58 minutes ago (HEAD -> main) // A 59 minutes ago (tag 0.0.3-4) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.3-4"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs index 2b01bedaff..713dcaf723 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() // B 58 minutes ago (HEAD -> main) // A 59 minutes ago (tag 0.0.3-bar) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.3-bar"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs index ec7c08a1bd..8693701841 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() // B 58 minutes ago (HEAD -> main) // A 59 minutes ago (tag 0.0.3-foo.4) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.3-foo.4"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs index 2218e0717d..30a5535474 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() // B 58 minutes ago (HEAD -> main) // A 59 minutes ago (tag 0.0.3) - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("0.0.3"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs index 23a55ce78e..a3e45161f5 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() // B 58 minutes ago (HEAD -> main) // A 59 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeACommit("B +semver: major"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs index fa662a249c..4a236a3efb 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() // B 58 minutes ago (HEAD -> main) // A 59 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeACommit("B +semver: minor"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs index d956afcb4f..0e6f03bfcc 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() // B 58 minutes ago (HEAD -> main) // A 59 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeACommit("B +semver: patch"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs index ab214954d7..6db3b80029 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() // B 58 minutes ago (HEAD -> main) (tag 0.2.0-4) // A 59 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeACommit("B"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs index 3c2cd46deb..d561e33b67 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() // B 58 minutes ago (HEAD -> main) (tag 0.2.0-bar) // A 59 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeACommit("B"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs index cfdef73874..13e4d8f0fb 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() // B 58 minutes ago (HEAD -> main) (tag 0.2.0-foo.4) // A 59 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeACommit("B"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs index d72069263c..fc773d91ab 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs @@ -22,7 +22,7 @@ public void OneTimeSetUp() // B 58 minutes ago (HEAD -> main) (tag 0.2.0) // A 59 minutes ago - fixture = new EmptyRepositoryFixture("main"); + fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeACommit("B"); diff --git a/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs index 5b9cbfe2e6..369ad1ade6 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs @@ -12,7 +12,7 @@ public class NextVersionCalculatorTests : TestBase [Test] public void ShouldIncrementVersionBasedOnConfig() { - var contextBuilder = new GitVersionContextBuilder(); + using var contextBuilder = new GitVersionContextBuilder(); contextBuilder.Build(); @@ -28,7 +28,7 @@ public void ShouldIncrementVersionBasedOnConfig() [Test] public void DoesNotIncrementWhenBaseVersionSaysNotTo() { - var contextBuilder = new GitVersionContextBuilder(); + using var contextBuilder = new GitVersionContextBuilder(); var overrideConfiguration = new Dictionary() { @@ -49,7 +49,7 @@ public void DoesNotIncrementWhenBaseVersionSaysNotTo() [Test] public void AppliesBranchPreReleaseTag() { - var contextBuilder = new GitVersionContextBuilder(); + using var contextBuilder = new GitVersionContextBuilder(); contextBuilder.WithDevelopBranch().Build(); @@ -89,7 +89,7 @@ public void PreReleaseVersionMainline() { var configuration = TrunkBasedConfigurationBuilder.New.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit(); fixture.MakeACommit(); fixture.BranchTo("feature/foo"); @@ -125,7 +125,7 @@ public void MergeFeatureIntoMainline() { var configuration = TrunkBasedConfigurationBuilder.New.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit(); fixture.ApplyTag("1.0.0"); fixture.AssertFullSemver("1.0.0", configuration); @@ -145,7 +145,7 @@ public void MergeHotfixIntoMainline() { var configuration = TrunkBasedConfigurationBuilder.New.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit(); fixture.ApplyTag("1.0.0"); fixture.AssertFullSemver("1.0.0", configuration); diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfiguredNextVersionVersionStrategyTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfiguredNextVersionVersionStrategyTests.cs index 142fec703e..1653766a3c 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfiguredNextVersionVersionStrategyTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfiguredNextVersionVersionStrategyTests.cs @@ -51,7 +51,7 @@ public void ConfiguredNextVersionTestShouldFail(string nextVersion, SemanticVers private static BaseVersion? GetBaseVersion(IReadOnlyDictionary? overrideConfiguration = null) { - var contextBuilder = new GitVersionContextBuilder().WithOverrideConfiguration(overrideConfiguration); + using var contextBuilder = new GitVersionContextBuilder().WithOverrideConfiguration(overrideConfiguration); contextBuilder.Build(); contextBuilder.ServicesProvider.ShouldNotBeNull(); var strategy = contextBuilder.ServicesProvider.GetServiceForType(); diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs index 4911d9ac11..276e249753 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs @@ -27,7 +27,7 @@ public void ShouldNotAllowIncrementOfVersion() mockRepository.Branches.Returns(branches); mockRepository.Commits.Returns(mockBranch.Commits); - var contextBuilder = new GitVersionContextBuilder().WithRepository(mockRepository); + using var contextBuilder = new GitVersionContextBuilder().WithRepository(mockRepository); contextBuilder.Build(); contextBuilder.ServicesProvider.ShouldNotBeNull(); var strategy = contextBuilder.ServicesProvider.GetServiceForType(); @@ -156,7 +156,7 @@ private static void AssertMergeMessage(string message, string? expectedVersion, mockRepository.Head.Returns(mockBranch); mockRepository.Commits.Returns(mockBranch.Commits); - var contextBuilder = new GitVersionContextBuilder() + using var contextBuilder = new GitVersionContextBuilder() .WithOverrideConfiguration(configuration) .WithRepository(mockRepository); contextBuilder.Build(); diff --git a/src/GitVersion.Core/Core/Abstractions/IFileSystem.cs b/src/GitVersion.Core/Core/Abstractions/IFileSystem.cs index b316a76f7e..32e4646809 100644 --- a/src/GitVersion.Core/Core/Abstractions/IFileSystem.cs +++ b/src/GitVersion.Core/Core/Abstractions/IFileSystem.cs @@ -15,6 +15,4 @@ public interface IFileSystem void CreateDirectory(string path); bool DirectoryExists(string path); long GetLastDirectoryWrite(string path); - - bool PathsEqual(string? path, string? otherPath); } diff --git a/src/GitVersion.Core/Core/FileSystem.cs b/src/GitVersion.Core/Core/FileSystem.cs index fc253319fc..d3c41b59ea 100644 --- a/src/GitVersion.Core/Core/FileSystem.cs +++ b/src/GitVersion.Core/Core/FileSystem.cs @@ -52,10 +52,4 @@ public IEnumerable DirectoryEnumerateFiles(string? directory, string sea .DefaultIfEmpty() .Max() .Ticks; - - public bool PathsEqual(string? path, string? otherPath) => - string.Equals( - PathHelper.GetFullPath(path).TrimEnd('\\').TrimEnd('/'), - PathHelper.GetFullPath(otherPath).TrimEnd('\\').TrimEnd('/'), - StringComparerUtils.OsDependentComparison); } diff --git a/src/GitVersion.Core/Extensions/StringExtensions.cs b/src/GitVersion.Core/Extensions/StringExtensions.cs index dc10da112e..7fcd563d95 100644 --- a/src/GitVersion.Core/Extensions/StringExtensions.cs +++ b/src/GitVersion.Core/Extensions/StringExtensions.cs @@ -40,7 +40,7 @@ public static bool IsValidPath(this string? path) } public static bool IsSwitchArgument(this string? value) => value != null - && (value.StartsWith("-") || value.StartsWith("/")) + && (value.StartsWith('-') || value.StartsWith('/')) && !Regex.Match(value, @"/\w+:").Success; //Exclude msbuild & project parameters in form /blah:, which should be parsed as values, not switch names. public static bool IsSwitch(this string? value, string switchName) @@ -48,12 +48,12 @@ public static bool IsSwitch(this string? value, string switchName) if (value == null) return false; - if (value.StartsWith("-")) + if (value.StartsWith('-')) { value = value[1..]; } - if (value.StartsWith("/")) + if (value.StartsWith('/')) { value = value[1..]; } @@ -78,7 +78,7 @@ public static bool ArgumentRequiresValue(this string argument, int argumentIndex var argumentMightRequireValue = !booleanArguments.Contains(argument[1..], StringComparer.OrdinalIgnoreCase); // If this is the first argument that might be a target path, the argument starts with slash and we're on an OS that supports paths with slashes, the argument does not require a value. - if (argumentMightRequireValue && argumentIndex == 0 && argument.StartsWith("/") && Path.DirectorySeparatorChar == '/' && argument.IsValidPath()) + if (argumentMightRequireValue && argumentIndex == 0 && argument.StartsWith('/') && Path.DirectorySeparatorChar == '/' && argument.IsValidPath()) return false; return argumentMightRequireValue; diff --git a/src/GitVersion.Core/Logging/Disposable.cs b/src/GitVersion.Core/Helpers/Disposable.cs similarity index 94% rename from src/GitVersion.Core/Logging/Disposable.cs rename to src/GitVersion.Core/Helpers/Disposable.cs index e000bc2b22..af32a9fbc2 100644 --- a/src/GitVersion.Core/Logging/Disposable.cs +++ b/src/GitVersion.Core/Helpers/Disposable.cs @@ -1,6 +1,6 @@ using GitVersion.Extensions; -namespace GitVersion.Logging; +namespace GitVersion.Helpers; public static class Disposable { diff --git a/src/GitVersion.Core/Helpers/PathHelper.cs b/src/GitVersion.Core/Helpers/PathHelper.cs index cf26126f6b..2ba48e2638 100644 --- a/src/GitVersion.Core/Helpers/PathHelper.cs +++ b/src/GitVersion.Core/Helpers/PathHelper.cs @@ -4,6 +4,12 @@ internal static class PathHelper { public static string NewLine => SysEnv.NewLine; + public static readonly StringComparison OsDependentComparison = SysEnv.OSVersion.Platform switch + { + PlatformID.Unix or PlatformID.MacOSX => StringComparison.Ordinal, + _ => StringComparison.OrdinalIgnoreCase, + }; + public static string GetCurrentDirectory() => AppContext.BaseDirectory ?? throw new InvalidOperationException(); public static string GetTempPath() @@ -13,9 +19,12 @@ public static string GetTempPath() { tempPath = SysEnv.GetEnvironmentVariable("RUNNER_TEMP"); } - return Combine(tempPath, "TestRepositories", Guid.NewGuid().ToString()); + + return tempPath!; } + public static string GetRepositoryTempPath() => Combine(GetTempPath(), "TestRepositories", Guid.NewGuid().ToString()); + public static string GetFullPath(string? path) { ArgumentNullException.ThrowIfNull(path, nameof(path)); @@ -53,4 +62,10 @@ public static string Combine(string? path1, string? path2, string? path3, string return Path.Combine(path1, path2, path3, path4); } + + public static bool Equal(string? path, string? otherPath) => + string.Equals( + GetFullPath(path).TrimEnd('\\').TrimEnd('/'), + GetFullPath(otherPath).TrimEnd('\\').TrimEnd('/'), + OsDependentComparison); } diff --git a/src/GitVersion.Core/Helpers/StringComparerUtils.cs b/src/GitVersion.Core/Helpers/StringComparerUtils.cs deleted file mode 100644 index 3d70257962..0000000000 --- a/src/GitVersion.Core/Helpers/StringComparerUtils.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace GitVersion.Helpers; - -public static class StringComparerUtils -{ - public static readonly StringComparer IgnoreCaseComparer = StringComparer.InvariantCultureIgnoreCase; - public static readonly StringComparison OsDependentComparison = SysEnv.OSVersion.Platform == PlatformID.Unix ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase; - public static readonly StringComparer OsDependentComparer = SysEnv.OSVersion.Platform == PlatformID.Unix ? StringComparer.Ordinal : StringComparer.OrdinalIgnoreCase; -} diff --git a/src/GitVersion.Core/Logging/ConsoleAdapter.cs b/src/GitVersion.Core/Logging/ConsoleAdapter.cs index 1fe87c09fe..7f6f69c760 100644 --- a/src/GitVersion.Core/Logging/ConsoleAdapter.cs +++ b/src/GitVersion.Core/Logging/ConsoleAdapter.cs @@ -1,3 +1,5 @@ +using GitVersion.Helpers; + namespace GitVersion.Logging; internal class ConsoleAdapter : IConsole diff --git a/src/GitVersion.Core/Logging/FileAppender.cs b/src/GitVersion.Core/Logging/FileAppender.cs index a9f9a9a3d1..a5c8f56a78 100644 --- a/src/GitVersion.Core/Logging/FileAppender.cs +++ b/src/GitVersion.Core/Logging/FileAppender.cs @@ -12,7 +12,6 @@ public FileAppender(string filePath) var logFile = new FileInfo(Path.GetFullPath(filePath)); - // NOTE: logFile.Directory will be null if the path is i.e. C:\logfile.log. @asbjornu logFile.Directory?.Create(); if (logFile.Exists) return; diff --git a/src/GitVersion.Core/Logging/Log.cs b/src/GitVersion.Core/Logging/Log.cs index 030760d0b7..b1d9f9cfdb 100644 --- a/src/GitVersion.Core/Logging/Log.cs +++ b/src/GitVersion.Core/Logging/Log.cs @@ -1,5 +1,6 @@ using System.Globalization; using System.Text.RegularExpressions; +using GitVersion.Helpers; namespace GitVersion.Logging; diff --git a/src/GitVersion.Core/Logging/LogExtensions.cs b/src/GitVersion.Core/Logging/LogExtensions.cs index 945f89332e..d88a5ef5c6 100644 --- a/src/GitVersion.Core/Logging/LogExtensions.cs +++ b/src/GitVersion.Core/Logging/LogExtensions.cs @@ -1,3 +1,5 @@ +using GitVersion.Helpers; + namespace GitVersion.Logging; public static class LogExtensions diff --git a/src/GitVersion.Core/Logging/NullLog.cs b/src/GitVersion.Core/Logging/NullLog.cs index 2acb1a6079..8a311f8cc2 100644 --- a/src/GitVersion.Core/Logging/NullLog.cs +++ b/src/GitVersion.Core/Logging/NullLog.cs @@ -1,3 +1,5 @@ +using GitVersion.Helpers; + namespace GitVersion.Logging; internal sealed class NullLog : ILog diff --git a/src/GitVersion.Core/OutputVariables/GitVersionVariables.cs b/src/GitVersion.Core/OutputVariables/GitVersionVariables.cs index df86aa8d4d..53a8b55172 100644 --- a/src/GitVersion.Core/OutputVariables/GitVersionVariables.cs +++ b/src/GitVersion.Core/OutputVariables/GitVersionVariables.cs @@ -26,7 +26,7 @@ public record GitVersionVariables(string Major, string? CommitsSinceVersionSource, string? UncommittedChanges) : IEnumerable> { - public static readonly List AvailableVariables = + internal static readonly List AvailableVariables = [ nameof(Major), nameof(Minor), diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 7902498b8a..cf65d62637 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -275,6 +275,7 @@ GitVersion.GitVersionOptions.Verbosity -> GitVersion.Logging.Verbosity GitVersion.GitVersionOptions.WixInfo.get -> GitVersion.WixInfo! GitVersion.GitVersionOptions.WorkingDirectory.get -> string! GitVersion.GitVersionOptions.WorkingDirectory.set -> void +GitVersion.Helpers.Disposable GitVersion.Helpers.EncodingHelper GitVersion.Helpers.LambdaEqualityHelper GitVersion.Helpers.LambdaEqualityHelper.Equals(T? instance, T? other) -> bool @@ -289,7 +290,6 @@ GitVersion.Helpers.RetryAction GitVersion.Helpers.RetryAction.Execute(System.Action! operation) -> void GitVersion.Helpers.RetryAction.RetryAction(int maxRetries = 5) -> void GitVersion.Helpers.ServiceMessageEscapeHelper -GitVersion.Helpers.StringComparerUtils GitVersion.IBranch GitVersion.IBranch.Commits.get -> GitVersion.ICommitCollection! GitVersion.IBranch.IsDetachedHead.get -> bool @@ -324,7 +324,6 @@ GitVersion.IFileSystem.GetLastDirectoryWrite(string! path) -> long GitVersion.IFileSystem.Move(string! from, string! to) -> void GitVersion.IFileSystem.OpenRead(string! path) -> System.IO.Stream! GitVersion.IFileSystem.OpenWrite(string! path) -> System.IO.Stream! -GitVersion.IFileSystem.PathsEqual(string? path, string? otherPath) -> bool GitVersion.IFileSystem.ReadAllText(string! path) -> string! GitVersion.IFileSystem.WriteAllText(string? file, string! fileContents) -> void GitVersion.IFileSystem.WriteAllText(string? file, string! fileContents, System.Text.Encoding! encoding) -> void @@ -414,7 +413,6 @@ GitVersion.LockedFileException.LockedFileException() -> void GitVersion.LockedFileException.LockedFileException(System.Exception! inner) -> void GitVersion.LockedFileException.LockedFileException(string? message) -> void GitVersion.LockedFileException.LockedFileException(string? message, System.Exception? innerException) -> void -GitVersion.Logging.Disposable GitVersion.Logging.IConsole GitVersion.Logging.IConsole.ReadLine() -> string? GitVersion.Logging.IConsole.UseColor(System.ConsoleColor consoleColor) -> System.IDisposable! @@ -822,11 +820,11 @@ static GitVersion.Extensions.StringExtensions.IsTrue(this string? value) -> bool static GitVersion.Extensions.StringExtensions.IsValidPath(this string? path) -> bool static GitVersion.Extensions.StringExtensions.RegexReplace(this string! input, string! pattern, string! replace, System.Text.RegularExpressions.RegexOptions options = System.Text.RegularExpressions.RegexOptions.None) -> string! static GitVersion.Extensions.StringExtensions.WithPrefixIfNotNullOrEmpty(this string! value, string! prefix) -> string! +static GitVersion.Helpers.Disposable.Create(System.Action! disposer) -> System.IDisposable! static GitVersion.Helpers.EncodingHelper.DetectEncoding(System.Collections.Generic.IList! bytes) -> System.Text.Encoding? static GitVersion.Helpers.EncodingHelper.DetectEncoding(string? filename) -> System.Text.Encoding? static GitVersion.Helpers.ServiceMessageEscapeHelper.EscapeValue(string? value) -> string? static GitVersion.IncrementStrategyExtensions.ToVersionField(this GitVersion.IncrementStrategy strategy) -> GitVersion.VersionField -static GitVersion.Logging.Disposable.Create(System.Action! disposer) -> System.IDisposable! static GitVersion.Logging.LogExtensions.Debug(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogAction! logAction) -> void static GitVersion.Logging.LogExtensions.Debug(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogAction! logAction) -> void static GitVersion.Logging.LogExtensions.Debug(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, string! format, params object![]! args) -> void @@ -887,11 +885,7 @@ static GitVersion.VersionCalculation.NextVersion.operator ==(GitVersion.VersionC static GitVersion.VersionCalculation.NextVersion.operator >(GitVersion.VersionCalculation.NextVersion! left, GitVersion.VersionCalculation.NextVersion! right) -> bool static GitVersion.VersionCalculation.NextVersion.operator >=(GitVersion.VersionCalculation.NextVersion! left, GitVersion.VersionCalculation.NextVersion! right) -> bool static readonly GitVersion.BranchCommit.Empty -> GitVersion.BranchCommit -static readonly GitVersion.Helpers.StringComparerUtils.IgnoreCaseComparer -> System.StringComparer! -static readonly GitVersion.Helpers.StringComparerUtils.OsDependentComparer -> System.StringComparer! -static readonly GitVersion.Helpers.StringComparerUtils.OsDependentComparison -> System.StringComparison -static readonly GitVersion.Logging.Disposable.Empty -> System.IDisposable! -static readonly GitVersion.OutputVariables.GitVersionVariables.AvailableVariables -> System.Collections.Generic.List! +static readonly GitVersion.Helpers.Disposable.Empty -> System.IDisposable! static readonly GitVersion.SemanticVersion.Empty -> GitVersion.SemanticVersion! static readonly GitVersion.SemanticVersionBuildMetaData.Empty -> GitVersion.SemanticVersionBuildMetaData! static readonly GitVersion.SemanticVersionPreReleaseTag.Empty -> GitVersion.SemanticVersionPreReleaseTag! diff --git a/src/GitVersion.Core/SemVer/SemanticVersionPreReleaseTag.cs b/src/GitVersion.Core/SemVer/SemanticVersionPreReleaseTag.cs index 930773dd9e..dff27ee621 100644 --- a/src/GitVersion.Core/SemVer/SemanticVersionPreReleaseTag.cs +++ b/src/GitVersion.Core/SemVer/SemanticVersionPreReleaseTag.cs @@ -8,6 +8,7 @@ namespace GitVersion; public sealed class SemanticVersionPreReleaseTag : IFormattable, IComparable, IEquatable { + private static readonly StringComparer IgnoreCaseComparer = StringComparer.InvariantCultureIgnoreCase; public static readonly SemanticVersionPreReleaseTag Empty = new(); private static readonly Regex ParseRegex = new( @@ -63,7 +64,7 @@ public SemanticVersionPreReleaseTag(SemanticVersionPreReleaseTag preReleaseTag) left?.CompareTo(right) >= 0; public static bool operator <=(SemanticVersionPreReleaseTag? left, SemanticVersionPreReleaseTag? right) => - StringComparerUtils.IgnoreCaseComparer.Compare(left?.Name, right?.Name) != 1; + IgnoreCaseComparer.Compare(left?.Name, right?.Name) != 1; public static implicit operator string?(SemanticVersionPreReleaseTag? preReleaseTag) => preReleaseTag?.ToString(); @@ -83,7 +84,7 @@ public static SemanticVersionPreReleaseTag Parse(string? preReleaseTag) var value = match.Groups["name"].Value; var number = match.Groups["number"].Success ? long.Parse(match.Groups["number"].Value) : (long?)null; - return value.EndsWith("-") + return value.EndsWith('-') ? new(preReleaseTag, null, true) : new SemanticVersionPreReleaseTag(value, number, true); } @@ -99,7 +100,7 @@ public int CompareTo(SemanticVersionPreReleaseTag? other) return -1; } - var nameComparison = StringComparerUtils.IgnoreCaseComparer.Compare(Name, other?.Name); + var nameComparison = IgnoreCaseComparer.Compare(Name, other?.Name); return nameComparison != 0 ? nameComparison : Nullable.Compare(Number, other?.Number); } @@ -123,7 +124,7 @@ public string ToString(string? format, IFormatProvider? formatProvider) return format switch { - "t" => (Number.HasValue ? Name.IsNullOrEmpty() ? $"{Number}" : $"{Name}.{Number}" : Name ?? string.Empty), + "t" => (Number.HasValue ? Name.IsNullOrEmpty() ? $"{Number}" : $"{Name}.{Number}" : Name), _ => throw new FormatException($"Unknown format '{format}'.") }; } diff --git a/src/GitVersion.MsBuild.Tests/InvalidFileCheckerTests.cs b/src/GitVersion.MsBuild.Tests/InvalidFileCheckerTests.cs index 16ff51d5fa..12b6315a1e 100644 --- a/src/GitVersion.MsBuild.Tests/InvalidFileCheckerTests.cs +++ b/src/GitVersion.MsBuild.Tests/InvalidFileCheckerTests.cs @@ -14,7 +14,7 @@ public class InvalidFileCheckerTests : TestBase [SetUp] public void CreateTemporaryProject() { - this.projectDirectory = PathHelper.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); + this.projectDirectory = PathHelper.Combine(PathHelper.GetTempPath(), Guid.NewGuid().ToString()); this.projectFile = PathHelper.Combine(this.projectDirectory, "Fake.csproj"); Directory.CreateDirectory(this.projectDirectory); diff --git a/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs b/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs index 76e235d3ad..82faa1483f 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs @@ -1,3 +1,4 @@ +using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; using GitVersion.MsBuild.Tasks; using GitVersion.MsBuild.Tests.Helpers; @@ -133,6 +134,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenIntermediateOut fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Patch), "4")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.MajorMinorPatch), "1.2.4")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.FullSemVer), "1.2.4-1")); + DirectoryHelper.DeleteDirectory(task.IntermediateOutputPath); } [TestCaseSource(nameof(Languages))] @@ -154,6 +156,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileInBuildServerWhenIn fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Patch), "1")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.MajorMinorPatch), "1.0.1")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.FullSemVer), "1.0.1-1")); + DirectoryHelper.DeleteDirectory(task.IntermediateOutputPath); } [TestCaseSource(nameof(Languages))] diff --git a/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs b/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs index b382d0ade4..6f5121a2f1 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs @@ -1,3 +1,4 @@ +using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; using GitVersion.MsBuild.Tasks; using GitVersion.MsBuild.Tests.Helpers; @@ -111,6 +112,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenIntermediateOutputPathDoes var fileContent = File.ReadAllText(result.Task.AssemblyInfoTempFilePath); fileContent.ShouldContain(@"assembly: AssemblyVersion(""1.2.4.0"")"); + DirectoryHelper.DeleteDirectory(task.IntermediateOutputPath); } [TestCaseSource(nameof(Languages))] @@ -128,6 +130,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenIntermediateOutputPathDoes var fileContent = File.ReadAllText(result.Task.AssemblyInfoTempFilePath); fileContent.ShouldContain(@"assembly: AssemblyVersion(""1.0.1.0"")"); + DirectoryHelper.DeleteDirectory(task.IntermediateOutputPath); } [TestCaseSource(nameof(Languages))] diff --git a/src/GitVersion.MsBuild/Helpers/MsBuildAdapter.cs b/src/GitVersion.MsBuild/Helpers/MsBuildAdapter.cs index 9243e1f470..7acb755607 100644 --- a/src/GitVersion.MsBuild/Helpers/MsBuildAdapter.cs +++ b/src/GitVersion.MsBuild/Helpers/MsBuildAdapter.cs @@ -1,3 +1,4 @@ +using GitVersion.Helpers; using GitVersion.Logging; using Microsoft.Build.Utilities; diff --git a/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs b/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs index 04c0a2b193..1d576d0dd8 100644 --- a/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs +++ b/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs @@ -17,6 +17,13 @@ public class AssemblyInfoFileUpdaterTests : TestBase private IVariableProvider variableProvider; private ILog log; private IFileSystem fileSystem; + private string workingDir; + + [OneTimeSetUp] + public void OneTimeSetUp() => workingDir = PathHelper.Combine(PathHelper.GetTempPath(), "AssemblyInfoFileUpdaterTests"); + + [OneTimeTearDown] + public void OneTimeTearDown() => DirectoryHelper.DeleteDirectory(workingDir); [SetUp] public void Setup() @@ -35,7 +42,6 @@ public void Setup() [TestCase("vb")] public void ShouldCreateAssemblyInfoFileWhenNotExistsAndEnsureAssemblyInfo(string fileExtension) { - var workingDir = Path.GetTempPath(); var assemblyInfoFile = "VersionAssemblyInfo." + fileExtension; var fullPath = PathHelper.Combine(workingDir, assemblyInfoFile); @@ -53,7 +59,6 @@ public void ShouldCreateAssemblyInfoFileWhenNotExistsAndEnsureAssemblyInfo(strin [TestCase("vb")] public void ShouldCreateAssemblyInfoFileAtPathWhenNotExistsAndEnsureAssemblyInfo(string fileExtension) { - var workingDir = Path.GetTempPath(); var assemblyInfoFile = PathHelper.Combine("src", "Project", "Properties", $"VersionAssemblyInfo.{fileExtension}"); var fullPath = PathHelper.Combine(workingDir, assemblyInfoFile); var variables = this.variableProvider.GetVariablesFor( @@ -71,12 +76,7 @@ public void ShouldCreateAssemblyInfoFileAtPathWhenNotExistsAndEnsureAssemblyInfo [TestCase("vb")] public void ShouldCreateAssemblyInfoFilesAtPathWhenNotExistsAndEnsureAssemblyInfo(string fileExtension) { - var workingDir = Path.GetTempPath(); - var assemblyInfoFiles = new HashSet - { - "AssemblyInfo." + fileExtension, - PathHelper.Combine("src", "Project", "Properties", "VersionAssemblyInfo." + fileExtension) - }; + var assemblyInfoFiles = new HashSet { "AssemblyInfo." + fileExtension, PathHelper.Combine("src", "Project", "Properties", "VersionAssemblyInfo." + fileExtension) }; var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", ConfigurationConstants.DefaultTagPrefix), EmptyConfigurationBuilder.New.Build(), 0); using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem); @@ -94,7 +94,6 @@ public void ShouldCreateAssemblyInfoFilesAtPathWhenNotExistsAndEnsureAssemblyInf [TestCase("vb")] public void ShouldNotCreateAssemblyInfoFileWhenNotExistsAndNotEnsureAssemblyInfo(string fileExtension) { - var workingDir = Path.GetTempPath(); var assemblyInfoFile = "VersionAssemblyInfo." + fileExtension; var fullPath = PathHelper.Combine(workingDir, assemblyInfoFile); var variables = this.variableProvider.GetVariablesFor( @@ -111,7 +110,7 @@ public void ShouldNotCreateAssemblyInfoFileWhenNotExistsAndNotEnsureAssemblyInfo public void ShouldNotCreateAssemblyInfoFileForUnknownSourceCodeAndEnsureAssemblyInfo() { this.fileSystem = Substitute.For(); - var workingDir = Path.GetTempPath(); + const string assemblyInfoFile = "VersionAssemblyInfo.js"; var fullPath = PathHelper.Combine(workingDir, assemblyInfoFile); var variables = this.variableProvider.GetVariablesFor( @@ -128,7 +127,7 @@ public void ShouldNotCreateAssemblyInfoFileForUnknownSourceCodeAndEnsureAssembly public void ShouldStartSearchFromWorkingDirectory() { this.fileSystem = Substitute.For(); - var workingDir = Path.GetTempPath(); + string[] assemblyInfoFiles = []; var variables = this.variableProvider.GetVariablesFor( SemanticVersion.Parse("1.0.0", ConfigurationConstants.DefaultTagPrefix), EmptyConfigurationBuilder.New.Build(), 0 @@ -145,7 +144,6 @@ public void ShouldStartSearchFromWorkingDirectory() [TestCase("vb", "\r\n\r\n")] public void ShouldReplaceAssemblyVersion(string fileExtension, string assemblyFileContent) { - var workingDir = Path.GetTempPath(); var assemblyInfoFile = "AssemblyInfo." + fileExtension; var fileName = PathHelper.Combine(workingDir, assemblyInfoFile); @@ -166,7 +164,6 @@ public void ShouldReplaceAssemblyVersion(string fileExtension, string assemblyFi [TestCase("vb", "")] public void ShouldNotReplaceAssemblyVersionWhenVersionSchemeIsNone(string fileExtension, string assemblyFileContent) { - var workingDir = Path.GetTempPath(); var assemblyInfoFile = "AssemblyInfo." + fileExtension; var fileName = PathHelper.Combine(workingDir, assemblyInfoFile); @@ -185,7 +182,6 @@ public void ShouldNotReplaceAssemblyVersionWhenVersionSchemeIsNone(string fileEx [TestCase("vb", "\r\n\r\n")] public void ShouldReplaceAssemblyVersionInRelativePath(string fileExtension, string assemblyFileContent) { - var workingDir = Path.GetTempPath(); var assemblyInfoFile = PathHelper.Combine("Project", "src", "Properties", "AssemblyInfo." + fileExtension); var fileName = PathHelper.Combine(workingDir, assemblyInfoFile); @@ -206,7 +202,6 @@ public void ShouldReplaceAssemblyVersionInRelativePath(string fileExtension, str [TestCase("vb", "\r\n\r\n")] public void ShouldReplaceAssemblyVersionInRelativePathWithWhiteSpace(string fileExtension, string assemblyFileContent) { - var workingDir = Path.GetTempPath(); var assemblyInfoFile = PathHelper.Combine("Project", "src", "Properties", "AssemblyInfo." + fileExtension); var fileName = PathHelper.Combine(workingDir, assemblyInfoFile); @@ -227,7 +222,6 @@ public void ShouldReplaceAssemblyVersionInRelativePathWithWhiteSpace(string file [TestCase("vb", "\r\n\r\n")] public void ShouldReplaceAssemblyVersionWithStar(string fileExtension, string assemblyFileContent) { - var workingDir = Path.GetTempPath(); var assemblyInfoFile = "AssemblyInfo." + fileExtension; var fileName = PathHelper.Combine(workingDir, assemblyInfoFile); @@ -248,7 +242,6 @@ public void ShouldReplaceAssemblyVersionWithStar(string fileExtension, string as [TestCase("vb", "\r\n\r\n")] public void ShouldReplaceAssemblyVersionWithAttributeSuffix(string fileExtension, string assemblyFileContent) { - var workingDir = Path.GetTempPath(); var assemblyInfoFile = "AssemblyInfo." + fileExtension; var fileName = PathHelper.Combine(workingDir, assemblyInfoFile); @@ -272,7 +265,6 @@ public void ShouldReplaceAssemblyVersionWithAttributeSuffix(string fileExtension [TestCase("vb")] public void ShouldAddAssemblyVersionIfMissingFromInfoFile(string fileExtension) { - var workingDir = Path.GetTempPath(); var assemblyInfoFile = "AssemblyInfo." + fileExtension; var fileName = PathHelper.Combine(workingDir, assemblyInfoFile); @@ -293,7 +285,6 @@ public void ShouldAddAssemblyVersionIfMissingFromInfoFile(string fileExtension) [TestCase("vb", "\r\n\r\n")] public void ShouldReplaceAlreadySubstitutedValues(string fileExtension, string assemblyFileContent) { - var workingDir = Path.GetTempPath(); var assemblyInfoFile = "AssemblyInfo." + fileExtension; var fileName = PathHelper.Combine(workingDir, assemblyInfoFile); @@ -314,7 +305,6 @@ public void ShouldReplaceAlreadySubstitutedValues(string fileExtension, string a [TestCase("vb", "\r\n\r\n")] public void ShouldReplaceAssemblyVersionWhenCreatingAssemblyVersionFileAndEnsureAssemblyInfo(string fileExtension, string assemblyFileContent) { - var workingDir = Path.GetTempPath(); var assemblyInfoFile = "AssemblyInfo." + fileExtension; var fileName = PathHelper.Combine(workingDir, assemblyInfoFile); @@ -335,7 +325,6 @@ public void ShouldReplaceAssemblyVersionWhenCreatingAssemblyVersionFileAndEnsure [TestCase("vb", "\r\n\r\n")] public void ShouldReplaceAssemblyVersionInRelativePathWithVariables(string fileExtension, string assemblyFileContent) { - var workingDir = Path.GetTempPath(); var assemblyInfoFile = PathHelper.Combine("Project", "src", "Properties", "AssemblyInfo." + fileExtension); var fileName = PathHelper.Combine(workingDir, assemblyInfoFile); @@ -356,7 +345,6 @@ public void ShouldReplaceAssemblyVersionInRelativePathWithVariables(string fileE [TestCase("vb", "\r\n\r\n")] public void ShouldReplaceAssemblyVersionInRelativePathWithVariablesAndWhiteSpace(string fileExtension, string assemblyFileContent) { - var workingDir = Path.GetTempPath(); var assemblyInfoFile = PathHelper.Combine("Project", "src", "Properties", "AssemblyInfo." + fileExtension); var fileName = PathHelper.Combine(workingDir, assemblyInfoFile); @@ -377,7 +365,6 @@ public void ShouldReplaceAssemblyVersionInRelativePathWithVariablesAndWhiteSpace [TestCase("vb", "\r\n")] public void ShouldAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFile(string fileExtension, string assemblyFileContent) { - var workingDir = Path.GetTempPath(); var assemblyInfoFile = "AssemblyInfo." + fileExtension; var fileName = PathHelper.Combine(workingDir, assemblyInfoFile); @@ -396,7 +383,6 @@ public void ShouldAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFile [TestCase("vb", "\r\n\r\n' comment\r\n")] public void Issue1183ShouldAddFSharpAssemblyInformationalVersionBesideOtherAttributes(string fileExtension, string assemblyFileContent) { - var workingDir = Path.GetTempPath(); var assemblyInfoFile = "AssemblyInfo." + fileExtension; var fileName = PathHelper.Combine(workingDir, assemblyInfoFile); @@ -415,7 +401,6 @@ public void Issue1183ShouldAddFSharpAssemblyInformationalVersionBesideOtherAttri [TestCase("vb", "")] public void ShouldNotAddAssemblyInformationalVersionWhenVersionSchemeIsNone(string fileExtension, string assemblyFileContent) { - var workingDir = Path.GetTempPath(); var assemblyInfoFile = "AssemblyInfo." + fileExtension; var fileName = PathHelper.Combine(workingDir, assemblyInfoFile); @@ -436,13 +421,7 @@ private void VerifyAssemblyInfoFile( Action? verify = null) { this.fileSystem = Substitute.For(); - var version = new SemanticVersion - { - BuildMetaData = new("versionSourceHash", 3, "foo", "hash", "shortHash", DateTimeOffset.Now, 0), - Major = 2, - Minor = 3, - Patch = 1 - }; + var version = new SemanticVersion { BuildMetaData = new("versionSourceHash", 3, "foo", "hash", "shortHash", DateTimeOffset.Now, 0), Major = 2, Minor = 3, Patch = 1 }; this.fileSystem.Exists(fileName).Returns(true); this.fileSystem.ReadAllText(fileName).Returns(assemblyFileContent); diff --git a/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs b/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs index eed8929088..84e0180350 100644 --- a/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs +++ b/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs @@ -16,7 +16,7 @@ public class FormatArgumentTests : TestBase [TestCase("{Major}.{Minor}.{Patch}.{PreReleaseTag}", "1.1.0.foo.1")] public void ShouldOutputFormatTests(string format, string expectedValue) { - var fixture = CreateTestRepository(); + using var fixture = CreateTestRepository(); var consoleBuilder = new StringBuilder(); IConsole consoleAdapter = new TestConsoleAdapter(consoleBuilder); @@ -49,7 +49,7 @@ public void ShouldOutputFormatTests(string format, string expectedValue) [TestCase("{Major}.{Minor}.{Patch}.{env:CustomVar}", "1.1.0.foo")] public void ShouldOutputFormatWithEnvironmentVariablesTests(string format, string expectedValue) { - var fixture = CreateTestRepository(); + using var fixture = CreateTestRepository(); var consoleBuilder = new StringBuilder(); IConsole console = new TestConsoleAdapter(consoleBuilder); IEnvironment environment = new TestEnvironment(); diff --git a/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs b/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs index ddcdac7477..54a250d84d 100644 --- a/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs +++ b/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs @@ -19,7 +19,7 @@ public class GitVersionInfoGeneratorTests : TestBase [TestCase("vb")] public void ShouldCreateFile(string fileExtension) { - var directory = Path.GetTempPath(); + var directory = Path.Combine(PathHelper.GetTempPath(), "GitVersionInfoGeneratorTests", Guid.NewGuid().ToString()); var fileName = "GitVersionInformation.g." + fileExtension; var fullPath = PathHelper.Combine(directory, fileName); @@ -44,5 +44,7 @@ public void ShouldCreateFile(string fileExtension) generator.Execute(variables, new(directory, fileName, fileExtension)); fileSystem.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved", fileExtension))); + + DirectoryHelper.DeleteDirectory(directory); } } diff --git a/src/GitVersion.Output.Tests/Output/ProjectFileUpdaterTests.cs b/src/GitVersion.Output.Tests/Output/ProjectFileUpdaterTests.cs index 38b1dc6ca1..9a3d6b5790 100644 --- a/src/GitVersion.Output.Tests/Output/ProjectFileUpdaterTests.cs +++ b/src/GitVersion.Output.Tests/Output/ProjectFileUpdaterTests.cs @@ -259,12 +259,13 @@ public void UpdateProjectXmlVersionElementWithMultipleVersionElementsLastOneIsMo ")] public void UpdateProjectFileAddsVersionToFile(string xml) { - var fileName = PathHelper.Combine(Path.GetTempPath(), "TestProject.csproj"); + var workingDirectory = PathHelper.GetTempPath(); + var fileName = PathHelper.Combine(workingDirectory, "TestProject.csproj"); VerifyAssemblyInfoFile(xml, fileName, AssemblyVersioningScheme.MajorMinorPatch, (fs, variables) => { using var projFileUpdater = new ProjectFileUpdater(this.log, fs); - projFileUpdater.Execute(variables, new(Path.GetTempPath(), false, fileName)); + projFileUpdater.Execute(variables, new(workingDirectory, false, fileName)); const string expectedXml = @" diff --git a/src/GitVersion.Output.Tests/Output/WixFileTests.cs b/src/GitVersion.Output.Tests/Output/WixFileTests.cs index 2efa241867..4d41fec15b 100644 --- a/src/GitVersion.Output.Tests/Output/WixFileTests.cs +++ b/src/GitVersion.Output.Tests/Output/WixFileTests.cs @@ -12,13 +12,20 @@ namespace GitVersion.Core.Tests; [Parallelizable(ParallelScope.None)] internal class WixFileTests : TestBase { + private string workingDir; + + [OneTimeSetUp] + public void OneTimeSetUp() => workingDir = PathHelper.Combine(PathHelper.GetTempPath(), "WixFileTests"); + + [OneTimeTearDown] + public void OneTimeTearDown() => DirectoryHelper.DeleteDirectory(workingDir); + [SetUp] public void Setup() => ShouldlyConfiguration.ShouldMatchApprovedDefaults.LocateTestMethodUsingAttribute(); [Test] public void UpdateWixVersionFile() { - var workingDir = Path.GetTempPath(); var semVer = new SemanticVersion { Major = 1, @@ -58,7 +65,6 @@ public void UpdateWixVersionFile() [Test] public void UpdateWixVersionFileWhenFileAlreadyExists() { - var workingDir = Path.GetTempPath(); var semVer = new SemanticVersion { Major = 1, diff --git a/src/GitVersion.Output/GitVersionInfo/GitVersionInfoGenerator.cs b/src/GitVersion.Output/GitVersionInfo/GitVersionInfoGenerator.cs index 5d4c263054..2756280988 100644 --- a/src/GitVersion.Output/GitVersionInfo/GitVersionInfoGenerator.cs +++ b/src/GitVersion.Output/GitVersionInfo/GitVersionInfoGenerator.cs @@ -56,7 +56,9 @@ public void Execute(GitVersionVariables variables, GitVersionInfoContext context this.fileSystem.WriteAllText(filePath, fileContents); } - string getTargetNamespace(string fileExtension) => fileExtension switch + return; + + string getTargetNamespace(string extension) => extension switch { ".vb" => context.TargetNamespace ?? "Global", ".cs" => context.TargetNamespace != null ? $"{PathHelper.NewLine}namespace {context.TargetNamespace};" : "", diff --git a/src/GitVersion.Testing/Fixtures/BaseGitFlowRepositoryFixture.cs b/src/GitVersion.Testing/Fixtures/BaseGitFlowRepositoryFixture.cs index 650d09a562..2775194b88 100644 --- a/src/GitVersion.Testing/Fixtures/BaseGitFlowRepositoryFixture.cs +++ b/src/GitVersion.Testing/Fixtures/BaseGitFlowRepositoryFixture.cs @@ -11,15 +11,7 @@ public class BaseGitFlowRepositoryFixture : EmptyRepositoryFixture /// Creates a repo with a develop branch off main which is a single commit ahead of main /// Main will be tagged with the initial version before branching develop /// - public BaseGitFlowRepositoryFixture(string initialVersion) : this(initialVersion, "main") - { - } - - /// - /// Creates a repo with a develop branch off main which is a single commit ahead of main - /// Main will be tagged with the initial version before branching develop - /// - public BaseGitFlowRepositoryFixture(string initialVersion, string branchName) : + public BaseGitFlowRepositoryFixture(string initialVersion, string branchName = "main") : this(r => r.MakeATaggedCommit(initialVersion), branchName) { } @@ -28,15 +20,7 @@ public BaseGitFlowRepositoryFixture(string initialVersion, string branchName) : /// Creates a repo with a develop branch off main which is a single commit ahead of main /// The initial setup actions will be performed before branching develop /// - public BaseGitFlowRepositoryFixture(Action initialMainAction) : this(initialMainAction, "main") - { - } - - /// - /// Creates a repo with a develop branch off main which is a single commit ahead of main - /// The initial setup actions will be performed before branching develop - /// - public BaseGitFlowRepositoryFixture(Action initialMainAction, string branchName) : + public BaseGitFlowRepositoryFixture(Action initialMainAction, string branchName = "main") : base(branchName) => SetupRepo(initialMainAction); private void SetupRepo(Action initialMainAction) diff --git a/src/GitVersion.Testing/Fixtures/EmptyRepositoryFixture.cs b/src/GitVersion.Testing/Fixtures/EmptyRepositoryFixture.cs index b345b887e3..b864b31247 100644 --- a/src/GitVersion.Testing/Fixtures/EmptyRepositoryFixture.cs +++ b/src/GitVersion.Testing/Fixtures/EmptyRepositoryFixture.cs @@ -1,18 +1,3 @@ -using LibGit2Sharp; - namespace GitVersion.Testing; -public class EmptyRepositoryFixture(string branchName) : RepositoryFixtureBase(path => CreateNewRepository(path, branchName)) -{ - public EmptyRepositoryFixture() : this("main") - { - } - - private static Repository CreateNewRepository(string path, string branchName) - { - Init(path, branchName); - Console.WriteLine("Created git repository at '{0}'", path); - - return new Repository(path); - } -} +public class EmptyRepositoryFixture(string branchName = "main") : RepositoryFixtureBase(path => CreateNewRepository(path, branchName)); diff --git a/src/GitVersion.Testing/Fixtures/RemoteRepositoryFixture.cs b/src/GitVersion.Testing/Fixtures/RemoteRepositoryFixture.cs index 9ba142908d..57c3a53f3e 100644 --- a/src/GitVersion.Testing/Fixtures/RemoteRepositoryFixture.cs +++ b/src/GitVersion.Testing/Fixtures/RemoteRepositoryFixture.cs @@ -10,14 +10,10 @@ namespace GitVersion.Testing; public class RemoteRepositoryFixture : RepositoryFixtureBase { public RemoteRepositoryFixture(Func builder) - : base(builder) => CreateLocalRepository(); + : base(builder) => LocalRepositoryFixture = CloneRepository(); - public RemoteRepositoryFixture() : this("main") - { - } - - public RemoteRepositoryFixture(string branchName) - : this(path => CreateNewRepository(path, branchName)) + public RemoteRepositoryFixture(string branchName = "main") + : this(path => CreateNewRepository(path, branchName, 5)) { } @@ -26,18 +22,6 @@ public RemoteRepositoryFixture(string branchName) /// public LocalRepositoryFixture LocalRepositoryFixture { get; private set; } - private static Repository CreateNewRepository(string path, string branchName) - { - Init(path, branchName); - Console.WriteLine("Created git repository at '{0}'", path); - - var repository = new Repository(path); - repository.MakeCommits(5); - return repository; - } - - private void CreateLocalRepository() => LocalRepositoryFixture = CloneRepository(); - /// /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// @@ -47,7 +31,6 @@ protected override void Dispose(bool disposing) { LocalRepositoryFixture.Dispose(); } - base.Dispose(disposing); } } diff --git a/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs b/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs index 79375ff324..74aa84e7ff 100644 --- a/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs +++ b/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs @@ -10,13 +10,13 @@ namespace GitVersion.Testing; public abstract class RepositoryFixtureBase : IDisposable { protected RepositoryFixtureBase(Func repositoryBuilder) - : this(repositoryBuilder(PathHelper.GetTempPath())) + : this(repositoryBuilder(PathHelper.GetRepositoryTempPath())) { } protected RepositoryFixtureBase(Repository repository) { - this.SequenceDiagram = new SequenceDiagram(); + SequenceDiagram = new(); Repository = repository ?? throw new ArgumentNullException(nameof(repository)); Repository.Config.Set("user.name", "Test"); Repository.Config.Set("user.email", "test@email.com"); @@ -45,15 +45,18 @@ protected virtual void Dispose(bool disposing) } Repository.Dispose(); + var directoryPath = Path.GetFileName(RepositoryPath); try { + Console.WriteLine("Cleaning up repository path at {0}", directoryPath); DirectoryHelper.DeleteDirectory(RepositoryPath); + Console.WriteLine("Cleaned up repository path at {0}", directoryPath); } catch (Exception e) { - Console.WriteLine("Failed to clean up repository path at {0}. Received exception: {1}", RepositoryPath, - e.Message); + Console.WriteLine("Failed to clean up repository path at {0}. Received exception: {1}", directoryPath, e.Message); + // throw; } this.SequenceDiagram.End(); @@ -66,7 +69,7 @@ protected virtual void Dispose(bool disposing) public void Remove(string branch) => Repository.Branches.Remove(branch); - public static void Init(string path, string branchName) => GitTestExtensions.ExecuteGitCmd($"init {path} -b {branchName}"); + public static void Init(string path, string branchName = "main") => GitTestExtensions.ExecuteGitCmd($"init {path} -b {branchName}"); public string MakeATaggedCommit(string tag) { @@ -134,11 +137,25 @@ public void MergeTo(string branchName, bool removeBranchAfterMerging = false) /// public LocalRepositoryFixture CloneRepository() { - var localPath = PathHelper.GetTempPath(); + var localPath = PathHelper.GetRepositoryTempPath(); Repository.Clone(RepositoryPath, localPath); + Console.WriteLine($"Cloned repository to '{localPath}' from '{RepositoryPath}'"); return new LocalRepositoryFixture(new Repository(localPath)); } + protected static Repository CreateNewRepository(string path, string branchName, int commits = 0) + { + Init(path, branchName); + Console.WriteLine("Created git repository at '{0}'", path); + + var repository = new Repository(path); + if (commits > 0) + { + repository.MakeCommits(commits); + } + return repository; + } + /// /// Pulls with a depth of 1 and prunes all older commits, making the repository shallow. /// From 23eb41ac4fe18e2ed573cc00ac825e5f71183a60 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 19 Mar 2024 08:07:07 +0100 Subject: [PATCH 038/544] cleanup --- .../IntegrationTests/DevelopScenarios.cs | 4 +- .../IntegrationTests/MainScenarios.cs | 6 +- .../IntegrationTests/OtherBranchScenarios.cs | 2 +- .../IntegrationTests/OtherScenarios.cs | 8 +-- .../TrunkBasedDevelopmentScenarios.cs | 69 +------------------ 5 files changed, 12 insertions(+), 77 deletions(-) diff --git a/src/GitVersion.Core.Tests/IntegrationTests/DevelopScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/DevelopScenarios.cs index 760d84914f..1cf52387d6 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/DevelopScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/DevelopScenarios.cs @@ -452,7 +452,7 @@ public void WhenPreventIncrementOfMergedBranchVersionIsSetToFalseForDevelopCommi [Test] public void NextVersionShouldBeConsideredOnTheMainBranch() { - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); var configurationBuilder = GitFlowConfigurationBuilder.New; @@ -485,7 +485,7 @@ public void NextVersionShouldBeConsideredOnTheMainBranch() [Test] public void PreventDecrementationOfVersionsOnTheMainBranch() { - using EmptyRepositoryFixture fixture = new("develop"); + using var fixture = new EmptyRepositoryFixture("develop"); var configurationBuilder = GitFlowConfigurationBuilder.New; diff --git a/src/GitVersion.Core.Tests/IntegrationTests/MainScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/MainScenarios.cs index fcc4da1a08..6278afdfea 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/MainScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/MainScenarios.cs @@ -250,7 +250,7 @@ public void AreTagsNotAdheringToTagPrefixIgnored() [Test] public void NextVersionShouldBeConsideredOnTheDevelopmentBranch() { - using EmptyRepositoryFixture fixture = new("develop"); + using var fixture = new EmptyRepositoryFixture("develop"); var configurationBuilder = GitFlowConfigurationBuilder.New; @@ -283,7 +283,7 @@ public void NextVersionShouldBeConsideredOnTheDevelopmentBranch() [Test] public void PreventDecrementationOfVersionsOnTheDevelopmentBranch() { - using EmptyRepositoryFixture fixture = new("develop"); + using var fixture = new EmptyRepositoryFixture("develop"); var configurationBuilder = GitFlowConfigurationBuilder.New; @@ -390,7 +390,7 @@ public void PreventDecrementationOfVersionsOnTheDevelopmentBranch() [TestCase(false, "1.0.1-4")] public void TrackMergeMessageShouldBeConsideredOnTheMainBranch(bool trackMergeMessage, string expectedSemanticVersion) { - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); var configuration = GitFlowConfigurationBuilder.New .WithBranch("main", branchBuilder => branchBuilder.WithTrackMergeMessage(trackMergeMessage)) diff --git a/src/GitVersion.Core.Tests/IntegrationTests/OtherBranchScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/OtherBranchScenarios.cs index ba1130977f..2af65b65a1 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/OtherBranchScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/OtherBranchScenarios.cs @@ -65,7 +65,7 @@ public string WhenTaggingACommitAsPreRelease(string tagPrefix, string? label, st .WithBranch("main", _ => _.WithLabel(label).WithDeploymentMode(DeploymentMode.ManualDeployment)) .Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit($"{tagPrefix}1.0.0"); fixture.MakeACommit("+semver:major"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs index 2b387ec7bc..f0b0aac60e 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs @@ -1005,7 +1005,7 @@ public void ShouldProvideTheCorrectVersionEvenIfPreReleaseLabelExistsInTheGitTag .WithIsMainBranch(false) ).Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit(); // ✅ succeeds as expected @@ -1222,7 +1222,7 @@ public void EnsurePreventIncrementWhenCurrentCommitTaggedOnReleaseBranchAndIncre [Test] public void EnsureVersionAfterMainIsMergedBackToDevelopIsCorrect() { - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("1.0.0"); fixture.BranchTo("develop"); @@ -1256,7 +1256,7 @@ public void EnsureVersionAfterMainIsMergedBackToDevelopIsCorrectForTrunkBased(bo .WithVersionStrategy(VersionStrategies.TrunkBased) .Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("1.0.0"); @@ -1282,7 +1282,7 @@ public void EnsureVersionAfterMainIsMergedBackToDevelopIsCorrectForGitFlow(bool { var configuration = GitFlowConfigurationBuilder.New.Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.ApplyTag("1.0.0"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/TrunkBasedDevelopmentScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/TrunkBasedDevelopmentScenarios.cs index e3998d6179..6e62cdf6cd 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/TrunkBasedDevelopmentScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/TrunkBasedDevelopmentScenarios.cs @@ -112,7 +112,7 @@ public void VerifyPullRequestsActLikeContinuousDeliveryOnFeatureBranch() { var configuration = GetConfigurationBuilder().Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("1"); @@ -136,7 +136,7 @@ public void VerifyPullRequestsActLikeContinuousDeliveryOnHotfixBranch() { var configuration = GetConfigurationBuilder().Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("1"); @@ -155,41 +155,6 @@ public void VerifyPullRequestsActLikeContinuousDeliveryOnHotfixBranch() fixture.AssertFullSemver("1.0.2-PullRequest8.3", configuration); } - [Test, Ignore("Support of multiple tunks are not implemented at the moment.")] - public void SupportBranches() - { - var configuration = GetConfigurationBuilder().Build(); - - using var fixture = new EmptyRepositoryFixture(); - fixture.Repository.MakeACommit("1"); - fixture.MakeATaggedCommit("1.0.0"); - fixture.MakeACommit(); // 1.0.1 - fixture.MakeACommit(); // 1.0.2 - fixture.AssertFullSemver("1.0.2", configuration); - - fixture.BranchTo("support/1.0", "support10"); - fixture.AssertFullSemver("1.0.2", configuration); - - // Move main on - fixture.Checkout(MainBranch); - fixture.MakeACommit("+semver: major"); // 2.0.0 (on main) - fixture.AssertFullSemver("2.0.0", configuration); - - // Continue on support/1.0 - fixture.Checkout("support/1.0"); - fixture.MakeACommit(); // 1.0.3 - fixture.MakeACommit(); // 1.0.4 - fixture.AssertFullSemver("1.0.4", configuration); - fixture.BranchTo("feature/foo", "foo"); - fixture.AssertFullSemver("1.0.5-foo.0", configuration); - fixture.MakeACommit(); - fixture.AssertFullSemver("1.0.5-foo.1", configuration); - fixture.MakeACommit(); - fixture.AssertFullSemver("1.0.5-foo.2", configuration); - fixture.Repository.CreatePullRequestRef("feature/foo", "support/1.0", prNumber: 7, normalise: true); - fixture.AssertFullSemver("1.0.5-PullRequest7.3", configuration); - } - [Test] public void VerifyForwardMerge() { @@ -221,36 +186,6 @@ public void VerifyForwardMerge() fixture.AssertFullSemver("1.0.3-foo.3", configuration); } - [Test, Ignore("Support of multiple tunks are not implemented at the moment.")] - public void VerifySupportForwardMerge() - { - var configuration = GetConfigurationBuilder().Build(); - - using var fixture = new EmptyRepositoryFixture(); - fixture.Repository.MakeACommit("1"); - fixture.MakeATaggedCommit("1.0.0"); - fixture.MakeACommit(); // 1.0.1 - - fixture.BranchTo("support/1.0", "support10"); - fixture.MakeACommit(); - fixture.MakeACommit(); - - fixture.Checkout(MainBranch); - fixture.MakeACommit("+semver: minor"); - fixture.AssertFullSemver("1.1.0", configuration); - fixture.MergeNoFF("support/1.0"); - fixture.AssertFullSemver("1.1.1", configuration); - fixture.MakeACommit(); - fixture.AssertFullSemver("1.1.2", configuration); - fixture.Checkout("support/1.0"); - fixture.AssertFullSemver("1.0.3", configuration); - - fixture.BranchTo("feature/foo", "foo"); - fixture.MakeACommit(); - fixture.MakeACommit(); - fixture.AssertFullSemver("1.0.4-foo.2", configuration); // TODO This probably should be 1.0.5 - } - [Test] public void VerifyDevelopTracksMainVersion() { From 6d515ac298f1f5565726ee898439722187a2fa80 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 19 Mar 2024 17:00:41 +0100 Subject: [PATCH 039/544] added merge_group workflow --- .github/workflows/ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7b5b447e00..a85688e8db 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,9 @@ on: paths: - '**' - '!docs/**' - + merge_group: + types: [checks_requested] + repository_dispatch: types: [ ci-release ] From 3b45620de1f966d721d68032ef791088e665a624 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Mar 2024 16:15:00 +0000 Subject: [PATCH 040/544] (deps): Bump LibGit2Sharp from 0.29.0 to 0.30.0 Bumps [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) from 0.29.0 to 0.30.0. - [Release notes](https://github.com/libgit2/libgit2sharp/releases) - [Changelog](https://github.com/libgit2/libgit2sharp/blob/master/CHANGES.md) - [Commits](https://github.com/libgit2/libgit2sharp/compare/0.29.0...0.30.0) --- updated-dependencies: - dependency-name: LibGit2Sharp dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 3e6775039c..f94183a6f0 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -4,7 +4,7 @@ - + From 2d6b570a20ce042b3909ef9554c1a9dc23553daf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Mar 2024 16:02:17 +0000 Subject: [PATCH 041/544] (new-cli deps): Bump LibGit2Sharp from 0.29.0 to 0.30.0 in /new-cli Bumps [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) from 0.29.0 to 0.30.0. - [Release notes](https://github.com/libgit2/libgit2sharp/releases) - [Changelog](https://github.com/libgit2/libgit2sharp/blob/master/CHANGES.md) - [Commits](https://github.com/libgit2/libgit2sharp/compare/0.29.0...0.30.0) --- updated-dependencies: - dependency-name: LibGit2Sharp dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 301ca9fe04..04c191d9da 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -5,7 +5,7 @@ - + From d12e2214de023098d4c47a4fb7dcb193756f62e1 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 20 Mar 2024 14:53:18 +0100 Subject: [PATCH 042/544] cleanup --- .../ConfigurationFileLocatorTests.cs | 68 +++++++------------ .../ConfigurationProviderTests.cs | 62 ++++++++--------- .../Configuration/Extensions.cs | 20 ++++++ .../Output/GitVersionInfoGeneratorTests.cs | 2 +- 4 files changed, 71 insertions(+), 81 deletions(-) create mode 100644 src/GitVersion.Configuration.Tests/Configuration/Extensions.cs diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs index ba988d2fba..918333c5bd 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs @@ -1,6 +1,6 @@ using GitVersion.Configuration; +using GitVersion.Configuration.Tests.Configuration; using GitVersion.Core.Tests.Helpers; -using GitVersion.Extensions; using GitVersion.Helpers; using GitVersion.Logging; using Microsoft.Extensions.DependencyInjection; @@ -22,8 +22,8 @@ public class DefaultConfigFileLocatorTests : TestBase [SetUp] public void Setup() { - this.repoPath = Path.Combine(PathHelper.GetTempPath(), "MyGitRepo"); - this.workingPath = Path.Combine(PathHelper.GetTempPath(), "MyGitRepo", "Working"); + this.repoPath = PathHelper.Combine(PathHelper.GetTempPath(), "MyGitRepo"); + this.workingPath = PathHelper.Combine(PathHelper.GetTempPath(), "MyGitRepo", "Working"); var options = Options.Create(new GitVersionOptions { WorkingDirectory = repoPath }); var sp = ConfigureServices(services => services.AddSingleton(options)); @@ -41,8 +41,8 @@ public void Setup() [TestCase(ConfigurationFileLocator.DefaultAlternativeFileName, ConfigurationFileLocator.DefaultAlternativeFileName)] public void ThrowsExceptionOnAmbiguousConfigFileLocation(string repoConfigFile, string workingConfigFile) { - var repositoryConfigFilePath = SetupConfigFileContent(string.Empty, repoConfigFile, this.repoPath); - var workingDirectoryConfigFilePath = SetupConfigFileContent(string.Empty, workingConfigFile, this.workingPath); + var repositoryConfigFilePath = fileSystem.SetupConfigFile(string.Empty, this.repoPath, repoConfigFile); + var workingDirectoryConfigFilePath = fileSystem.SetupConfigFile(string.Empty, this.workingPath, workingConfigFile); var exception = Should.Throw(() => this.configFileLocator.Verify(this.workingPath, this.repoPath)); @@ -54,29 +54,17 @@ public void ThrowsExceptionOnAmbiguousConfigFileLocation(string repoConfigFile, [TestCase(ConfigurationFileLocator.DefaultAlternativeFileName)] public void NoWarnOnGitVersionYmlFile(string configurationFile) { - SetupConfigFileContent(string.Empty, configurationFile, this.repoPath); + fileSystem.SetupConfigFile(string.Empty, this.repoPath, configurationFile); Should.NotThrow(() => this.configurationProvider.ProvideForDirectory(this.repoPath)); } [Test] public void NoWarnOnNoGitVersionYmlFile() => Should.NotThrow(() => this.configurationProvider.ProvideForDirectory(this.repoPath)); - - private string SetupConfigFileContent(string text, string fileName, string path) - { - var fullPath = PathHelper.Combine(path, fileName); - this.fileSystem.WriteAllText(fullPath, text); - - return fullPath; - } } public class NamedConfigurationFileLocatorTests : TestBase { - private static readonly string DefaultRepoPath = Path.Combine(PathHelper.GetTempPath(), "MyGitRepo"); - private static readonly string DefaultWorkingPath = Path.Combine(PathHelper.GetTempPath(), "MyGitRepo", "Working"); - private const string myConfigYaml = "my-config.yaml"; - private string repoPath; private string workingPath; private IFileSystem fileSystem; @@ -86,9 +74,9 @@ public class NamedConfigurationFileLocatorTests : TestBase [SetUp] public void Setup() { - this.gitVersionOptions = new GitVersionOptions { ConfigurationInfo = { ConfigurationFile = myConfigYaml } }; - this.repoPath = DefaultRepoPath; - this.workingPath = DefaultWorkingPath; + this.gitVersionOptions = new() { ConfigurationInfo = { ConfigurationFile = "my-config.yaml" } }; + this.repoPath = PathHelper.Combine(PathHelper.GetTempPath(), "MyGitRepo"); + this.workingPath = PathHelper.Combine(PathHelper.GetTempPath(), "MyGitRepo", "Working"); ShouldlyConfiguration.ShouldMatchApprovedDefaults.LocateTestMethodUsingAttribute(); } @@ -100,25 +88,25 @@ public void ThrowsExceptionOnAmbiguousConfigFileLocation() this.configFileLocator = sp.GetRequiredService(); this.fileSystem = sp.GetRequiredService(); - var repositoryConfigFilePath = SetupConfigFileContent(string.Empty, path: this.repoPath); - var workingDirectoryConfigFilePath = SetupConfigFileContent(string.Empty, path: this.workingPath); + var repositoryConfigFilePath = SetupConfigFile(string.Empty, path: this.repoPath); + var workDirConfigFilePath = SetupConfigFile(string.Empty, path: this.workingPath); var exception = Should.Throw(() => this.configFileLocator.Verify(this.workingPath, this.repoPath)); - var expectedMessage = $"Ambiguous configuration file selection from '{workingDirectoryConfigFilePath}' and '{repositoryConfigFilePath}'"; + var expectedMessage = $"Ambiguous configuration file selection from '{workDirConfigFilePath}' and '{repositoryConfigFilePath}'"; exception.Message.ShouldBe(expectedMessage); } [Test] public void DoNotThrowWhenWorkingAndRepoPathsAreSame() { - this.workingPath = DefaultRepoPath; + this.workingPath = this.repoPath; var sp = GetServiceProvider(this.gitVersionOptions); this.configFileLocator = sp.GetRequiredService(); this.fileSystem = sp.GetRequiredService(); - SetupConfigFileContent(string.Empty, path: this.workingPath); + SetupConfigFile(string.Empty, path: this.workingPath); Should.NotThrow(() => this.configFileLocator.Verify(this.workingPath, this.repoPath)); } @@ -126,13 +114,13 @@ public void DoNotThrowWhenWorkingAndRepoPathsAreSame() [Test] public void DoNotThrowWhenWorkingAndRepoPathsAreSame_WithDifferentCasing() { - this.workingPath = DefaultRepoPath.ToLower(); + this.workingPath = this.repoPath.ToLower(); var sp = GetServiceProvider(this.gitVersionOptions); this.configFileLocator = sp.GetRequiredService(); this.fileSystem = sp.GetRequiredService(); - SetupConfigFileContent(string.Empty, path: this.workingPath); + SetupConfigFile(string.Empty, path: this.workingPath); Should.NotThrow(() => this.configFileLocator.Verify(this.workingPath, this.repoPath)); } @@ -140,14 +128,14 @@ public void DoNotThrowWhenWorkingAndRepoPathsAreSame_WithDifferentCasing() [Test] public void DoNotThrowWhenConfigFileIsInSubDirectoryOfRepoPath() { - this.workingPath = DefaultRepoPath; + this.workingPath = this.repoPath; - this.gitVersionOptions = new GitVersionOptions { ConfigurationInfo = { ConfigurationFile = "./src/my-config.yaml" } }; + this.gitVersionOptions = new() { ConfigurationInfo = { ConfigurationFile = "./src/my-config.yaml" } }; var sp = GetServiceProvider(this.gitVersionOptions); this.configFileLocator = sp.GetRequiredService(); this.fileSystem = sp.GetRequiredService(); - SetupConfigFileContent(string.Empty, path: this.workingPath); + SetupConfigFile(string.Empty, path: this.workingPath); Should.NotThrow(() => this.configFileLocator.Verify(this.workingPath, this.repoPath)); } @@ -165,7 +153,7 @@ public void NoWarnOnCustomYmlFile() this.configFileLocator = sp.GetRequiredService(); this.fileSystem = sp.GetRequiredService(); - SetupConfigFileContent(string.Empty); + SetupConfigFile(string.Empty); var configurationProvider = (ConfigurationProvider)sp.GetRequiredService(); @@ -186,7 +174,7 @@ public void NoWarnOnCustomYmlFileOutsideRepoPath() this.configFileLocator = sp.GetRequiredService(); this.fileSystem = sp.GetRequiredService(); - SetupConfigFileContent(string.Empty, path: PathHelper.Combine(PathHelper.GetTempPath(), "unrelatedPath")); + SetupConfigFile(string.Empty, path: PathHelper.Combine(PathHelper.GetTempPath(), "unrelatedPath")); var configurationProvider = (ConfigurationProvider)sp.GetRequiredService(); @@ -209,18 +197,8 @@ public void ThrowsExceptionOnCustomYmlFileDoesNotExist() exception.Message.ShouldBe(expectedMessage); } - private string SetupConfigFileContent(string text, string? fileName = null, string? path = null) - { - if (fileName.IsNullOrEmpty()) - { - fileName = gitVersionOptions.ConfigurationInfo.ConfigurationFile; - } - var filePath = fileName; - if (!path.IsNullOrEmpty()) - filePath = PathHelper.Combine(path, filePath); - this.fileSystem.WriteAllText(filePath, text); - return filePath!; - } + private string SetupConfigFile(string text, string? path = null) + => this.fileSystem.SetupConfigFile(text, path, this.gitVersionOptions.ConfigurationInfo.ConfigurationFile!); private static IServiceProvider GetServiceProvider(GitVersionOptions gitVersionOptions, ILog? log = null) => ConfigureServices(services => diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs index 4564e74cbe..db8fcb2626 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs @@ -1,5 +1,6 @@ using System.Runtime.CompilerServices; using GitVersion.Configuration; +using GitVersion.Configuration.Tests.Configuration; using GitVersion.Core.Tests.Helpers; using GitVersion.Extensions; using GitVersion.Helpers; @@ -40,7 +41,7 @@ public void OverwritesDefaultsWithProvidedConfig() increment: Major mode: ContinuousDelivery label: dev"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.NextVersion.ShouldBe("2.0.0"); @@ -58,7 +59,7 @@ public void OverwritesDefaultsWithProvidedConfig() public void CombineVersionStrategyConfigNextAndTaggedCommit() { // Arrange - SetupConfigFileContent("strategies: [ConfiguredNextVersion, TaggedCommit]"); + fileSystem.SetupConfigFile("strategies: [ConfiguredNextVersion, TaggedCommit]", this.repoPath); // Act var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); @@ -75,7 +76,7 @@ public void CanRemoveLabel() branches: release: label: """""; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.NextVersion.ShouldBe("2.0.0"); @@ -90,7 +91,7 @@ public void RegexIsRequired() branches: bug: label: bugfix"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var ex = Should.Throw(() => this.configurationProvider.ProvideForDirectory(this.repoPath)); ex.Message.ShouldBe($"Branch configuration 'bug' is missing required configuration 'regex'{PathHelper.NewLine}" + "See https://gitversion.net/docs/reference/configuration for more info"); @@ -105,7 +106,7 @@ public void SourceBranchesValidationShouldFailWhenMatchingBranchConfigurationIsM regex: 'bug[/-]' label: bugfix source-branches: [notconfigured]"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var ex = Should.Throw(() => this.configurationProvider.ProvideForDirectory(this.repoPath)); ex.Message.ShouldBe($"Branch configuration 'bug' defines these 'source-branches' that are not configured: '[notconfigured]'{PathHelper.NewLine}" + "See https://gitversion.net/docs/reference/configuration for more info"); @@ -122,7 +123,7 @@ public void SourceBranchesValidationShouldSucceedForWellKnownBranches(string wel regex: 'bug[/-]' label: bugfix source-branches: [{wellKnownBranchKey}]"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.Branches["bug"].SourceBranches.ShouldBe(new List { wellKnownBranchKey }); @@ -138,7 +139,7 @@ public void CanProvideConfigForNewBranch() regex: 'bug[/-]' label: bugfix source-branches: []"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.Branches["bug"].RegularExpression.ShouldBe("bug[/-]"); @@ -149,7 +150,7 @@ public void CanProvideConfigForNewBranch() public void NextVersionCanBeInteger() { const string text = "next-version: 2"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.NextVersion.ShouldBe("2.0"); @@ -159,7 +160,7 @@ public void NextVersionCanBeInteger() public void NextVersionCanHaveEnormousMinorVersion() { const string text = "next-version: 2.118998723"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.NextVersion.ShouldBe("2.118998723"); @@ -169,7 +170,7 @@ public void NextVersionCanHaveEnormousMinorVersion() public void NextVersionCanHavePatch() { const string text = "next-version: 2.12.654651698"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.NextVersion.ShouldBe("2.12.654651698"); @@ -192,7 +193,7 @@ public void CanUpdateAssemblyInformationalVersioningScheme() assembly-file-versioning-scheme: MajorMinorPatch assembly-informational-format: '{NugetVersion}'"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.AssemblyVersioningScheme.ShouldBe(AssemblyVersioningScheme.MajorMinor); @@ -208,7 +209,7 @@ public void CanUpdateAssemblyInformationalVersioningSchemeWithMultipleVariables( assembly-file-versioning-scheme: MajorMinorPatch assembly-informational-format: '{Major}.{Minor}.{Patch}'"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.AssemblyVersioningScheme.ShouldBe(AssemblyVersioningScheme.MajorMinor); @@ -226,7 +227,7 @@ public void CanUpdateAssemblyInformationalVersioningSchemeWithFullSemVer() next-version: 5.3.0 branches: {}"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.AssemblyVersioningScheme.ShouldBe(AssemblyVersioningScheme.MajorMinorPatch); @@ -238,7 +239,7 @@ public void CanUpdateAssemblyInformationalVersioningSchemeWithFullSemVer() public void CanReadDefaultDocument() { const string text = ""; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.AssemblyVersioningScheme.ShouldBe(AssemblyVersioningScheme.MajorMinorPatch); configuration.AssemblyFileVersioningScheme.ShouldBe(AssemblyFileVersioningScheme.MajorMinorPatch); @@ -265,7 +266,7 @@ public void VerifyAliases() [Test] public void NoWarnOnGitVersionYmlFile() { - SetupConfigFileContent(string.Empty); + fileSystem.SetupConfigFile(string.Empty, this.repoPath); var stringLogger = string.Empty; void Action(string info) => stringLogger = info; @@ -286,15 +287,6 @@ public void NoWarnOnGitVersionYmlFile() stringLogger.Length.ShouldBe(0); } - private void SetupConfigFileContent(string text, string fileName = ConfigurationFileLocator.DefaultFileName) - => SetupConfigFileContent(text, fileName, this.repoPath); - - private void SetupConfigFileContent(string text, string fileName, string path) - { - var fullPath = PathHelper.Combine(path, fileName); - this.fileSystem.WriteAllText(fullPath, text); - } - [Test] public void ShouldUseSpecifiedSourceBranchesForDevelop() { @@ -305,7 +297,7 @@ public void ShouldUseSpecifiedSourceBranchesForDevelop() mode: ContinuousDeployment source-branches: ['develop'] label: dev"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.Branches["develop"].SourceBranches.ShouldBe(new List { "develop" }); @@ -320,7 +312,7 @@ public void ShouldUseDefaultSourceBranchesWhenNotSpecifiedForDevelop() develop: mode: ContinuousDeployment label: dev"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.Branches["develop"].SourceBranches.ShouldBe(new List()); @@ -336,7 +328,7 @@ public void ShouldUseSpecifiedSourceBranchesForFeature() mode: ContinuousDeployment source-branches: ['develop', 'release'] label: dev"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.Branches["feature"].SourceBranches.ShouldBe(new List { "develop", "release" }); @@ -351,7 +343,7 @@ public void ShouldUseDefaultSourceBranchesWhenNotSpecifiedForFeature() feature: mode: ContinuousDeployment label: dev"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.Branches["feature"].SourceBranches.ShouldBe( @@ -364,7 +356,7 @@ public void ShouldNotOverrideAnythingWhenOverrideConfigIsEmpty() const string text = @" next-version: 1.2.3 tag-prefix: custom-tag-prefix-from-yml"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var expectedConfig = GitFlowConfigurationBuilder.New .WithNextVersion("1.2.3") @@ -402,7 +394,7 @@ public void ShouldNotOverrideAnythingWhenOverrideConfigIsEmpty() public void ShouldUseDefaultTagPrefixWhenNotSetInConfigFile() { const string text = ""; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.TagPrefix.ShouldBe(ConfigurationConstants.DefaultTagPrefix); @@ -412,7 +404,7 @@ public void ShouldUseDefaultTagPrefixWhenNotSetInConfigFile() public void ShouldUseTagPrefixFromConfigFileWhenProvided() { const string text = "tag-prefix: custom-tag-prefix-from-yml"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.TagPrefix.ShouldBe("custom-tag-prefix-from-yml"); @@ -422,7 +414,7 @@ public void ShouldUseTagPrefixFromConfigFileWhenProvided() public void ShouldOverrideTagPrefixWithOverrideConfigValue([Values] bool tagPrefixSetAtYmlFile) { var text = tagPrefixSetAtYmlFile ? "tag-prefix: custom-tag-prefix-from-yml" : ""; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var overrideConfiguration = new Dictionary { { "tag-prefix", "tag-prefix-from-override-configuration" } @@ -436,7 +428,7 @@ public void ShouldOverrideTagPrefixWithOverrideConfigValue([Values] bool tagPref public void ShouldNotOverrideDefaultTagPrefixWhenNotSetInOverrideConfig() { const string text = ""; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var overrideConfiguration = new Dictionary { { "next-version", "1.0.0" } @@ -451,7 +443,7 @@ public void ShouldNotOverrideDefaultTagPrefixWhenNotSetInOverrideConfig() public void ShouldNotOverrideTagPrefixFromConfigFileWhenNotSetInOverrideConfig() { const string text = "tag-prefix: custom-tag-prefix-from-yml"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var overrideConfiguration = new Dictionary { { "next-version", "1.0.0" } @@ -465,7 +457,7 @@ public void ShouldNotOverrideTagPrefixFromConfigFileWhenNotSetInOverrideConfig() public void ShouldOverrideTagPrefixFromConfigFileWhenSetInOverrideConfig() { const string text = "tag-prefix: custom-tag-prefix-from-yml"; - SetupConfigFileContent(text); + fileSystem.SetupConfigFile(text, this.repoPath); var overrideConfiguration = new Dictionary { { "tag-prefix", "custom-tag-prefix-from-console" } diff --git a/src/GitVersion.Configuration.Tests/Configuration/Extensions.cs b/src/GitVersion.Configuration.Tests/Configuration/Extensions.cs new file mode 100644 index 0000000000..d8bb78f2b5 --- /dev/null +++ b/src/GitVersion.Configuration.Tests/Configuration/Extensions.cs @@ -0,0 +1,20 @@ +using GitVersion.Extensions; +using GitVersion.Helpers; + +namespace GitVersion.Configuration.Tests.Configuration; + +public static class Extensions +{ + public static string SetupConfigFile(this IFileSystem fileSystem, string text, string? path = null, string fileName = ConfigurationFileLocator.DefaultFileName) + { + if (path.IsNullOrEmpty()) + { + path = PathHelper.GetRepositoryTempPath(); + } + + var fullPath = PathHelper.Combine(path, fileName); + fileSystem.WriteAllText(fullPath, text); + + return fullPath; + } +} diff --git a/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs b/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs index 54a250d84d..ec006a6382 100644 --- a/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs +++ b/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs @@ -19,7 +19,7 @@ public class GitVersionInfoGeneratorTests : TestBase [TestCase("vb")] public void ShouldCreateFile(string fileExtension) { - var directory = Path.Combine(PathHelper.GetTempPath(), "GitVersionInfoGeneratorTests", Guid.NewGuid().ToString()); + var directory = PathHelper.Combine(PathHelper.GetTempPath(), "GitVersionInfoGeneratorTests", Guid.NewGuid().ToString()); var fileName = "GitVersionInformation.g." + fileExtension; var fullPath = PathHelper.Combine(directory, fileName); From 0eefe37c85da7b897529837e1a235a562592d18e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Mar 2024 15:27:48 +0000 Subject: [PATCH 043/544] (deps): Bump the analyzers group with 2 updates Bumps the analyzers group with 2 updates: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Updates `Roslynator.Analyzers` from 4.11.0 to 4.12.0 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.11.0...v4.12.0) Updates `Roslynator.Formatting.Analyzers` from 4.11.0 to 4.12.0 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.11.0...v4.12.0) --- updated-dependencies: - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-minor dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-minor dependency-group: analyzers ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 4 ++-- src/Directory.Packages.props | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 04c191d9da..039793ee44 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -13,8 +13,8 @@ - - + + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index f94183a6f0..e29230fb0f 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -12,8 +12,8 @@ - - + + From e88a62542464256ce8388bf8dd2d883434b572cd Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 20 Mar 2024 16:31:48 +0100 Subject: [PATCH 044/544] cleanup --- .../ConfigurationFileLocatorTests.cs | 29 +++++----- .../ConfigurationProviderTests.cs | 54 ++++++++++--------- .../Configuration/Extensions.cs | 4 +- .../ConfigurationFileLocator.cs | 5 +- src/GitVersion.Core/Helpers/Disposable.cs | 18 +++++++ src/GitVersion.Core/PublicAPI.Unshipped.txt | 3 ++ .../Output/GitVersionInfoGeneratorTests.cs | 2 + 7 files changed, 70 insertions(+), 45 deletions(-) diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs index 918333c5bd..48c43afa15 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs @@ -41,12 +41,12 @@ public void Setup() [TestCase(ConfigurationFileLocator.DefaultAlternativeFileName, ConfigurationFileLocator.DefaultAlternativeFileName)] public void ThrowsExceptionOnAmbiguousConfigFileLocation(string repoConfigFile, string workingConfigFile) { - var repositoryConfigFilePath = fileSystem.SetupConfigFile(string.Empty, this.repoPath, repoConfigFile); - var workingDirectoryConfigFilePath = fileSystem.SetupConfigFile(string.Empty, this.workingPath, workingConfigFile); + using var repositoryConfigFilePath = this.fileSystem.SetupConfigFile(path: this.repoPath, fileName: repoConfigFile); + using var workingDirectoryConfigFilePath = this.fileSystem.SetupConfigFile(path: this.workingPath, fileName: workingConfigFile); var exception = Should.Throw(() => this.configFileLocator.Verify(this.workingPath, this.repoPath)); - var expectedMessage = $"Ambiguous configuration file selection from '{workingDirectoryConfigFilePath}' and '{repositoryConfigFilePath}'"; + var expectedMessage = $"Ambiguous configuration file selection from '{workingDirectoryConfigFilePath.Value}' and '{repositoryConfigFilePath.Value}'"; exception.Message.ShouldBe(expectedMessage); } @@ -54,7 +54,7 @@ public void ThrowsExceptionOnAmbiguousConfigFileLocation(string repoConfigFile, [TestCase(ConfigurationFileLocator.DefaultAlternativeFileName)] public void NoWarnOnGitVersionYmlFile(string configurationFile) { - fileSystem.SetupConfigFile(string.Empty, this.repoPath, configurationFile); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, fileName: configurationFile); Should.NotThrow(() => this.configurationProvider.ProvideForDirectory(this.repoPath)); } @@ -70,6 +70,7 @@ public class NamedConfigurationFileLocatorTests : TestBase private IFileSystem fileSystem; private IConfigurationFileLocator configFileLocator; private GitVersionOptions gitVersionOptions; + private string ConfigFile => this.gitVersionOptions.ConfigurationInfo.ConfigurationFile!; [SetUp] public void Setup() @@ -88,12 +89,12 @@ public void ThrowsExceptionOnAmbiguousConfigFileLocation() this.configFileLocator = sp.GetRequiredService(); this.fileSystem = sp.GetRequiredService(); - var repositoryConfigFilePath = SetupConfigFile(string.Empty, path: this.repoPath); - var workDirConfigFilePath = SetupConfigFile(string.Empty, path: this.workingPath); + using var repositoryConfigFilePath = this.fileSystem.SetupConfigFile(path: this.repoPath, fileName: ConfigFile); + using var workDirConfigFilePath = this.fileSystem.SetupConfigFile(path: this.workingPath, fileName: ConfigFile); var exception = Should.Throw(() => this.configFileLocator.Verify(this.workingPath, this.repoPath)); - var expectedMessage = $"Ambiguous configuration file selection from '{workDirConfigFilePath}' and '{repositoryConfigFilePath}'"; + var expectedMessage = $"Ambiguous configuration file selection from '{workDirConfigFilePath.Value}' and '{repositoryConfigFilePath.Value}'"; exception.Message.ShouldBe(expectedMessage); } @@ -106,7 +107,7 @@ public void DoNotThrowWhenWorkingAndRepoPathsAreSame() this.configFileLocator = sp.GetRequiredService(); this.fileSystem = sp.GetRequiredService(); - SetupConfigFile(string.Empty, path: this.workingPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.workingPath, fileName: ConfigFile); Should.NotThrow(() => this.configFileLocator.Verify(this.workingPath, this.repoPath)); } @@ -120,7 +121,7 @@ public void DoNotThrowWhenWorkingAndRepoPathsAreSame_WithDifferentCasing() this.configFileLocator = sp.GetRequiredService(); this.fileSystem = sp.GetRequiredService(); - SetupConfigFile(string.Empty, path: this.workingPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.workingPath, fileName: ConfigFile); Should.NotThrow(() => this.configFileLocator.Verify(this.workingPath, this.repoPath)); } @@ -135,7 +136,7 @@ public void DoNotThrowWhenConfigFileIsInSubDirectoryOfRepoPath() this.configFileLocator = sp.GetRequiredService(); this.fileSystem = sp.GetRequiredService(); - SetupConfigFile(string.Empty, path: this.workingPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.workingPath, fileName: ConfigFile); Should.NotThrow(() => this.configFileLocator.Verify(this.workingPath, this.repoPath)); } @@ -153,7 +154,7 @@ public void NoWarnOnCustomYmlFile() this.configFileLocator = sp.GetRequiredService(); this.fileSystem = sp.GetRequiredService(); - SetupConfigFile(string.Empty); + using var _ = this.fileSystem.SetupConfigFile(path: null, fileName: ConfigFile); var configurationProvider = (ConfigurationProvider)sp.GetRequiredService(); @@ -174,7 +175,8 @@ public void NoWarnOnCustomYmlFileOutsideRepoPath() this.configFileLocator = sp.GetRequiredService(); this.fileSystem = sp.GetRequiredService(); - SetupConfigFile(string.Empty, path: PathHelper.Combine(PathHelper.GetTempPath(), "unrelatedPath")); + string path = PathHelper.Combine(PathHelper.GetTempPath(), "unrelatedPath"); + using var _ = this.fileSystem.SetupConfigFile(path: path, fileName: ConfigFile); var configurationProvider = (ConfigurationProvider)sp.GetRequiredService(); @@ -197,9 +199,6 @@ public void ThrowsExceptionOnCustomYmlFileDoesNotExist() exception.Message.ShouldBe(expectedMessage); } - private string SetupConfigFile(string text, string? path = null) - => this.fileSystem.SetupConfigFile(text, path, this.gitVersionOptions.ConfigurationInfo.ConfigurationFile!); - private static IServiceProvider GetServiceProvider(GitVersionOptions gitVersionOptions, ILog? log = null) => ConfigureServices(services => { diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs index db8fcb2626..9151a39a62 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs @@ -41,7 +41,7 @@ public void OverwritesDefaultsWithProvidedConfig() increment: Major mode: ContinuousDelivery label: dev"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.NextVersion.ShouldBe("2.0.0"); @@ -59,7 +59,8 @@ public void OverwritesDefaultsWithProvidedConfig() public void CombineVersionStrategyConfigNextAndTaggedCommit() { // Arrange - fileSystem.SetupConfigFile("strategies: [ConfiguredNextVersion, TaggedCommit]", this.repoPath); + const string text = "strategies: [ConfiguredNextVersion, TaggedCommit]"; + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); // Act var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); @@ -76,7 +77,7 @@ public void CanRemoveLabel() branches: release: label: """""; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.NextVersion.ShouldBe("2.0.0"); @@ -91,7 +92,7 @@ public void RegexIsRequired() branches: bug: label: bugfix"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var ex = Should.Throw(() => this.configurationProvider.ProvideForDirectory(this.repoPath)); ex.Message.ShouldBe($"Branch configuration 'bug' is missing required configuration 'regex'{PathHelper.NewLine}" + "See https://gitversion.net/docs/reference/configuration for more info"); @@ -106,7 +107,7 @@ public void SourceBranchesValidationShouldFailWhenMatchingBranchConfigurationIsM regex: 'bug[/-]' label: bugfix source-branches: [notconfigured]"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var ex = Should.Throw(() => this.configurationProvider.ProvideForDirectory(this.repoPath)); ex.Message.ShouldBe($"Branch configuration 'bug' defines these 'source-branches' that are not configured: '[notconfigured]'{PathHelper.NewLine}" + "See https://gitversion.net/docs/reference/configuration for more info"); @@ -123,7 +124,7 @@ public void SourceBranchesValidationShouldSucceedForWellKnownBranches(string wel regex: 'bug[/-]' label: bugfix source-branches: [{wellKnownBranchKey}]"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.Branches["bug"].SourceBranches.ShouldBe(new List { wellKnownBranchKey }); @@ -139,7 +140,7 @@ public void CanProvideConfigForNewBranch() regex: 'bug[/-]' label: bugfix source-branches: []"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.Branches["bug"].RegularExpression.ShouldBe("bug[/-]"); @@ -150,7 +151,7 @@ public void CanProvideConfigForNewBranch() public void NextVersionCanBeInteger() { const string text = "next-version: 2"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.NextVersion.ShouldBe("2.0"); @@ -160,7 +161,7 @@ public void NextVersionCanBeInteger() public void NextVersionCanHaveEnormousMinorVersion() { const string text = "next-version: 2.118998723"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.NextVersion.ShouldBe("2.118998723"); @@ -170,7 +171,7 @@ public void NextVersionCanHaveEnormousMinorVersion() public void NextVersionCanHavePatch() { const string text = "next-version: 2.12.654651698"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.NextVersion.ShouldBe("2.12.654651698"); @@ -193,7 +194,7 @@ public void CanUpdateAssemblyInformationalVersioningScheme() assembly-file-versioning-scheme: MajorMinorPatch assembly-informational-format: '{NugetVersion}'"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.AssemblyVersioningScheme.ShouldBe(AssemblyVersioningScheme.MajorMinor); @@ -209,7 +210,7 @@ public void CanUpdateAssemblyInformationalVersioningSchemeWithMultipleVariables( assembly-file-versioning-scheme: MajorMinorPatch assembly-informational-format: '{Major}.{Minor}.{Patch}'"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.AssemblyVersioningScheme.ShouldBe(AssemblyVersioningScheme.MajorMinor); @@ -227,7 +228,7 @@ public void CanUpdateAssemblyInformationalVersioningSchemeWithFullSemVer() next-version: 5.3.0 branches: {}"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.AssemblyVersioningScheme.ShouldBe(AssemblyVersioningScheme.MajorMinorPatch); @@ -239,7 +240,7 @@ public void CanUpdateAssemblyInformationalVersioningSchemeWithFullSemVer() public void CanReadDefaultDocument() { const string text = ""; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.AssemblyVersioningScheme.ShouldBe(AssemblyVersioningScheme.MajorMinorPatch); configuration.AssemblyFileVersioningScheme.ShouldBe(AssemblyFileVersioningScheme.MajorMinorPatch); @@ -266,7 +267,8 @@ public void VerifyAliases() [Test] public void NoWarnOnGitVersionYmlFile() { - fileSystem.SetupConfigFile(string.Empty, this.repoPath); + const string text = ""; + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var stringLogger = string.Empty; void Action(string info) => stringLogger = info; @@ -297,7 +299,7 @@ public void ShouldUseSpecifiedSourceBranchesForDevelop() mode: ContinuousDeployment source-branches: ['develop'] label: dev"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.Branches["develop"].SourceBranches.ShouldBe(new List { "develop" }); @@ -312,7 +314,7 @@ public void ShouldUseDefaultSourceBranchesWhenNotSpecifiedForDevelop() develop: mode: ContinuousDeployment label: dev"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.Branches["develop"].SourceBranches.ShouldBe(new List()); @@ -328,7 +330,7 @@ public void ShouldUseSpecifiedSourceBranchesForFeature() mode: ContinuousDeployment source-branches: ['develop', 'release'] label: dev"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.Branches["feature"].SourceBranches.ShouldBe(new List { "develop", "release" }); @@ -343,7 +345,7 @@ public void ShouldUseDefaultSourceBranchesWhenNotSpecifiedForFeature() feature: mode: ContinuousDeployment label: dev"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.Branches["feature"].SourceBranches.ShouldBe( @@ -356,7 +358,7 @@ public void ShouldNotOverrideAnythingWhenOverrideConfigIsEmpty() const string text = @" next-version: 1.2.3 tag-prefix: custom-tag-prefix-from-yml"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var expectedConfig = GitFlowConfigurationBuilder.New .WithNextVersion("1.2.3") @@ -394,7 +396,7 @@ public void ShouldNotOverrideAnythingWhenOverrideConfigIsEmpty() public void ShouldUseDefaultTagPrefixWhenNotSetInConfigFile() { const string text = ""; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.TagPrefix.ShouldBe(ConfigurationConstants.DefaultTagPrefix); @@ -404,7 +406,7 @@ public void ShouldUseDefaultTagPrefixWhenNotSetInConfigFile() public void ShouldUseTagPrefixFromConfigFileWhenProvided() { const string text = "tag-prefix: custom-tag-prefix-from-yml"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.TagPrefix.ShouldBe("custom-tag-prefix-from-yml"); @@ -414,7 +416,7 @@ public void ShouldUseTagPrefixFromConfigFileWhenProvided() public void ShouldOverrideTagPrefixWithOverrideConfigValue([Values] bool tagPrefixSetAtYmlFile) { var text = tagPrefixSetAtYmlFile ? "tag-prefix: custom-tag-prefix-from-yml" : ""; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var overrideConfiguration = new Dictionary { { "tag-prefix", "tag-prefix-from-override-configuration" } @@ -428,7 +430,7 @@ public void ShouldOverrideTagPrefixWithOverrideConfigValue([Values] bool tagPref public void ShouldNotOverrideDefaultTagPrefixWhenNotSetInOverrideConfig() { const string text = ""; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var overrideConfiguration = new Dictionary { { "next-version", "1.0.0" } @@ -443,7 +445,7 @@ public void ShouldNotOverrideDefaultTagPrefixWhenNotSetInOverrideConfig() public void ShouldNotOverrideTagPrefixFromConfigFileWhenNotSetInOverrideConfig() { const string text = "tag-prefix: custom-tag-prefix-from-yml"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var overrideConfiguration = new Dictionary { { "next-version", "1.0.0" } @@ -457,7 +459,7 @@ public void ShouldNotOverrideTagPrefixFromConfigFileWhenNotSetInOverrideConfig() public void ShouldOverrideTagPrefixFromConfigFileWhenSetInOverrideConfig() { const string text = "tag-prefix: custom-tag-prefix-from-yml"; - fileSystem.SetupConfigFile(text, this.repoPath); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var overrideConfiguration = new Dictionary { { "tag-prefix", "custom-tag-prefix-from-console" } diff --git a/src/GitVersion.Configuration.Tests/Configuration/Extensions.cs b/src/GitVersion.Configuration.Tests/Configuration/Extensions.cs index d8bb78f2b5..96db0f145c 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/Extensions.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/Extensions.cs @@ -5,7 +5,7 @@ namespace GitVersion.Configuration.Tests.Configuration; public static class Extensions { - public static string SetupConfigFile(this IFileSystem fileSystem, string text, string? path = null, string fileName = ConfigurationFileLocator.DefaultFileName) + public static IDisposable SetupConfigFile(this IFileSystem fileSystem, string? path = null, string fileName = ConfigurationFileLocator.DefaultFileName, string text = "") { if (path.IsNullOrEmpty()) { @@ -15,6 +15,6 @@ public static string SetupConfigFile(this IFileSystem fileSystem, string text, s var fullPath = PathHelper.Combine(path, fileName); fileSystem.WriteAllText(fullPath, text); - return fullPath; + return Disposable.Create(fullPath, () => fileSystem.Delete(fullPath)); } } diff --git a/src/GitVersion.Configuration/ConfigurationFileLocator.cs b/src/GitVersion.Configuration/ConfigurationFileLocator.cs index a3e763e38b..478de79755 100644 --- a/src/GitVersion.Configuration/ConfigurationFileLocator.cs +++ b/src/GitVersion.Configuration/ConfigurationFileLocator.cs @@ -19,8 +19,9 @@ public bool TryGetConfigurationFile(string? workingDirectory, string? projectRoo public void Verify(string? workingDirectory, string? projectRootDirectory) { - if (!Path.IsPathRooted(this.configurationFile) && !PathHelper.Equal(workingDirectory, projectRootDirectory)) - WarnAboutAmbiguousConfigFileSelection(workingDirectory, projectRootDirectory); + if (Path.IsPathRooted(this.configurationFile)) return; + if (PathHelper.Equal(workingDirectory, projectRootDirectory)) return; + WarnAboutAmbiguousConfigFileSelection(workingDirectory, projectRootDirectory); } public IGitVersionConfiguration ReadConfiguration(string? configFilePath) diff --git a/src/GitVersion.Core/Helpers/Disposable.cs b/src/GitVersion.Core/Helpers/Disposable.cs index af32a9fbc2..f253bef4ef 100644 --- a/src/GitVersion.Core/Helpers/Disposable.cs +++ b/src/GitVersion.Core/Helpers/Disposable.cs @@ -5,6 +5,7 @@ namespace GitVersion.Helpers; public static class Disposable { public static IDisposable Create(Action disposer) => new AnonymousDisposable(disposer); + public static IDisposable Create(T value, Action disposer) => new AnonymousDisposable(value, disposer); public static readonly IDisposable Empty = Create(() => { }); @@ -18,4 +19,21 @@ public void Dispose() private Action? disposer = disposer.NotNull(); } + + private sealed class AnonymousDisposable(T value, Action disposer) : IDisposable + { + public void Dispose() + { + this.disposer?.Invoke(); + this.disposer = null; + } + + private Action? disposer = disposer.NotNull(); + public T Value => value; + } +} + +public interface IDisposable : IDisposable +{ + T Value { get; } } diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index cf65d62637..8b27fd0546 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -277,6 +277,8 @@ GitVersion.GitVersionOptions.WorkingDirectory.get -> string! GitVersion.GitVersionOptions.WorkingDirectory.set -> void GitVersion.Helpers.Disposable GitVersion.Helpers.EncodingHelper +GitVersion.Helpers.IDisposable +GitVersion.Helpers.IDisposable.Value.get -> T GitVersion.Helpers.LambdaEqualityHelper GitVersion.Helpers.LambdaEqualityHelper.Equals(T? instance, T? other) -> bool GitVersion.Helpers.LambdaEqualityHelper.GetHashCode(T instance) -> int @@ -821,6 +823,7 @@ static GitVersion.Extensions.StringExtensions.IsValidPath(this string? path) -> static GitVersion.Extensions.StringExtensions.RegexReplace(this string! input, string! pattern, string! replace, System.Text.RegularExpressions.RegexOptions options = System.Text.RegularExpressions.RegexOptions.None) -> string! static GitVersion.Extensions.StringExtensions.WithPrefixIfNotNullOrEmpty(this string! value, string! prefix) -> string! static GitVersion.Helpers.Disposable.Create(System.Action! disposer) -> System.IDisposable! +static GitVersion.Helpers.Disposable.Create(T value, System.Action! disposer) -> GitVersion.Helpers.IDisposable! static GitVersion.Helpers.EncodingHelper.DetectEncoding(System.Collections.Generic.IList! bytes) -> System.Text.Encoding? static GitVersion.Helpers.EncodingHelper.DetectEncoding(string? filename) -> System.Text.Encoding? static GitVersion.Helpers.ServiceMessageEscapeHelper.EscapeValue(string? value) -> string? diff --git a/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs b/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs index ec006a6382..e4b8964326 100644 --- a/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs +++ b/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs @@ -20,6 +20,8 @@ public class GitVersionInfoGeneratorTests : TestBase public void ShouldCreateFile(string fileExtension) { var directory = PathHelper.Combine(PathHelper.GetTempPath(), "GitVersionInfoGeneratorTests", Guid.NewGuid().ToString()); + if (!Directory.Exists(directory)) + Directory.CreateDirectory(directory); var fileName = "GitVersionInformation.g." + fileExtension; var fullPath = PathHelper.Combine(directory, fileName); From 35aed5c0bf232015c1f2ff9846fd083038767e70 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Sat, 16 Mar 2024 09:51:07 +0100 Subject: [PATCH 045/544] Refator BaseVersionV2 into BaseVersion --- .../ConfigurationExtensionsTests.cs | 15 --- .../ConfiguredNextVersionScenarios.cs | 26 ++++ .../MinDateVersionFilterTests.cs | 6 +- .../ShaVersionFilterTests.cs | 6 +- ...nfiguredNextVersionVersionStrategyTests.cs | 41 ++++-- .../MergeMessageBaseVersionStrategyTests.cs | 9 +- ...ionInBranchNameBaseVersionStrategyTests.cs | 6 +- .../Core/Abstractions/IRepositoryStore.cs | 2 +- src/GitVersion.Core/Core/RepositoryStore.cs | 7 - .../Extensions/ConfigurationExtensions.cs | 3 - src/GitVersion.Core/Git/CommitExtensions.cs | 8 ++ src/GitVersion.Core/Git/ICommit.cs | 5 +- src/GitVersion.Core/MergeMessage.cs | 4 +- src/GitVersion.Core/PublicAPI.Unshipped.txt | 72 +++++++---- src/GitVersion.Core/SemVer/SemanticVersion.cs | 10 +- .../Abstractions/IIncrementStrategyFinder.cs | 2 +- .../Abstractions/IVersionFilter.cs | 2 +- .../Abstractions/IVersionStrategy.cs | 6 - .../IncrementStrategyFinder.cs | 13 +- .../MinDateVersionFilter.cs | 6 +- .../VersionCalculation/NextVersion.cs | 4 +- .../VersionCalculation/ShaVersionFilter.cs | 9 +- .../TrunkBased/ITrunkBasedIncrementer.cs | 3 +- .../TrunkBased/NonTrunk/CommitOnNonTrunk.cs | 20 +-- .../NonTrunk/CommitOnNonTrunkBranchedBase.cs | 18 ++- .../CommitOnNonTrunkWithPreReleaseTagBase.cs | 14 +- .../CommitOnNonTrunkWithStableTagBase.cs | 14 +- .../LastCommitOnNonTrunkWithPreReleaseTag.cs | 19 +-- .../LastCommitOnNonTrunkWithStableTag.cs | 19 +-- .../NonTrunk/LastMergeCommitOnNonTrunk.cs | 20 +-- .../NonTrunk/MergeCommitOnNonTrunkBase.cs | 13 +- .../TrunkBased/Trunk/CommitOnTrunk.cs | 20 +-- .../Trunk/CommitOnTrunkBranchedBase.cs | 19 +-- .../CommitOnTrunkWithPreReleaseTagBase.cs | 14 +- .../Trunk/CommitOnTrunkWithStableTagBase.cs | 14 +- .../LastCommitOnTrunkWithPreReleaseTag.cs | 19 +-- .../Trunk/LastCommitOnTrunkWithStableTag.cs | 19 +-- .../Trunk/MergeCommitOnTrunkBase.cs | 43 +++--- .../NextVersionCalculator.cs | 122 +++++++----------- .../VersionSearchStrategies/BaseVersion.cs | 106 +++++++++++---- .../BaseVersionOperand.cs | 23 ++++ .../BaseVersionOperator.cs | 16 +++ .../VersionSearchStrategies/BaseVersionV2.cs | 88 ------------- .../ConfiguredNextVersionVersionStrategy.cs | 38 +++++- .../VersionSearchStrategies/IBaseVersion.cs | 6 + .../IBaseVersionIncrement.cs | 8 ++ .../MergeMessageVersionStrategy.cs | 100 +++++++------- .../TaggedCommitVersionStrategy.cs | 50 ++++--- .../TrackReleaseBranchesVersionStrategy.cs | 105 ++++++++------- .../TrunkBasedVersionStrategy.cs | 81 +++++------- .../VersionInBranchNameVersionStrategy.cs | 40 ++++-- .../VersionStrategyBase.cs | 13 -- src/GitVersion.LibGit2Sharp/Git/Commit.cs | 5 +- 53 files changed, 728 insertions(+), 623 deletions(-) create mode 100644 src/GitVersion.Core.Tests/IntegrationTests/ConfiguredNextVersionScenarios.cs create mode 100644 src/GitVersion.Core/Git/CommitExtensions.cs create mode 100644 src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs create mode 100644 src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperator.cs delete mode 100644 src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionV2.cs create mode 100644 src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/IBaseVersion.cs create mode 100644 src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/IBaseVersionIncrement.cs delete mode 100644 src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionStrategyBase.cs diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationExtensionsTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationExtensionsTests.cs index 74910315b9..ff54caa0c2 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationExtensionsTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationExtensionsTests.cs @@ -6,21 +6,6 @@ namespace GitVersion.Core.Tests.Configuration; [TestFixture] public class ConfigurationExtensionsTests : TestBase { - [Test] - public void GetReleaseBranchConfigReturnsAllReleaseBranches() - { - var configuration = EmptyConfigurationBuilder.New - .WithBranch("foo", _ => _.WithRegularExpression("foo")) - .WithBranch("bar", _ => _.WithRegularExpression("bar").WithIsReleaseBranch(true)) - .WithBranch("baz", _ => _.WithRegularExpression("baz").WithIsReleaseBranch(true)) - .Build(); - - var result = configuration.GetReleaseBranchConfiguration(); - - result.Count.ShouldBe(2); - result.ShouldNotContain(b => b.Key == "foo"); - } - [TestCase("release/2.0.0", "refs/heads/release/2.0.0", "release/2.0.0", "release/2.0.0", true, false, false, false, true)] diff --git a/src/GitVersion.Core.Tests/IntegrationTests/ConfiguredNextVersionScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/ConfiguredNextVersionScenarios.cs new file mode 100644 index 0000000000..a4dda8b437 --- /dev/null +++ b/src/GitVersion.Core.Tests/IntegrationTests/ConfiguredNextVersionScenarios.cs @@ -0,0 +1,26 @@ +using GitVersion.Configuration; +using GitVersion.Core.Tests.Helpers; +using GitVersion.VersionCalculation; + +namespace GitVersion.Core.Tests.IntegrationTests; + +[TestFixture] +public class ConfiguredNextVersionScenarios : TestBase +{ + private static GitHubFlowConfigurationBuilder ConfigurationBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.ConfiguredNextVersion) + .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + + [Test] + public void ShouldThrowGitVersionExceptionWhenAllCommitsAreIgnored1() + { + var configuration = ConfigurationBuilder.WithNextVersion("1.0.0").Build(); + + using EmptyRepositoryFixture repositoryFixture = new("main"); + + repositoryFixture.MakeACommit("+semver: major"); + + // ✅ succeeds as expected + repositoryFixture.AssertFullSemver("1.0.0-1+1", configuration); + } +} diff --git a/src/GitVersion.Core.Tests/VersionCalculation/MinDateVersionFilterTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/MinDateVersionFilterTests.cs index bada4a64ed..8a95fac0ac 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/MinDateVersionFilterTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/MinDateVersionFilterTests.cs @@ -19,7 +19,7 @@ public void VerifyNullGuard() public void WhenCommitShouldExcludeWithReason() { var commit = GitToolsTestingExtensions.CreateMockCommit(); - var version = new BaseVersion("dummy", false, new(1), commit, string.Empty); + BaseVersion version = new("dummy", new SemanticVersion(1), commit); var futureDate = DateTimeOffset.UtcNow.AddYears(1); var sut = new MinDateVersionFilter(futureDate); @@ -31,7 +31,7 @@ public void WhenCommitShouldExcludeWithReason() public void WhenShaMismatchShouldNotExclude() { var commit = GitToolsTestingExtensions.CreateMockCommit(); - var version = new BaseVersion("dummy", false, new(1), commit, string.Empty); + BaseVersion version = new("dummy", new SemanticVersion(1), commit); var pastDate = DateTimeOffset.UtcNow.AddYears(-1); var sut = new MinDateVersionFilter(pastDate); @@ -42,7 +42,7 @@ public void WhenShaMismatchShouldNotExclude() [Test] public void ExcludeShouldAcceptVersionWithNullCommit() { - var version = new BaseVersion("dummy", false, new(1), null, string.Empty); + BaseVersion version = new("dummy", new SemanticVersion(1), null); var futureDate = DateTimeOffset.UtcNow.AddYears(1); var sut = new MinDateVersionFilter(futureDate); diff --git a/src/GitVersion.Core.Tests/VersionCalculation/ShaVersionFilterTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/ShaVersionFilterTests.cs index 5d14d50cac..aecb3ab228 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/ShaVersionFilterTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/ShaVersionFilterTests.cs @@ -19,7 +19,7 @@ public void VerifyNullGuard2() public void WhenShaMatchShouldExcludeWithReason() { var commit = GitToolsTestingExtensions.CreateMockCommit(); - var version = new BaseVersion("dummy", false, new(1), commit, string.Empty); + BaseVersion version = new("dummy", new SemanticVersion(1), commit); var sut = new ShaVersionFilter(new[] { commit.Sha }); sut.Exclude(version, out var reason).ShouldBeTrue(); @@ -30,7 +30,7 @@ public void WhenShaMatchShouldExcludeWithReason() public void WhenShaMismatchShouldNotExclude() { var commit = GitToolsTestingExtensions.CreateMockCommit(); - var version = new BaseVersion("dummy", false, new(1), commit, string.Empty); + BaseVersion version = new("dummy", new SemanticVersion(1), commit); var sut = new ShaVersionFilter(["mismatched"]); sut.Exclude(version, out var reason).ShouldBeFalse(); @@ -40,7 +40,7 @@ public void WhenShaMismatchShouldNotExclude() [Test] public void ExcludeShouldAcceptVersionWithNullCommit() { - var version = new BaseVersion("dummy", false, new(1), null, string.Empty); + BaseVersion version = new("dummy", new SemanticVersion(1)); var sut = new ShaVersionFilter(["mismatched"]); sut.Exclude(version, out var reason).ShouldBeFalse(); diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfiguredNextVersionVersionStrategyTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfiguredNextVersionVersionStrategyTests.cs index 1653766a3c..2f535f1f56 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfiguredNextVersionVersionStrategyTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfiguredNextVersionVersionStrategyTests.cs @@ -17,12 +17,15 @@ public void ReturnsNullWhenNoNextVersionIsInConfig() baseVersion.ShouldBe(null); } - [TestCase("1.0.0", "1.0.0", SemanticVersionFormat.Strict)] - [TestCase("1.0.0", "1.0.0", SemanticVersionFormat.Loose)] - [TestCase("2.12.654651698", "2.12.654651698", SemanticVersionFormat.Strict)] - [TestCase("2.12.654651698", "2.12.654651698", SemanticVersionFormat.Loose)] - [TestCase("0.1", "0.1.0", SemanticVersionFormat.Loose)] - public void ConfiguredNextVersionTest(string nextVersion, string expectedVersion, SemanticVersionFormat versionFormat) + [TestCase("1.0.0", "1.0.0", SemanticVersionFormat.Strict, "1.0.0-1")] + [TestCase("1.0.0", "1.0.0", SemanticVersionFormat.Loose, "1.0.0-1")] + [TestCase("2.12.654651698", "2.12.654651698", SemanticVersionFormat.Strict, "2.12.654651698-1")] + [TestCase("2.12.654651698", "2.12.654651698", SemanticVersionFormat.Loose, "2.12.654651698-1")] + [TestCase("0.1", "0.1.0", SemanticVersionFormat.Loose, "0.1.0-1")] + [TestCase("1.0.0-alpha.1", null, SemanticVersionFormat.Strict, null)] + [TestCase("1.0.0-2", "1.0.0-2", SemanticVersionFormat.Strict, "1.0.0-2")] + public void ConfiguredNextVersionTest( + string nextVersion, string? semanticVersion, SemanticVersionFormat versionFormat, string? incrementedVersion) { var overrideConfiguration = new Dictionary { @@ -31,9 +34,31 @@ public void ConfiguredNextVersionTest(string nextVersion, string expectedVersion }; var baseVersion = GetBaseVersion(overrideConfiguration); + if (semanticVersion.IsNullOrEmpty()) + { + baseVersion.ShouldBeNull(); + return; + } + baseVersion.ShouldNotBeNull(); - baseVersion.ShouldIncrement.ShouldBe(false); - baseVersion.GetSemanticVersion().ToString().ShouldBe(expectedVersion); + baseVersion.SemanticVersion.ToString().ShouldBe(semanticVersion); + baseVersion.BaseVersionSource.ShouldBeNull(); + + var shouldBeIncremented = semanticVersion != incrementedVersion; + baseVersion.ShouldBeIncremented.ShouldBe(shouldBeIncremented); + if (shouldBeIncremented) + { + baseVersion.Operator.ShouldNotBeNull(); + baseVersion.Operator!.Label.ShouldBe(string.Empty); + baseVersion.Operator.ForceIncrement.ShouldBe(false); + baseVersion.Operator.Increment.ShouldBe(VersionField.None); + baseVersion.Operator.BaseVersionSource.ShouldBeNull(); + } + else + { + baseVersion.Operator.ShouldBeNull(); + } + baseVersion.GetIncrementedVersion().ToString().ShouldBe(incrementedVersion); } [TestCase("0.1", SemanticVersionFormat.Strict)] diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs index 276e249753..6dac15a836 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs @@ -34,9 +34,10 @@ public void ShouldNotAllowIncrementOfVersion() var context = contextBuilder.ServicesProvider.GetRequiredService>().Value; strategy.ShouldNotBeNull(); - var baseVersion = strategy.GetBaseVersions(context.Configuration.GetEffectiveBranchConfiguration(mockBranch)).Single(); + var configuration = context.Configuration.GetEffectiveBranchConfiguration(mockBranch); + var baseVersion = strategy.GetBaseVersions(configuration).Single(); - baseVersion.ShouldIncrement.ShouldBe(false); + baseVersion.GetIncrementedVersion().ToString().ShouldBe("0.1.5-1"); } [TestCase("Merge branch 'release-10.10.50'", true, "10.10.50")] @@ -174,7 +175,7 @@ private static void AssertMergeMessage(string message, string? expectedVersion, else { baseVersion.ShouldNotBeNull(); - baseVersion.GetSemanticVersion().ToString().ShouldBe(expectedVersion); + baseVersion.SemanticVersion.ToString().ShouldBe(expectedVersion); } } @@ -191,7 +192,7 @@ private class MockCommit : ICommit public int CompareTo(IGitObject? other) => throw new NotImplementedException(); public IObjectId Id => throw new NotImplementedException(); public string Sha => throw new NotImplementedException(); - public IEnumerable Parents => throw new NotImplementedException(); + public IReadOnlyList Parents => throw new NotImplementedException(); public DateTimeOffset When => throw new NotImplementedException(); public string Message => throw new NotImplementedException(); } diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/VersionInBranchNameBaseVersionStrategyTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/VersionInBranchNameBaseVersionStrategyTests.cs index ed6852d234..e006162870 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/VersionInBranchNameBaseVersionStrategyTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/VersionInBranchNameBaseVersionStrategyTests.cs @@ -28,7 +28,7 @@ public void CanTakeVersionFromNameOfReleaseBranch(string branchName, string expe strategy.ShouldNotBeNull(); var baseVersion = strategy.GetBaseVersions(effectiveBranchConfiguration).Single(); - baseVersion.GetSemanticVersion().ToString().ShouldBe(expectedBaseVersion); + baseVersion.SemanticVersion.ToString().ShouldBe(expectedBaseVersion); } [TestCase("origin/hotfix-2.0.0")] @@ -90,7 +90,7 @@ public void CanTakeVersionFromNameOfConfiguredReleaseBranch(string branchName, s strategy.ShouldNotBeNull(); var baseVersion = strategy.GetBaseVersions(effectiveBranchConfiguration).Single(); - baseVersion.GetSemanticVersion().ToString().ShouldBe(expectedBaseVersion); + baseVersion.SemanticVersion.ToString().ShouldBe(expectedBaseVersion); } [TestCase("origin", "release-2.0.0", "2.0.0")] @@ -114,7 +114,7 @@ public void CanTakeVersionFromNameOfRemoteReleaseBranch(string origin, string br strategy.ShouldNotBeNull(); var baseVersion = strategy.GetBaseVersions(effectiveBranchConfiguration).Single(); - baseVersion.GetSemanticVersion().ToString().ShouldBe(expectedBaseVersion); + baseVersion.SemanticVersion.ToString().ShouldBe(expectedBaseVersion); } private static IVersionStrategy GetVersionStrategy(IGitRepository repository, diff --git a/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs b/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs index c077ee994e..d8f71c94e5 100644 --- a/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs +++ b/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs @@ -18,7 +18,7 @@ public interface IRepositoryStore IBranch GetTargetBranch(string? targetBranchName); IBranch? FindBranch(ReferenceName branchName); IBranch? FindBranch(string branchName); - IEnumerable GetReleaseBranches(IEnumerable> releaseBranchConfig); + IEnumerable ExcludingBranches(IEnumerable branchesToExclude); IEnumerable GetBranchesContainingCommit(ICommit commit, IEnumerable? branches = null, bool onlyTrackedBranches = false); diff --git a/src/GitVersion.Core/Core/RepositoryStore.cs b/src/GitVersion.Core/Core/RepositoryStore.cs index a520de3ffe..dba9aa7c3e 100644 --- a/src/GitVersion.Core/Core/RepositoryStore.cs +++ b/src/GitVersion.Core/Core/RepositoryStore.cs @@ -1,4 +1,3 @@ -using System.Text.RegularExpressions; using GitVersion.Common; using GitVersion.Configuration; using GitVersion.Extensions; @@ -92,12 +91,6 @@ public IBranch GetTargetBranch(string? targetBranchName) public IBranch? FindBranch(string branchName) => this.repository.Branches.FirstOrDefault(x => x.Name.EquivalentTo(branchName)); - public IEnumerable GetReleaseBranches(IEnumerable> releaseBranchConfig) - => this.repository.Branches.Where(b => IsReleaseBranch(b, releaseBranchConfig)); - - private static bool IsReleaseBranch(INamedReference branch, IEnumerable> releaseBranchConfig) - => releaseBranchConfig.Any(c => c.Value.RegularExpression != null && Regex.IsMatch(branch.Name.WithoutOrigin, c.Value.RegularExpression)); - public IEnumerable ExcludingBranches(IEnumerable branchesToExclude) => this.repository.Branches.ExcludeBranches(branchesToExclude); public IEnumerable GetBranchesContainingCommit(ICommit commit, IEnumerable? branches = null, bool onlyTrackedBranches = false) diff --git a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs index 8d0168961b..3f0532639b 100644 --- a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs +++ b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs @@ -152,7 +152,4 @@ public static (string GitDirectory, string WorkingTreeDirectory)? FindGitDir(thi return null; } - - public static List> GetReleaseBranchConfiguration(this IGitVersionConfiguration configuration) => - configuration.Branches.Where(b => b.Value.IsReleaseBranch == true).ToList(); } diff --git a/src/GitVersion.Core/Git/CommitExtensions.cs b/src/GitVersion.Core/Git/CommitExtensions.cs new file mode 100644 index 0000000000..8972a7c438 --- /dev/null +++ b/src/GitVersion.Core/Git/CommitExtensions.cs @@ -0,0 +1,8 @@ +using GitVersion.Extensions; + +namespace GitVersion; + +public static class CommitExtensions +{ + public static bool IsMergeCommit(this ICommit source) => source.NotNull().Parents.Count >= 2; +} diff --git a/src/GitVersion.Core/Git/ICommit.cs b/src/GitVersion.Core/Git/ICommit.cs index 8506809be8..0c9484c395 100644 --- a/src/GitVersion.Core/Git/ICommit.cs +++ b/src/GitVersion.Core/Git/ICommit.cs @@ -2,8 +2,9 @@ namespace GitVersion; public interface ICommit : IEquatable, IComparable, IGitObject { - bool IsMergeCommit => Parents.Count() >= 2; - IEnumerable Parents { get; } + IReadOnlyList Parents { get; } + DateTimeOffset When { get; } + string Message { get; } } diff --git a/src/GitVersion.Core/MergeMessage.cs b/src/GitVersion.Core/MergeMessage.cs index 0750d5aedc..f7b8c24ebe 100644 --- a/src/GitVersion.Core/MergeMessage.cs +++ b/src/GitVersion.Core/MergeMessage.cs @@ -98,9 +98,9 @@ public static bool TryParse( mergeMessage = null; - if (mergeCommit.IsMergeCommit) + if (mergeCommit.IsMergeCommit()) { - mergeMessage = new(mergeCommit.Message, configuration); + mergeMessage = new MergeMessage(mergeCommit.Message, configuration); } return mergeMessage != null; diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 8b27fd0546..9696c20d8f 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -70,6 +70,7 @@ GitVersion.BugException GitVersion.BugException.BugException() -> void GitVersion.BugException.BugException(string! message) -> void GitVersion.BugException.BugException(string? message, System.Exception? innerException) -> void +GitVersion.CommitExtensions GitVersion.CommitFilter GitVersion.CommitFilter.ExcludeReachableFrom.get -> object? GitVersion.CommitFilter.ExcludeReachableFrom.set -> void @@ -97,7 +98,6 @@ GitVersion.Common.IRepositoryStore.GetBranchesContainingCommit(GitVersion.ICommi GitVersion.Common.IRepositoryStore.GetCommitLog(GitVersion.ICommit? baseVersionSource, GitVersion.ICommit! currentCommit, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> System.Collections.Generic.IReadOnlyList! GitVersion.Common.IRepositoryStore.GetCurrentCommit(GitVersion.IBranch! currentBranch, string? commitId, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> GitVersion.ICommit? GitVersion.Common.IRepositoryStore.GetNumberOfUncommittedChanges() -> int -GitVersion.Common.IRepositoryStore.GetReleaseBranches(System.Collections.Generic.IEnumerable>! releaseBranchConfig) -> System.Collections.Generic.IEnumerable! GitVersion.Common.IRepositoryStore.GetSourceBranches(GitVersion.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, System.Collections.Generic.IEnumerable! excludedBranches) -> System.Collections.Generic.IEnumerable! GitVersion.Common.IRepositoryStore.GetSourceBranches(GitVersion.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.IBranch![]! excludedBranches) -> System.Collections.Generic.IEnumerable! GitVersion.Common.IRepositoryStore.GetTargetBranch(string? targetBranchName) -> GitVersion.IBranch! @@ -303,9 +303,8 @@ GitVersion.IBranchCollection.ExcludeBranches(System.Collections.Generic.IEnumera GitVersion.IBranchCollection.UpdateTrackedBranch(GitVersion.IBranch! branch, string! remoteTrackingReferenceName) -> void GitVersion.IBranchCollection.this[string! name].get -> GitVersion.IBranch? GitVersion.ICommit -GitVersion.ICommit.IsMergeCommit.get -> bool GitVersion.ICommit.Message.get -> string! -GitVersion.ICommit.Parents.get -> System.Collections.Generic.IEnumerable! +GitVersion.ICommit.Parents.get -> System.Collections.Generic.IReadOnlyList! GitVersion.ICommit.When.get -> System.DateTimeOffset GitVersion.ICommitCollection GitVersion.ICommitCollection.GetCommitsPriorTo(System.DateTimeOffset olderThan) -> System.Collections.Generic.IEnumerable! @@ -545,9 +544,9 @@ GitVersion.SemanticVersion.BuildMetaData.init -> void GitVersion.SemanticVersion.CompareTo(GitVersion.SemanticVersion? value) -> int GitVersion.SemanticVersion.CompareTo(GitVersion.SemanticVersion? value, bool includePreRelease) -> int GitVersion.SemanticVersion.Equals(GitVersion.SemanticVersion? obj) -> bool +GitVersion.SemanticVersion.Increment(GitVersion.VersionField increment, string? label) -> GitVersion.SemanticVersion! +GitVersion.SemanticVersion.Increment(GitVersion.VersionField increment, string? label, bool forceIncrement) -> GitVersion.SemanticVersion! GitVersion.SemanticVersion.Increment(GitVersion.VersionField increment, string? label, GitVersion.SemanticVersion.IncrementMode mode) -> GitVersion.SemanticVersion! -GitVersion.SemanticVersion.Increment(GitVersion.VersionField incrementStrategy, string? label) -> GitVersion.SemanticVersion! -GitVersion.SemanticVersion.Increment(GitVersion.VersionField incrementStrategy, string? label, bool forceIncrement) -> GitVersion.SemanticVersion! GitVersion.SemanticVersion.IncrementMode GitVersion.SemanticVersion.IncrementMode.EnsureIntegrity = 2 -> GitVersion.SemanticVersion.IncrementMode GitVersion.SemanticVersion.IncrementMode.Force = 1 -> GitVersion.SemanticVersion.IncrementMode @@ -657,20 +656,40 @@ GitVersion.Settings.NoNormalize -> bool GitVersion.Settings.OnlyTrackedBranches -> bool GitVersion.Settings.Settings() -> void GitVersion.VersionCalculation.BaseVersion -GitVersion.VersionCalculation.BaseVersion.BaseVersion(GitVersion.VersionCalculation.BaseVersion! baseVersion) -> void -GitVersion.VersionCalculation.BaseVersion.BaseVersion(string! source, bool shouldIncrement) -> void -GitVersion.VersionCalculation.BaseVersion.BaseVersion(string! source, bool shouldIncrement, GitVersion.SemanticVersion! semanticVersion, GitVersion.ICommit? baseVersionSource, string? branchNameOverride) -> void +GitVersion.VersionCalculation.BaseVersion.BaseVersion() -> void +GitVersion.VersionCalculation.BaseVersion.BaseVersion(GitVersion.VersionCalculation.BaseVersionOperand! baseVersionOperand) -> void +GitVersion.VersionCalculation.BaseVersion.BaseVersion(string! source, GitVersion.SemanticVersion! semanticVersion, GitVersion.ICommit? baseVersionSource = null) -> void GitVersion.VersionCalculation.BaseVersion.BaseVersionSource.get -> GitVersion.ICommit? -GitVersion.VersionCalculation.BaseVersion.BaseVersionSource.init -> void -GitVersion.VersionCalculation.BaseVersion.BranchNameOverride.get -> string? -GitVersion.VersionCalculation.BaseVersion.BranchNameOverride.init -> void -GitVersion.VersionCalculation.BaseVersion.GetSemanticVersion() -> GitVersion.SemanticVersion! -GitVersion.VersionCalculation.BaseVersion.SemanticVersion.get -> GitVersion.SemanticVersion? -GitVersion.VersionCalculation.BaseVersion.SemanticVersion.init -> void -GitVersion.VersionCalculation.BaseVersion.ShouldIncrement.get -> bool -GitVersion.VersionCalculation.BaseVersion.ShouldIncrement.init -> void +GitVersion.VersionCalculation.BaseVersion.GetIncrementedVersion() -> GitVersion.SemanticVersion! +GitVersion.VersionCalculation.BaseVersion.Operand.get -> GitVersion.VersionCalculation.BaseVersionOperand! +GitVersion.VersionCalculation.BaseVersion.Operand.init -> void +GitVersion.VersionCalculation.BaseVersion.Operator.get -> GitVersion.VersionCalculation.BaseVersionOperator? +GitVersion.VersionCalculation.BaseVersion.Operator.init -> void +GitVersion.VersionCalculation.BaseVersion.SemanticVersion.get -> GitVersion.SemanticVersion! +GitVersion.VersionCalculation.BaseVersion.ShouldBeIncremented.get -> bool GitVersion.VersionCalculation.BaseVersion.Source.get -> string! -GitVersion.VersionCalculation.BaseVersion.Source.init -> void +GitVersion.VersionCalculation.BaseVersionOperand +GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionOperand() -> void +GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionOperand(string! source, GitVersion.SemanticVersion! semanticVersion, GitVersion.ICommit? baseVersionSource = null) -> void +GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionSource.get -> GitVersion.ICommit? +GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionSource.init -> void +GitVersion.VersionCalculation.BaseVersionOperand.SemanticVersion.get -> GitVersion.SemanticVersion! +GitVersion.VersionCalculation.BaseVersionOperand.SemanticVersion.init -> void +GitVersion.VersionCalculation.BaseVersionOperand.Source.get -> string! +GitVersion.VersionCalculation.BaseVersionOperand.Source.init -> void +GitVersion.VersionCalculation.BaseVersionOperator +GitVersion.VersionCalculation.BaseVersionOperator.AlternativeSemanticVersion.get -> GitVersion.SemanticVersion? +GitVersion.VersionCalculation.BaseVersionOperator.AlternativeSemanticVersion.init -> void +GitVersion.VersionCalculation.BaseVersionOperator.BaseVersionSource.get -> GitVersion.ICommit? +GitVersion.VersionCalculation.BaseVersionOperator.BaseVersionSource.init -> void +GitVersion.VersionCalculation.BaseVersionOperator.ForceIncrement.get -> bool +GitVersion.VersionCalculation.BaseVersionOperator.ForceIncrement.init -> void +GitVersion.VersionCalculation.BaseVersionOperator.Increment.get -> GitVersion.VersionField +GitVersion.VersionCalculation.BaseVersionOperator.Increment.init -> void +GitVersion.VersionCalculation.BaseVersionOperator.Label.get -> string? +GitVersion.VersionCalculation.BaseVersionOperator.Label.init -> void +GitVersion.VersionCalculation.BaseVersionOperator.Source.get -> string! +GitVersion.VersionCalculation.BaseVersionOperator.Source.init -> void GitVersion.VersionCalculation.Caching.GitVersionCache GitVersion.VersionCalculation.Caching.GitVersionCache.GitVersionCache(GitVersion.IFileSystem! fileSystem, GitVersion.OutputVariables.IVersionVariableSerializer! serializer, GitVersion.Logging.ILog! log, GitVersion.IGitRepositoryInfo! repositoryInfo) -> void GitVersion.VersionCalculation.Caching.GitVersionCache.LoadVersionVariablesFromDiskCache(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! cacheKey) -> GitVersion.OutputVariables.GitVersionVariables? @@ -689,12 +708,17 @@ GitVersion.VersionCalculation.DeploymentMode GitVersion.VersionCalculation.DeploymentMode.ContinuousDelivery = 1 -> GitVersion.VersionCalculation.DeploymentMode GitVersion.VersionCalculation.DeploymentMode.ContinuousDeployment = 2 -> GitVersion.VersionCalculation.DeploymentMode GitVersion.VersionCalculation.DeploymentMode.ManualDeployment = 0 -> GitVersion.VersionCalculation.DeploymentMode +GitVersion.VersionCalculation.IBaseVersion +GitVersion.VersionCalculation.IBaseVersion.SemanticVersion.get -> GitVersion.SemanticVersion! +GitVersion.VersionCalculation.IBaseVersionIncrement +GitVersion.VersionCalculation.IBaseVersionIncrement.BaseVersionSource.get -> GitVersion.ICommit? +GitVersion.VersionCalculation.IBaseVersionIncrement.Source.get -> string! GitVersion.VersionCalculation.IDeploymentModeCalculator GitVersion.VersionCalculation.IDeploymentModeCalculator.Calculate(GitVersion.SemanticVersion! semanticVersion, GitVersion.ICommit? baseVersionSource) -> GitVersion.SemanticVersion! GitVersion.VersionCalculation.IEffectiveBranchConfigurationFinder GitVersion.VersionCalculation.IEffectiveBranchConfigurationFinder.GetConfigurations(GitVersion.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> System.Collections.Generic.IEnumerable! GitVersion.VersionCalculation.IIncrementStrategyFinder -GitVersion.VersionCalculation.IIncrementStrategyFinder.DetermineIncrementedField(GitVersion.ICommit! currentCommit, GitVersion.VersionCalculation.BaseVersion! baseVersion, GitVersion.Configuration.EffectiveConfiguration! configuration, string? label) -> GitVersion.VersionField +GitVersion.VersionCalculation.IIncrementStrategyFinder.DetermineIncrementedField(GitVersion.ICommit! currentCommit, GitVersion.ICommit? baseVersionSource, bool shouldIncrement, GitVersion.Configuration.EffectiveConfiguration! configuration, string? label) -> GitVersion.VersionField GitVersion.VersionCalculation.IIncrementStrategyFinder.GetIncrementForcedByCommit(GitVersion.ICommit! commit, GitVersion.Configuration.EffectiveConfiguration! configuration) -> GitVersion.VersionField GitVersion.VersionCalculation.IIncrementStrategyFinder.GetIncrementForCommits(string? majorVersionBumpMessage, string? minorVersionBumpMessage, string? patchVersionBumpMessage, string? noBumpMessage, GitVersion.ICommit![]! commits) -> GitVersion.VersionField? GitVersion.VersionCalculation.IIncrementStrategyFinder.GetMergedCommits(GitVersion.ICommit! mergeCommit, int index, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> System.Collections.Generic.IEnumerable! @@ -703,17 +727,17 @@ GitVersion.VersionCalculation.INextVersionCalculator.FindVersion() -> GitVersion GitVersion.VersionCalculation.IVariableProvider GitVersion.VersionCalculation.IVariableProvider.GetVariablesFor(GitVersion.SemanticVersion! semanticVersion, GitVersion.Configuration.IGitVersionConfiguration! configuration, int preReleaseWeight) -> GitVersion.OutputVariables.GitVersionVariables! GitVersion.VersionCalculation.IVersionFilter -GitVersion.VersionCalculation.IVersionFilter.Exclude(GitVersion.VersionCalculation.BaseVersion! version, out string? reason) -> bool +GitVersion.VersionCalculation.IVersionFilter.Exclude(GitVersion.VersionCalculation.IBaseVersion! baseVersion, out string? reason) -> bool GitVersion.VersionCalculation.IVersionStrategy GitVersion.VersionCalculation.IVersionStrategy.GetBaseVersions(GitVersion.Configuration.EffectiveBranchConfiguration! configuration) -> System.Collections.Generic.IEnumerable! GitVersion.VersionCalculation.NextVersion -GitVersion.VersionCalculation.NextVersion.BaseVersion.get -> GitVersion.VersionCalculation.BaseVersion! +GitVersion.VersionCalculation.NextVersion.BaseVersion.get -> GitVersion.VersionCalculation.IBaseVersion! GitVersion.VersionCalculation.NextVersion.BranchConfiguration.get -> GitVersion.Configuration.EffectiveBranchConfiguration! GitVersion.VersionCalculation.NextVersion.CompareTo(GitVersion.VersionCalculation.NextVersion? other) -> int GitVersion.VersionCalculation.NextVersion.Configuration.get -> GitVersion.Configuration.EffectiveConfiguration! GitVersion.VersionCalculation.NextVersion.Equals(GitVersion.VersionCalculation.NextVersion? other) -> bool GitVersion.VersionCalculation.NextVersion.IncrementedVersion.get -> GitVersion.SemanticVersion! -GitVersion.VersionCalculation.NextVersion.NextVersion(GitVersion.SemanticVersion! incrementedVersion, GitVersion.VersionCalculation.BaseVersion! baseVersion, GitVersion.Configuration.EffectiveBranchConfiguration! configuration) -> void +GitVersion.VersionCalculation.NextVersion.NextVersion(GitVersion.SemanticVersion! incrementedVersion, GitVersion.VersionCalculation.IBaseVersion! baseVersion, GitVersion.Configuration.EffectiveBranchConfiguration! configuration) -> void GitVersion.VersionCalculation.VersionCalculationModule GitVersion.VersionCalculation.VersionCalculationModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void GitVersion.VersionCalculation.VersionCalculationModule.VersionCalculationModule() -> void @@ -725,9 +749,6 @@ GitVersion.VersionCalculation.VersionStrategies.TaggedCommit = 4 -> GitVersion.V GitVersion.VersionCalculation.VersionStrategies.TrackReleaseBranches = 8 -> GitVersion.VersionCalculation.VersionStrategies GitVersion.VersionCalculation.VersionStrategies.TrunkBased = 32 -> GitVersion.VersionCalculation.VersionStrategies GitVersion.VersionCalculation.VersionStrategies.VersionInBranchName = 16 -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategyBase -GitVersion.VersionCalculation.VersionStrategyBase.Context.get -> GitVersion.GitVersionContext! -GitVersion.VersionCalculation.VersionStrategyBase.VersionStrategyBase(System.Lazy! versionContext) -> void GitVersion.VersionCalculation.VersionStrategyModule GitVersion.VersionCalculation.VersionStrategyModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void GitVersion.VersionCalculation.VersionStrategyModule.VersionStrategyModule() -> void @@ -746,7 +767,6 @@ GitVersion.WixInfo.WixInfo() -> void abstract GitVersion.Agents.BuildAgentBase.EnvironmentVariable.get -> string! abstract GitVersion.Agents.BuildAgentBase.GenerateSetParameterMessage(string! name, string? value) -> string![]! abstract GitVersion.Agents.BuildAgentBase.GenerateSetVersionMessage(GitVersion.OutputVariables.GitVersionVariables! variables) -> string? -abstract GitVersion.VersionCalculation.VersionStrategyBase.GetBaseVersions(GitVersion.Configuration.EffectiveBranchConfiguration! configuration) -> System.Collections.Generic.IEnumerable! const GitVersion.ReferenceName.LocalBranchPrefix = "refs/heads/" -> string! const GitVersion.ReferenceName.OriginPrefix = "origin/" -> string! const GitVersion.ReferenceName.RemoteTrackingBranchPrefix = "refs/remotes/" -> string! @@ -779,6 +799,7 @@ override GitVersion.VersionCalculation.NextVersion.ToString() -> string! readonly GitVersion.Agents.BuildAgentBase.Log -> GitVersion.Logging.ILog! static GitVersion.BranchCommit.operator !=(GitVersion.BranchCommit left, GitVersion.BranchCommit right) -> bool static GitVersion.BranchCommit.operator ==(GitVersion.BranchCommit left, GitVersion.BranchCommit right) -> bool +static GitVersion.CommitExtensions.IsMergeCommit(this GitVersion.ICommit! source) -> bool static GitVersion.Configuration.ConfigurationExtensions.FindGitDir(this string! path) -> (string! GitDirectory, string! WorkingTreeDirectory)? static GitVersion.Configuration.ConfigurationExtensions.GetBranchConfiguration(this GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.IBranch! branch) -> GitVersion.Configuration.IBranchConfiguration! static GitVersion.Configuration.ConfigurationExtensions.GetBranchConfiguration(this GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.ReferenceName! branchName) -> GitVersion.Configuration.IBranchConfiguration! @@ -787,7 +808,6 @@ static GitVersion.Configuration.ConfigurationExtensions.GetBranchSpecificLabel(t static GitVersion.Configuration.ConfigurationExtensions.GetEffectiveBranchConfiguration(this GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.IBranch! branch) -> GitVersion.Configuration.EffectiveBranchConfiguration! static GitVersion.Configuration.ConfigurationExtensions.GetEffectiveConfiguration(this GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.ReferenceName! branchName) -> GitVersion.Configuration.EffectiveConfiguration! static GitVersion.Configuration.ConfigurationExtensions.GetFallbackBranchConfiguration(this GitVersion.Configuration.IGitVersionConfiguration! configuration) -> GitVersion.Configuration.IBranchConfiguration! -static GitVersion.Configuration.ConfigurationExtensions.GetReleaseBranchConfiguration(this GitVersion.Configuration.IGitVersionConfiguration! configuration) -> System.Collections.Generic.List>! static GitVersion.Configuration.ConfigurationExtensions.IsReleaseBranch(this GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.IBranch! branch) -> bool static GitVersion.Configuration.ConfigurationExtensions.IsReleaseBranch(this GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.ReferenceName! branchName) -> bool static GitVersion.Configuration.ConfigurationExtensions.ToFilters(this GitVersion.Configuration.IIgnoreConfiguration! source) -> System.Collections.Generic.IEnumerable! diff --git a/src/GitVersion.Core/SemVer/SemanticVersion.cs b/src/GitVersion.Core/SemVer/SemanticVersion.cs index 02a63fbcd7..d889176b15 100644 --- a/src/GitVersion.Core/SemVer/SemanticVersion.cs +++ b/src/GitVersion.Core/SemVer/SemanticVersion.cs @@ -329,11 +329,11 @@ public string ToString(string? format, IFormatProvider? formatProvider) } } - public SemanticVersion Increment(VersionField incrementStrategy, string? label) - => Increment(incrementStrategy, label, mode: IncrementMode.Standard); + public SemanticVersion Increment(VersionField increment, string? label) + => Increment(increment, label, mode: IncrementMode.Standard); - public SemanticVersion Increment(VersionField incrementStrategy, string? label, bool forceIncrement) - => Increment(incrementStrategy, label, mode: forceIncrement ? IncrementMode.Force : IncrementMode.Standard); + public SemanticVersion Increment(VersionField increment, string? label, bool forceIncrement) + => Increment(increment, label, mode: forceIncrement ? IncrementMode.Force : IncrementMode.Standard); public SemanticVersion Increment(VersionField increment, string? label, IncrementMode mode) { @@ -413,7 +413,7 @@ public SemanticVersion Increment(VersionField increment, string? label, Incremen preReleaseTagName = label; } - return new(this) + return new SemanticVersion(this) { Major = major, Minor = minor, diff --git a/src/GitVersion.Core/VersionCalculation/Abstractions/IIncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/Abstractions/IIncrementStrategyFinder.cs index ff3b29a999..3326e99c94 100644 --- a/src/GitVersion.Core/VersionCalculation/Abstractions/IIncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/Abstractions/IIncrementStrategyFinder.cs @@ -5,7 +5,7 @@ namespace GitVersion.VersionCalculation; public interface IIncrementStrategyFinder { VersionField DetermineIncrementedField( - ICommit currentCommit, BaseVersion baseVersion, EffectiveConfiguration configuration, string? label); + ICommit currentCommit, ICommit? baseVersionSource, bool shouldIncrement, EffectiveConfiguration configuration, string? label); VersionField? GetIncrementForCommits( string? majorVersionBumpMessage, string? minorVersionBumpMessage, string? patchVersionBumpMessage, string? noBumpMessage, diff --git a/src/GitVersion.Core/VersionCalculation/Abstractions/IVersionFilter.cs b/src/GitVersion.Core/VersionCalculation/Abstractions/IVersionFilter.cs index f0b08c2216..f088734713 100644 --- a/src/GitVersion.Core/VersionCalculation/Abstractions/IVersionFilter.cs +++ b/src/GitVersion.Core/VersionCalculation/Abstractions/IVersionFilter.cs @@ -2,5 +2,5 @@ namespace GitVersion.VersionCalculation; public interface IVersionFilter { - bool Exclude(BaseVersion version, out string? reason); + bool Exclude(IBaseVersion baseVersion, out string? reason); } diff --git a/src/GitVersion.Core/VersionCalculation/Abstractions/IVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/Abstractions/IVersionStrategy.cs index 1050941f7c..1fcddaee17 100644 --- a/src/GitVersion.Core/VersionCalculation/Abstractions/IVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/Abstractions/IVersionStrategy.cs @@ -4,11 +4,5 @@ namespace GitVersion.VersionCalculation; public interface IVersionStrategy { - /// - /// Calculates the values. - /// - /// - /// An of the base version values found by the strategy. - /// IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration); } diff --git a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs index 21b090c30a..0cb2866c74 100644 --- a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs @@ -28,25 +28,24 @@ internal class IncrementStrategyFinder(IGitRepository repository, ITaggedSemanti private readonly ITaggedSemanticVersionRepository taggedSemanticVersionRepository = taggedSemanticVersionRepository.NotNull(); public VersionField DetermineIncrementedField( - ICommit currentCommit, BaseVersion baseVersion, EffectiveConfiguration configuration, string? label) + ICommit currentCommit, ICommit? baseVersionSource, bool shouldIncrement, EffectiveConfiguration configuration, string? label) { - baseVersion.NotNull(); + currentCommit.NotNull(); configuration.NotNull(); - var commitMessageIncrement = FindCommitMessageIncrement( - configuration, baseVersion.BaseVersionSource, currentCommit, label); + var commitMessageIncrement = FindCommitMessageIncrement(configuration, baseVersionSource, currentCommit, label); var defaultIncrement = configuration.Increment.ToVersionField(); // use the default branch configuration increment strategy if there are no commit message overrides if (commitMessageIncrement == null) { - return baseVersion.ShouldIncrement ? defaultIncrement : VersionField.None; + return shouldIncrement ? defaultIncrement : VersionField.None; } // don't increment for less than the branch configuration increment, if the absence of commit messages would have // still resulted in an increment of configuration.Increment - if (baseVersion.ShouldIncrement && commitMessageIncrement < defaultIncrement) + if (shouldIncrement && commitMessageIncrement < defaultIncrement) { return defaultIncrement; } @@ -214,7 +213,7 @@ public IEnumerable GetMergedCommits(ICommit mergeCommit, int index, IIg { mergeCommit.NotNull(); - if (!mergeCommit.IsMergeCommit) + if (!mergeCommit.IsMergeCommit()) { throw new ArgumentException("The parameter is not a merge commit.", nameof(mergeCommit)); } diff --git a/src/GitVersion.Core/VersionCalculation/MinDateVersionFilter.cs b/src/GitVersion.Core/VersionCalculation/MinDateVersionFilter.cs index 98bdd17b6e..b2fce8b7e6 100644 --- a/src/GitVersion.Core/VersionCalculation/MinDateVersionFilter.cs +++ b/src/GitVersion.Core/VersionCalculation/MinDateVersionFilter.cs @@ -5,13 +5,13 @@ namespace GitVersion.VersionCalculation; internal class MinDateVersionFilter(DateTimeOffset minimum) : IVersionFilter { - public bool Exclude(BaseVersion? version, [NotNullWhen(true)] out string? reason) + public bool Exclude(IBaseVersion baseVersion, [NotNullWhen(true)] out string? reason) { - version.NotNull(); + baseVersion.NotNull(); reason = null; - if (version.BaseVersionSource == null || version.BaseVersionSource.When >= minimum) + if (baseVersion.BaseVersionSource == null || baseVersion.BaseVersionSource.When >= minimum) return false; reason = "Source was ignored due to commit date being outside of configured range"; diff --git a/src/GitVersion.Core/VersionCalculation/NextVersion.cs b/src/GitVersion.Core/VersionCalculation/NextVersion.cs index 3b8f42fc5d..fb21719cd9 100644 --- a/src/GitVersion.Core/VersionCalculation/NextVersion.cs +++ b/src/GitVersion.Core/VersionCalculation/NextVersion.cs @@ -3,10 +3,10 @@ namespace GitVersion.VersionCalculation; -public class NextVersion(SemanticVersion incrementedVersion, BaseVersion baseVersion, EffectiveBranchConfiguration configuration) +public class NextVersion(SemanticVersion incrementedVersion, IBaseVersion baseVersion, EffectiveBranchConfiguration configuration) : IComparable, IEquatable { - public BaseVersion BaseVersion { get; } = baseVersion.NotNull(); + public IBaseVersion BaseVersion { get; } = baseVersion.NotNull(); public SemanticVersion IncrementedVersion { get; } = incrementedVersion.NotNull(); diff --git a/src/GitVersion.Core/VersionCalculation/ShaVersionFilter.cs b/src/GitVersion.Core/VersionCalculation/ShaVersionFilter.cs index a6a5c0a2a3..7f27a6375b 100644 --- a/src/GitVersion.Core/VersionCalculation/ShaVersionFilter.cs +++ b/src/GitVersion.Core/VersionCalculation/ShaVersionFilter.cs @@ -7,16 +7,17 @@ internal class ShaVersionFilter(IEnumerable shaList) : IVersionFilter { private readonly IEnumerable shaList = shaList.NotNull(); - public bool Exclude(BaseVersion? version, [NotNullWhen(true)] out string? reason) + public bool Exclude(IBaseVersion baseVersion, [NotNullWhen(true)] out string? reason) { - version.NotNull(); + baseVersion.NotNull(); reason = null; - if (version.BaseVersionSource == null || !this.shaList.Any(sha => version.BaseVersionSource.Sha.StartsWith(sha, StringComparison.OrdinalIgnoreCase))) + if (baseVersion.BaseVersionSource == null + || !this.shaList.Any(sha => baseVersion.BaseVersionSource.Sha.StartsWith(sha, StringComparison.OrdinalIgnoreCase))) return false; - reason = $"Sha {version.BaseVersionSource} was ignored due to commit having been excluded by configuration"; + reason = $"Sha {baseVersion.BaseVersionSource} was ignored due to commit having been excluded by configuration"; return true; } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/ITrunkBasedIncrementer.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/ITrunkBasedIncrementer.cs index d2a87a55be..5c8141e2ad 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/ITrunkBasedIncrementer.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/ITrunkBasedIncrementer.cs @@ -4,5 +4,6 @@ internal interface ITrunkBasedIncrementer { bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context); - IEnumerable GetIncrements(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context); + IEnumerable GetIncrements( + TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context); } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs index e04abc1d4c..3cef15ea2d 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs @@ -13,7 +13,8 @@ internal sealed class CommitOnNonTrunk : ITrunkBasedIncrementer public bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) => !commit.HasChildIteration && !commit.Configuration.IsMainBranch && context.SemanticVersion is null; - public IEnumerable GetIncrements(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public IEnumerable GetIncrements( + TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { if (commit.Predecessor is not null && commit.Predecessor.BranchName != commit.BranchName) context.Label = null; @@ -21,14 +22,15 @@ public IEnumerable GetIncrements(TrunkBasedIteration iteration, T if (commit.Successor is null) { - yield return BaseVersionV2.ShouldIncrementTrue( - source: GetType().Name, - baseVersionSource: context.BaseVersionSource, - increment: context.Increment, - label: context.Label, - forceIncrement: context.ForceIncrement, - alternativeSemanticVersion: context.AlternativeSemanticVersions.Max() - ); + yield return new BaseVersionOperator() + { + Source = GetType().Name, + BaseVersionSource = context.BaseVersionSource, + Increment = context.Increment, + ForceIncrement = context.ForceIncrement, + Label = context.Label, + AlternativeSemanticVersion = context.AlternativeSemanticVersions.Max() + }; context.BaseVersionSource = commit.Value; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs index 5e20aa5193..076ce28c5a 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs @@ -8,7 +8,8 @@ internal abstract class CommitOnNonTrunkBranchedBase : ITrunkBasedIncrementer public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) => !commit.Configuration.IsMainBranch && commit.BranchName != iteration.BranchName && commit.Successor is null; - public virtual IEnumerable GetIncrements(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public virtual IEnumerable GetIncrements( + TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { context.BaseVersionSource = commit.Value; @@ -19,11 +20,14 @@ public virtual IEnumerable GetIncrements(TrunkBasedIteration iter context.Label = iteration.Configuration.GetBranchSpecificLabel(iteration.BranchName, null) ?? context.Label; context.ForceIncrement = true; - yield return BaseVersionV2.ShouldIncrementFalse( - source: GetType().Name, - baseVersionSource: null, - label: context.Label, - alternativeSemanticVersion: context.AlternativeSemanticVersions.Max() - ); + yield return new BaseVersionOperator() + { + Source = GetType().Name, + BaseVersionSource = null, + Increment = VersionField.None, + ForceIncrement = false, + Label = context.Label, + AlternativeSemanticVersion = context.AlternativeSemanticVersions.Max() + }; } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs index 3ab8fa51fe..221ab555eb 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs @@ -9,15 +9,17 @@ public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedC => !commit.HasChildIteration && !commit.Configuration.IsMainBranch && context.SemanticVersion?.IsPreRelease == true; - public virtual IEnumerable GetIncrements(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public virtual IEnumerable GetIncrements( + TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { context.BaseVersionSource = commit.Value; - yield return BaseVersionV2.ShouldIncrementFalse( - source: GetType().Name, - baseVersionSource: context.BaseVersionSource, - semanticVersion: context.SemanticVersion.NotNull() - ); + yield return new BaseVersionOperand() + { + Source = GetType().Name, + BaseVersionSource = context.BaseVersionSource, + SemanticVersion = context.SemanticVersion.NotNull() + }; context.Increment = commit.GetIncrementForcedByBranch(); context.Label = commit.Configuration.GetBranchSpecificLabel(commit.BranchName, null); diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs index acd43c9917..30c46d0850 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs @@ -9,15 +9,17 @@ public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedC => !commit.Configuration.IsMainBranch && !commit.HasChildIteration && context.SemanticVersion?.IsPreRelease == false; - public virtual IEnumerable GetIncrements(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public virtual IEnumerable GetIncrements( + TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { context.BaseVersionSource = commit.Value; - yield return BaseVersionV2.ShouldIncrementFalse( - source: GetType().Name, - baseVersionSource: context.BaseVersionSource, - semanticVersion: context.SemanticVersion.NotNull() - ); + yield return new BaseVersionOperand() + { + Source = GetType().Name, + BaseVersionSource = context.BaseVersionSource, + SemanticVersion = context.SemanticVersion.NotNull() + }; context.Increment = commit.GetIncrementForcedByBranch(); context.Label = commit.Configuration.GetBranchSpecificLabel(commit.BranchName, null); diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastCommitOnNonTrunkWithPreReleaseTag.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastCommitOnNonTrunkWithPreReleaseTag.cs index c8beb167f4..151d56927f 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastCommitOnNonTrunkWithPreReleaseTag.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastCommitOnNonTrunkWithPreReleaseTag.cs @@ -8,19 +8,22 @@ internal sealed class LastCommitOnNonTrunkWithPreReleaseTag : CommitOnNonTrunkWi public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) => base.MatchPrecondition(iteration, commit, context) && commit.Successor is null; - public override IEnumerable GetIncrements(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override IEnumerable GetIncrements( + TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { foreach (var item in base.GetIncrements(iteration, commit, context)) { yield return item; } - yield return BaseVersionV2.ShouldIncrementTrue( - source: GetType().Name, - baseVersionSource: context.BaseVersionSource, - increment: context.Increment, - label: context.Label, - forceIncrement: false - ); + yield return new BaseVersionOperator() + { + Source = GetType().Name, + BaseVersionSource = context.BaseVersionSource, + Increment = context.Increment, + ForceIncrement = false, + Label = context.Label, + AlternativeSemanticVersion = context.AlternativeSemanticVersions.Max() + }; } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastCommitOnNonTrunkWithStableTag.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastCommitOnNonTrunkWithStableTag.cs index b3db70ebde..b581a4342d 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastCommitOnNonTrunkWithStableTag.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastCommitOnNonTrunkWithStableTag.cs @@ -8,19 +8,22 @@ internal sealed class LastCommitOnNonTrunkWithStableTag : CommitOnNonTrunkWithSt public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) => base.MatchPrecondition(iteration, commit, context) && commit.Successor is null; - public override IEnumerable GetIncrements(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override IEnumerable GetIncrements( + TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { foreach (var item in base.GetIncrements(iteration, commit, context)) { yield return item; } - yield return BaseVersionV2.ShouldIncrementTrue( - source: GetType().Name, - baseVersionSource: context.BaseVersionSource, - increment: context.Increment, - label: context.Label, - forceIncrement: true - ); + yield return new BaseVersionOperator() + { + Source = GetType().Name, + BaseVersionSource = context.BaseVersionSource, + Increment = context.Increment, + ForceIncrement = true, + Label = context.Label, + AlternativeSemanticVersion = context.AlternativeSemanticVersions.Max() + }; } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastMergeCommitOnNonTrunk.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastMergeCommitOnNonTrunk.cs index 427446454a..a25c69e7a4 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastMergeCommitOnNonTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastMergeCommitOnNonTrunk.cs @@ -9,20 +9,22 @@ internal sealed class LastMergeCommitOnNonTrunk : MergeCommitOnNonTrunkBase public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) => base.MatchPrecondition(iteration, commit, context) && commit.Successor is null; - public override IEnumerable GetIncrements(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override IEnumerable GetIncrements( + TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { foreach (var item in base.GetIncrements(iteration, commit, context)) { yield return item; } - yield return BaseVersionV2.ShouldIncrementTrue( - source: GetType().Name, - baseVersionSource: context.BaseVersionSource, - increment: context.Increment, - label: context.TargetLabel ?? context.Label, - forceIncrement: context.ForceIncrement, - alternativeSemanticVersion: context.AlternativeSemanticVersions.Max() - ); + yield return new BaseVersionOperator() + { + Source = GetType().Name, + BaseVersionSource = context.BaseVersionSource, + Increment = context.Increment, + ForceIncrement = context.ForceIncrement, + Label = context.TargetLabel ?? context.Label, + AlternativeSemanticVersion = context.AlternativeSemanticVersions.Max() + }; } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs index 0b13991ae0..d0458f98e3 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs @@ -7,7 +7,8 @@ internal abstract class MergeCommitOnNonTrunkBase : ITrunkBasedIncrementer public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) => commit.HasChildIteration && !commit.Configuration.IsMainBranch && context.SemanticVersion is null; - public virtual IEnumerable GetIncrements(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public virtual IEnumerable GetIncrements( + TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { if (commit.ChildIteration is null) throw new InvalidOperationException("The commit child iteration is null."); @@ -16,7 +17,7 @@ public virtual IEnumerable GetIncrements(TrunkBasedIteration iter targetLabel: context.TargetLabel ); - context.Label ??= baseVersion.Label; + context.Label ??= baseVersion.Operator?.Label; var increment = VersionField.None; if (!commit.Configuration.PreventIncrementOfMergedBranch) @@ -25,7 +26,7 @@ public virtual IEnumerable GetIncrements(TrunkBasedIteration iter } if (!commit.ChildIteration.Configuration.PreventIncrementWhenBranchMerged) { - increment = increment.Consolidate(baseVersion.Increment); + increment = increment.Consolidate(baseVersion.Operator?.Increment); } if (commit.Configuration.CommitMessageIncrementing != CommitMessageIncrementMode.Disabled) { @@ -36,11 +37,11 @@ public virtual IEnumerable GetIncrements(TrunkBasedIteration iter if (baseVersion.BaseVersionSource is not null) { context.BaseVersionSource = baseVersion.BaseVersionSource; - context.SemanticVersion = baseVersion.GetSemanticVersion(); + context.SemanticVersion = baseVersion.SemanticVersion; } - else if (baseVersion.AlternativeSemanticVersion is not null) + else if (baseVersion.Operator?.AlternativeSemanticVersion is not null) { - context.AlternativeSemanticVersions.Add(baseVersion.AlternativeSemanticVersion); + context.AlternativeSemanticVersions.Add(baseVersion.Operator.AlternativeSemanticVersion); } yield break; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunk.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunk.cs index 558e3c914e..9c20645c01 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunk.cs @@ -13,21 +13,23 @@ internal sealed class CommitOnTrunk : ITrunkBasedIncrementer public bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) => !commit.HasChildIteration && commit.Configuration.IsMainBranch && context.SemanticVersion is null; - public IEnumerable GetIncrements(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public IEnumerable GetIncrements( + TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { if (commit.Predecessor is not null && commit.Predecessor.BranchName != commit.BranchName) context.Label = null; context.Label ??= commit.Configuration.GetBranchSpecificLabel(commit.BranchName, null); context.ForceIncrement = true; - yield return BaseVersionV2.ShouldIncrementTrue( - source: GetType().Name, - baseVersionSource: context.BaseVersionSource, - increment: context.Increment, - label: context.Label, - forceIncrement: context.ForceIncrement, - alternativeSemanticVersion: context.AlternativeSemanticVersions.Max() - ); + yield return new BaseVersionOperator() + { + Source = GetType().Name, + BaseVersionSource = context.BaseVersionSource, + Increment = context.Increment, + ForceIncrement = context.ForceIncrement, + Label = context.Label, + AlternativeSemanticVersion = context.AlternativeSemanticVersions.Max() + }; context.BaseVersionSource = commit.Value; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs index db20d39e2b..9a74aa10ea 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs @@ -7,7 +7,7 @@ internal abstract class CommitOnTrunkBranchedBase : ITrunkBasedIncrementer public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) => commit.Configuration.IsMainBranch && commit.BranchName != iteration.BranchName && commit.Successor is null; - public virtual IEnumerable GetIncrements( + public virtual IEnumerable GetIncrements( TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { context.BaseVersionSource = commit.Value; @@ -19,13 +19,14 @@ public virtual IEnumerable GetIncrements( context.Label = iteration.Configuration.GetBranchSpecificLabel(iteration.BranchName, null) ?? context.Label; context.ForceIncrement = true; - yield return BaseVersionV2.ShouldIncrementTrue( - source: GetType().Name, - baseVersionSource: context.BaseVersionSource, - increment: context.Increment, - label: context.Label, - forceIncrement: context.ForceIncrement, - alternativeSemanticVersion: context.AlternativeSemanticVersions.Max() - ); + yield return new BaseVersionOperator() + { + Source = GetType().Name, + BaseVersionSource = context.BaseVersionSource, + Increment = context.Increment, + ForceIncrement = context.ForceIncrement, + Label = context.Label, + AlternativeSemanticVersion = context.AlternativeSemanticVersions.Max() + }; } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs index 5b92871f58..953ebc3f9d 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs @@ -8,14 +8,16 @@ public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedC => commit.Configuration.IsMainBranch && !commit.HasChildIteration && context.SemanticVersion?.IsPreRelease == true; - public virtual IEnumerable GetIncrements(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public virtual IEnumerable GetIncrements( + TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { context.BaseVersionSource = commit.Value; - yield return BaseVersionV2.ShouldIncrementFalse( - source: GetType().Name, - baseVersionSource: context.BaseVersionSource, - semanticVersion: context.SemanticVersion.NotNull() - ); + yield return new BaseVersionOperand() + { + Source = GetType().Name, + BaseVersionSource = context.BaseVersionSource, + SemanticVersion = context.SemanticVersion.NotNull() + }; } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTagBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTagBase.cs index d880036c63..65de504abc 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTagBase.cs @@ -9,15 +9,17 @@ public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedC => commit.Configuration.IsMainBranch && !commit.HasChildIteration && context.SemanticVersion?.IsPreRelease == false; - public virtual IEnumerable GetIncrements(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public virtual IEnumerable GetIncrements( + TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { context.BaseVersionSource = commit.Value; - yield return BaseVersionV2.ShouldIncrementFalse( - source: GetType().Name, - baseVersionSource: context.BaseVersionSource, - semanticVersion: context.SemanticVersion.NotNull() - ); + yield return new BaseVersionOperand() + { + Source = GetType().Name, + SemanticVersion = context.SemanticVersion.NotNull(), + BaseVersionSource = context.BaseVersionSource + }; context.Label = commit.Configuration.GetBranchSpecificLabel(commit.BranchName, null); } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs index 0109a65ab4..2924d8fc1e 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs @@ -10,7 +10,8 @@ internal sealed class LastCommitOnTrunkWithPreReleaseTag : CommitOnTrunkWithPreR public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) => base.MatchPrecondition(iteration, commit, context) && commit.Successor is null; - public override IEnumerable GetIncrements(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override IEnumerable GetIncrements( + TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { foreach (var item in base.GetIncrements(iteration, commit, context)) { @@ -23,13 +24,15 @@ public override IEnumerable GetIncrements(TrunkBasedIteration ite context.Label = commit.Configuration.GetBranchSpecificLabel(commit.BranchName, null); context.ForceIncrement = false; - yield return BaseVersionV2.ShouldIncrementTrue( - source: GetType().Name, - baseVersionSource: context.BaseVersionSource, - increment: context.Increment, - label: context.Label, - forceIncrement: context.ForceIncrement - ); + yield return new BaseVersionOperator() + { + Source = GetType().Name, + BaseVersionSource = context.BaseVersionSource, + Increment = context.Increment, + ForceIncrement = context.ForceIncrement, + Label = context.Label, + AlternativeSemanticVersion = context.AlternativeSemanticVersions.Max() + }; } } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs index 96e75b57a5..7ec910b0f5 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs @@ -8,7 +8,8 @@ internal sealed class LastCommitOnTrunkWithStableTag : CommitOnTrunkWithStableTa public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) => base.MatchPrecondition(iteration, commit, context) && commit.Successor is null; - public override IEnumerable GetIncrements(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override IEnumerable GetIncrements( + TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { foreach (var item in base.GetIncrements(iteration, commit, context)) { @@ -19,13 +20,15 @@ public override IEnumerable GetIncrements(TrunkBasedIteration ite { context.ForceIncrement = true; - yield return BaseVersionV2.ShouldIncrementTrue( - source: GetType().Name, - baseVersionSource: context.BaseVersionSource, - increment: context.Increment, - label: context.Label, - forceIncrement: context.ForceIncrement - ); + yield return new BaseVersionOperator() + { + Source = GetType().Name, + BaseVersionSource = context.BaseVersionSource, + Increment = context.Increment, + ForceIncrement = context.ForceIncrement, + Label = context.Label, + AlternativeSemanticVersion = context.AlternativeSemanticVersions.Max() + }; } } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunkBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunkBase.cs index eab7856088..165984cdcc 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunkBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunkBase.cs @@ -7,7 +7,8 @@ internal abstract class MergeCommitOnTrunkBase : ITrunkBasedIncrementer public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) => commit.HasChildIteration && commit.Configuration.IsMainBranch && context.SemanticVersion is null; - public virtual IEnumerable GetIncrements(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public virtual IEnumerable GetIncrements( + TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { if (commit.ChildIteration is null) throw new InvalidOperationException("The commit child iteration is null."); @@ -16,7 +17,7 @@ public virtual IEnumerable GetIncrements(TrunkBasedIteration iter targetLabel: context.TargetLabel ); - context.Label ??= baseVersion.Label; + context.Label ??= baseVersion.Operator?.Label; var increment = VersionField.None; if (!commit.Configuration.PreventIncrementOfMergedBranch) @@ -25,7 +26,7 @@ public virtual IEnumerable GetIncrements(TrunkBasedIteration iter } if (!commit.ChildIteration.Configuration.PreventIncrementWhenBranchMerged) { - increment = increment.Consolidate(baseVersion.Increment); + increment = increment.Consolidate(baseVersion.Operator?.Increment); } if (commit.Configuration.CommitMessageIncrementing != CommitMessageIncrementMode.Disabled) { @@ -36,31 +37,33 @@ public virtual IEnumerable GetIncrements(TrunkBasedIteration iter if (baseVersion.BaseVersionSource is not null) { context.BaseVersionSource = baseVersion.BaseVersionSource; - context.SemanticVersion = baseVersion.GetSemanticVersion(); - context.ForceIncrement = baseVersion.ForceIncrement; + context.SemanticVersion = baseVersion.SemanticVersion; + context.ForceIncrement = baseVersion.Operator?.ForceIncrement ?? false; } - else if (baseVersion.AlternativeSemanticVersion is not null) + else if (baseVersion.Operator?.AlternativeSemanticVersion is not null) { - context.AlternativeSemanticVersions.Add(baseVersion.AlternativeSemanticVersion); + context.AlternativeSemanticVersions.Add(baseVersion.Operator.AlternativeSemanticVersion); } if (context.SemanticVersion is not null) { - yield return BaseVersionV2.ShouldIncrementFalse( - source: GetType().Name, - baseVersionSource: context.BaseVersionSource, - semanticVersion: context.SemanticVersion.NotNull() - ); + yield return new BaseVersionOperand() + { + Source = GetType().Name, + BaseVersionSource = context.BaseVersionSource, + SemanticVersion = context.SemanticVersion.NotNull() + }; } - yield return BaseVersionV2.ShouldIncrementTrue( - source: GetType().Name, - baseVersionSource: context.BaseVersionSource, - increment: context.Increment, - label: context.Label, - forceIncrement: context.ForceIncrement, - alternativeSemanticVersion: context.AlternativeSemanticVersions.Max() - ); + yield return new BaseVersionOperator() + { + Source = GetType().Name, + BaseVersionSource = context.BaseVersionSource, + Increment = context.Increment, + ForceIncrement = context.ForceIncrement, + Label = context.Label, + AlternativeSemanticVersion = context.AlternativeSemanticVersions.Max() + }; context.BaseVersionSource = commit.Value; } diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs index 2f30762a9c..eaef246264 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs @@ -174,7 +174,7 @@ private NextVersion CalculateNextVersion(IBranch branch, IGitVersionConfiguratio { // If the maximal version has no pre-release tag defined than we want to determine just the latest previous // base source which are not coming from pre-release tag. - filteredVersions = filteredVersions.Where(v => !v.BaseVersion.GetSemanticVersion().PreReleaseTag.HasTag()); + filteredVersions = filteredVersions.Where(v => !v.BaseVersion.SemanticVersion.PreReleaseTag.HasTag()); } var versions = filteredVersions as NextVersion[] ?? filteredVersions.ToArray(); @@ -190,13 +190,21 @@ private NextVersion CalculateNextVersion(IBranch branch, IGitVersionConfiguratio latestBaseVersionSource = version.BaseVersion.BaseVersionSource; } - var calculatedBase = new BaseVersion( - maxVersion.BaseVersion.Source, - maxVersion.BaseVersion.ShouldIncrement, - maxVersion.BaseVersion.GetSemanticVersion(), - latestBaseVersionSource, - maxVersion.BaseVersion.BranchNameOverride - ); + //var calculatedBase = new BaseVersionFinal(maxVersion.BaseVersion.Source) + //{ + // SemanticVersion = maxVersion.BaseVersion.SemanticVersion, + // BaseVersionSource = latestBaseVersionSource + //}; + + BaseVersion calculatedBase = new() + { + Operand = new BaseVersionOperand() + { + Source = maxVersion.BaseVersion.Source, + BaseVersionSource = latestBaseVersionSource, + SemanticVersion = maxVersion.BaseVersion.SemanticVersion + } + }; log.Info($"Base version used: {calculatedBase}"); log.Separator(); @@ -244,10 +252,13 @@ IEnumerable GetNextVersionsInternal() foreach (var baseVersion in versionStrategy.GetBaseVersions(effectiveBranchConfiguration)) { log.Info(baseVersion.ToString()); - if (IncludeVersion(baseVersion, configuration.Ignore) - && TryGetNextVersion(out var nextVersion, effectiveBranchConfiguration, baseVersion)) + if (IncludeVersion(baseVersion, configuration.Ignore)) { - yield return nextVersion; + yield return new NextVersion( + incrementedVersion: baseVersion.GetIncrementedVersion(), + baseVersion: baseVersion, + configuration: effectiveBranchConfiguration + ); atLeastOneBaseVersionReturned = true; } } @@ -256,78 +267,33 @@ IEnumerable GetNextVersionsInternal() if (!atLeastOneBaseVersionReturned) { - var baseVersion = new BaseVersion("Fallback base version", true, SemanticVersion.Empty, null, null); - if (TryGetNextVersion(out var nextVersion, effectiveBranchConfiguration, baseVersion)) - yield return nextVersion; + var label = effectiveBranchConfiguration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); + var increment = incrementStrategyFinder.DetermineIncrementedField( + currentCommit: Context.CurrentCommit, + baseVersionSource: null, + shouldIncrement: true, + configuration: effectiveBranchConfiguration.Value, + label: label + ); + + BaseVersion baseVersion = new() + { + Operator = new BaseVersionOperator() + { + Source = "Fallback base version", + BaseVersionSource = null, + Increment = increment, + ForceIncrement = false, + Label = label + } + }; + yield return new NextVersion(baseVersion.GetIncrementedVersion(), baseVersion, effectiveBranchConfiguration); } } } } - private bool TryGetNextVersion([NotNullWhen(true)] out NextVersion? result, - EffectiveBranchConfiguration effectiveConfiguration, BaseVersion baseVersion) - { - result = null; - - var label = effectiveConfiguration.Value.GetBranchSpecificLabel( - Context.CurrentBranch.Name, baseVersion.BranchNameOverride - ); - if (effectiveConfiguration.Value.Label != label) - { - log.Info("Using current branch name to calculate version tag"); - } - - var incrementedVersion = GetIncrementedVersion(effectiveConfiguration, baseVersion, label); - if (incrementedVersion.IsMatchForBranchSpecificLabel(label)) - { - result = new(incrementedVersion, baseVersion, effectiveConfiguration); - } - - return result is not null; - } - - private SemanticVersion GetIncrementedVersion(EffectiveBranchConfiguration configuration, BaseVersion baseVersion, string? label) - { - if (baseVersion is BaseVersionV2 baseVersionV2) - { - SemanticVersion result; - if (baseVersion.ShouldIncrement) - { - result = baseVersionV2.GetSemanticVersion().Increment( - baseVersionV2.Increment, baseVersionV2.Label, baseVersionV2.ForceIncrement - ); - } - else - { - result = baseVersion.GetSemanticVersion(); - } - - if (baseVersionV2.AlternativeSemanticVersion is not null - && result.IsLessThan(baseVersionV2.AlternativeSemanticVersion, includePreRelease: false)) - { - return new SemanticVersion(result) - { - Major = baseVersionV2.AlternativeSemanticVersion.Major, - Minor = baseVersionV2.AlternativeSemanticVersion.Minor, - Patch = baseVersionV2.AlternativeSemanticVersion.Patch - }; - } - - return result; - } - else - { - var incrementStrategy = incrementStrategyFinder.DetermineIncrementedField( - currentCommit: Context.CurrentCommit, - baseVersion: baseVersion, - configuration: configuration.Value, - label: label - ); - return baseVersion.GetSemanticVersion().Increment(incrementStrategy, label); - } - } - - private bool IncludeVersion(BaseVersion baseVersion, IIgnoreConfiguration ignoreConfiguration) + private bool IncludeVersion(IBaseVersion baseVersion, IIgnoreConfiguration ignoreConfiguration) { foreach (var versionFilter in ignoreConfiguration.ToFilters()) { diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs index 71279ff18b..a3374e9626 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs @@ -1,50 +1,104 @@ +using System.Diagnostics.CodeAnalysis; using GitVersion.Extensions; namespace GitVersion.VersionCalculation; -public class BaseVersion +public sealed record class BaseVersion : IBaseVersion { - public BaseVersion(string source, bool shouldIncrement) + public BaseVersion() : this(new BaseVersionOperand()) { - Source = source.NotNullOrEmpty(); - ShouldIncrement = shouldIncrement; } - public BaseVersion(string source, bool shouldIncrement, SemanticVersion semanticVersion, ICommit? baseVersionSource, string? branchNameOverride) + public BaseVersion(string source, SemanticVersion semanticVersion, ICommit? baseVersionSource = null) + : this(new BaseVersionOperand(source, semanticVersion, baseVersionSource)) { - Source = source; - ShouldIncrement = shouldIncrement; - SemanticVersion = semanticVersion; - BaseVersionSource = baseVersionSource; - BranchNameOverride = branchNameOverride; } - public BaseVersion(BaseVersion baseVersion) + public BaseVersion(BaseVersionOperand baseVersionOperand) => Operand = baseVersionOperand.NotNull(); + + public string Source => (Operator?.Source).IsNullOrEmpty() ? Operand.Source : Operator.Source; + + public SemanticVersion SemanticVersion => Operand.SemanticVersion; + + public ICommit? BaseVersionSource => Operator?.BaseVersionSource ?? Operand.BaseVersionSource; + + [MemberNotNullWhen(true, nameof(Operator))] + public bool ShouldBeIncremented => Operator is not null; + + public BaseVersionOperand Operand { get; init; } + + public BaseVersionOperator? Operator { get; init; } + + public SemanticVersion GetIncrementedVersion() { - baseVersion.NotNull(); + var result = SemanticVersion; - Source = baseVersion.Source; - ShouldIncrement = baseVersion.ShouldIncrement; - SemanticVersion = baseVersion.SemanticVersion; - BaseVersionSource = baseVersion.BaseVersionSource; - BranchNameOverride = baseVersion.BranchNameOverride; + if (ShouldBeIncremented) + { + result = result.Increment( + increment: Operator.Increment, + label: Operator.Label, + forceIncrement: Operator.ForceIncrement + ); + + if (result.IsLessThan(Operator.AlternativeSemanticVersion, includePreRelease: false)) + { + result = new SemanticVersion(result) + { + Major = Operator.AlternativeSemanticVersion!.Major, + Minor = Operator.AlternativeSemanticVersion.Minor, + Patch = Operator.AlternativeSemanticVersion.Patch + }; + } + } + + return result; } - public string Source { get; init; } + public override string ToString() + { + var commitSource = BaseVersionSource?.Id.ToString(7) ?? "External"; - public bool ShouldIncrement { get; init; } + StringBuilder stringBuilder = new(); + if (ShouldBeIncremented) + { + stringBuilder.Append($"{Source}: "); + if (Operator.ForceIncrement) + stringBuilder.Append("Force version increment "); + else + { + stringBuilder.Append("Version increment "); + } - public SemanticVersion? SemanticVersion { get; init; } + if (SemanticVersion is not null) + stringBuilder.Append($"'{SemanticVersion:f}' "); - public SemanticVersion GetSemanticVersion() => SemanticVersion ?? SemanticVersion.Empty; + stringBuilder.Append($"+semver '{Operator.Increment}'"); - public ICommit? BaseVersionSource { get; init; } + if (Operator.Label is null) + stringBuilder.Append(" with no label"); + else + { + stringBuilder.Append($" with label '{Operator.Label}'"); + } + } + else + { + stringBuilder.Append($"{Source}: Take '{SemanticVersion:f}'"); + } - public string? BranchNameOverride { get; init; } + if (BaseVersionSource is not null) + stringBuilder.Append($" based on commit '{commitSource}'."); + return stringBuilder.ToString(); + } - public override string ToString() + internal BaseVersion Apply(BaseVersionOperator baseVersionOperator) { - var externalSource = BaseVersionSource == null ? "External Source" : BaseVersionSource.Sha; - return $"{Source}: {GetSemanticVersion():f} with commit source '{externalSource}'"; + baseVersionOperator.NotNull(); + + return new BaseVersion(Source, GetIncrementedVersion(), BaseVersionSource) + { + Operator = baseVersionOperator + }; } } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs new file mode 100644 index 0000000000..4e3b44477b --- /dev/null +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs @@ -0,0 +1,23 @@ +using GitVersion.Extensions; + +namespace GitVersion.VersionCalculation; + +public sealed record class BaseVersionOperand : IBaseVersionIncrement +{ + public BaseVersionOperand() : this(string.Empty, SemanticVersion.Empty) + { + } + + public BaseVersionOperand(string source, SemanticVersion semanticVersion, ICommit? baseVersionSource = null) + { + Source = source.NotNull(); + SemanticVersion = semanticVersion.NotNull(); + BaseVersionSource = baseVersionSource; + } + + public string Source { get; init; } + + public SemanticVersion SemanticVersion { get; init; } + + public ICommit? BaseVersionSource { get; init; } +} diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperator.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperator.cs new file mode 100644 index 0000000000..11268c82b5 --- /dev/null +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperator.cs @@ -0,0 +1,16 @@ +namespace GitVersion.VersionCalculation; + +public sealed record class BaseVersionOperator : IBaseVersionIncrement +{ + public string Source { get; init; } = string.Empty; + + public ICommit? BaseVersionSource { get; init; } + + public VersionField Increment { get; init; } + + public bool ForceIncrement { get; init; } + + public string? Label { get; init; } + + public SemanticVersion? AlternativeSemanticVersion { get; init; } +} diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionV2.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionV2.cs deleted file mode 100644 index f948fea0b6..0000000000 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionV2.cs +++ /dev/null @@ -1,88 +0,0 @@ -namespace GitVersion.VersionCalculation; - -// TODO: The fact that BaseVersionV2 is extending BaseVersion is a temporary construct because we want to have a clear focus on the new functionality of the TrunkBased strategy. In long term we need to consolidate this two types in one type. -internal class BaseVersionV2 : BaseVersion -{ - internal static BaseVersionV2 ShouldIncrementFalse(string source, ICommit? baseVersionSource, string? label, SemanticVersion? alternativeSemanticVersion = null) => new(source, false) - { - BaseVersionSource = baseVersionSource, - Increment = VersionField.None, - SemanticVersion = null, - Label = label, - AlternativeSemanticVersion = alternativeSemanticVersion - }; - - internal static BaseVersionV2 ShouldIncrementFalse(string source, ICommit? baseVersionSource, SemanticVersion semanticVersion) => new(source, false) - { - BaseVersionSource = baseVersionSource, - Increment = VersionField.None, - SemanticVersion = semanticVersion - }; - - internal static BaseVersionV2 ShouldIncrementTrue(string source, ICommit? baseVersionSource, VersionField increment, string? label, bool forceIncrement, SemanticVersion? alternativeSemanticVersion = null) => new(source, true) - { - BaseVersionSource = baseVersionSource, - Increment = increment, - Label = label, - ForceIncrement = forceIncrement, - AlternativeSemanticVersion = alternativeSemanticVersion - }; - - public BaseVersionV2(string source, bool shouldIncrement) : base(source, shouldIncrement) - { - } - - public BaseVersionV2(string source, bool shouldIncrement, SemanticVersion semanticVersion, ICommit? baseVersionSource, string? branchNameOverride) - : base(source, shouldIncrement, semanticVersion, baseVersionSource, branchNameOverride) - { - } - - public bool ForceIncrement { get; init; } - - public VersionField Increment { get; init; } - - public string? Label { get; init; } - - internal SemanticVersion? AlternativeSemanticVersion { get; init; } - - public override string ToString() - { - var commitSource = BaseVersionSource?.Id.ToString(7) ?? "External"; - - StringBuilder stringBuilder = new(); - if (ShouldIncrement) - { - stringBuilder.Append($"{Source}: "); - if (ForceIncrement) - stringBuilder.Append("Force version increment "); - else - { - stringBuilder.Append("Version increment "); - } - - if (SemanticVersion is not null) - stringBuilder.Append($"'{SemanticVersion:f}' "); - - stringBuilder.Append($"+semver '{Increment}'"); - - if (Label is null) - stringBuilder.Append(" with no label"); - else - { - stringBuilder.Append($" with label '{Label}'"); - } - } - else if (SemanticVersion is null) - { - stringBuilder.Append($"{Source}: Label as '{Label}'"); - } - else - { - stringBuilder.Append($"{Source}: Take '{GetSemanticVersion():f}'"); - } - - if (BaseVersionSource is not null) - stringBuilder.Append($" based on commit '{commitSource}'."); - return stringBuilder.ToString(); - } -} diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/ConfiguredNextVersionVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/ConfiguredNextVersionVersionStrategy.cs index 348a7a6a82..0cca57e4f3 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/ConfiguredNextVersionVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/ConfiguredNextVersionVersionStrategy.cs @@ -8,19 +8,45 @@ namespace GitVersion.VersionCalculation; /// BaseVersionSource is null. /// Does not increment. /// -internal class ConfiguredNextVersionVersionStrategy(Lazy versionContext) : VersionStrategyBase(versionContext) +internal sealed class ConfiguredNextVersionVersionStrategy(Lazy contextLazy) : IVersionStrategy { - public override IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) + private readonly Lazy contextLazy = contextLazy.NotNull(); + + private GitVersionContext Context => contextLazy.Value; + + public IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) { + configuration.NotNull(); + if (!Context.Configuration.VersionStrategy.HasFlag(VersionStrategies.ConfiguredNextVersion)) yield break; - var contextConfiguration = Context.Configuration; - var nextVersion = contextConfiguration.NextVersion; + var nextVersion = Context.Configuration.NextVersion; if (!nextVersion.IsNullOrEmpty()) { - var semanticVersion = SemanticVersion.Parse(nextVersion, contextConfiguration.TagPrefix, contextConfiguration.SemanticVersionFormat); - yield return new("NextVersion in GitVersion configuration file", false, semanticVersion, null, null); + var semanticVersion = SemanticVersion.Parse( + nextVersion, Context.Configuration.TagPrefix, Context.Configuration.SemanticVersionFormat + ); + var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); + + if (semanticVersion.IsMatchForBranchSpecificLabel(label)) + { + BaseVersionOperator? operation = null; + if (!semanticVersion.IsPreRelease || label is not null && semanticVersion.PreReleaseTag.Name != label) + { + operation = new BaseVersionOperator() + { + Increment = VersionField.None, + ForceIncrement = false, + Label = label + }; + } + + yield return new BaseVersion("NextVersion in GitVersion configuration file", semanticVersion) + { + Operator = operation + }; + } } } } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/IBaseVersion.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/IBaseVersion.cs new file mode 100644 index 0000000000..d8c2c1c8f4 --- /dev/null +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/IBaseVersion.cs @@ -0,0 +1,6 @@ +namespace GitVersion.VersionCalculation; + +public interface IBaseVersion : IBaseVersionIncrement +{ + SemanticVersion SemanticVersion { get; } +} diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/IBaseVersionIncrement.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/IBaseVersionIncrement.cs new file mode 100644 index 0000000000..e22cfbd9f8 --- /dev/null +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/IBaseVersionIncrement.cs @@ -0,0 +1,8 @@ +namespace GitVersion.VersionCalculation; + +public interface IBaseVersionIncrement +{ + string Source { get; } + + ICommit? BaseVersionSource { get; } +} diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs index 9ea12dded1..fd26fce6b4 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs @@ -1,4 +1,3 @@ -using System.Diagnostics.CodeAnalysis; using GitVersion.Common; using GitVersion.Configuration; using GitVersion.Extensions; @@ -11,70 +10,67 @@ namespace GitVersion.VersionCalculation; /// BaseVersionSource is the commit where the message was found. /// Increments if PreventIncrementOfMergedBranchVersion (from the branch configuration) is false. /// -internal class MergeMessageVersionStrategy(ILog log, Lazy versionContext, IRepositoryStore repositoryStore) - : VersionStrategyBase(versionContext) +internal sealed class MergeMessageVersionStrategy(ILog log, Lazy contextLazy, + IRepositoryStore repositoryStore, IIncrementStrategyFinder incrementStrategyFinder) + : IVersionStrategy { private readonly ILog log = log.NotNull(); + private readonly Lazy contextLazy = contextLazy.NotNull(); private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); + private readonly IIncrementStrategyFinder incrementStrategyFinder = incrementStrategyFinder.NotNull(); - public override IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) - { - if (!Context.Configuration.VersionStrategy.HasFlag(VersionStrategies.MergeMessage) || !configuration.Value.TrackMergeMessage) - return []; + private GitVersionContext Context => contextLazy.Value; - var commitsPriorToThan = configuration.Value.Ignore.Filter(Context.CurrentBranchCommits); - var baseVersions = commitsPriorToThan - .SelectMany(commit => - { - if (TryParse(commit, Context, out var mergeMessage) && mergeMessage.Version != null - && Context.Configuration.IsReleaseBranch(mergeMessage.MergedBranch!)) - { - this.log.Info($"Found commit [{commit}] matching merge message format: {mergeMessage.FormatName}"); - var shouldIncrement = !configuration.Value.PreventIncrementOfMergedBranch; + public IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) + => GetBaseVersionsInternal(configuration).Take(5); - var message = commit.Message.Trim(); + private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfiguration configuration) + { + configuration.NotNull(); - var baseVersionSource = commit; + if (!Context.Configuration.VersionStrategy.HasFlag(VersionStrategies.MergeMessage) + || !configuration.Value.TrackMergeMessage) + yield break; - if (shouldIncrement) + foreach (var commit in configuration.Value.Ignore.Filter(Context.CurrentBranchCommits)) + { + if (MergeMessage.TryParse(commit, Context.Configuration, out var mergeMessage) + && mergeMessage.Version is not null + && Context.Configuration.IsReleaseBranch(mergeMessage.MergedBranch!)) + { + this.log.Info($"Found commit [{commit}] matching merge message format: {mergeMessage.FormatName}"); + + var shouldIncrement = !configuration.Value.PreventIncrementOfMergedBranch; + var message = commit.Message.Trim(); + var baseVersionSource = commit; + if (shouldIncrement) + { + var parents = commit.Parents.ToArray(); + if (parents.Length == 2 && message.Contains("Merge branch") && message.Contains("release")) { - var parents = commit.Parents.ToArray(); - if (parents.Length == 2 && message.Contains("Merge branch") && message.Contains("release")) - { - baseVersionSource = this.repositoryStore.FindMergeBase(parents[0], parents[1]); - } + baseVersionSource = this.repositoryStore.FindMergeBase(parents[0], parents[1]); } - - var baseVersion = new BaseVersion( - source: $"Merge message '{message}'", - shouldIncrement: shouldIncrement, - semanticVersion: mergeMessage.Version, - baseVersionSource: baseVersionSource, - branchNameOverride: null - ); - return new[] { baseVersion }; } - return []; - }) - .Take(5) - .ToList(); - return baseVersions; - } - private static bool TryParse(ICommit mergeCommit, GitVersionContext context, [NotNullWhen(true)] out MergeMessage? mergeMessage) - { - mergeMessage = Inner(mergeCommit, context); - return mergeMessage != null; - } + var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); + var increment = shouldIncrement ? incrementStrategyFinder.DetermineIncrementedField( + currentCommit: Context.CurrentCommit, + baseVersionSource: baseVersionSource, + shouldIncrement: true, + configuration: configuration.Value, + label: label + ) : VersionField.None; - private static MergeMessage? Inner(ICommit mergeCommit, GitVersionContext context) - { - if (mergeCommit.Parents.Count() < 2) - { - return null; + yield return new BaseVersion($"Merge message '{message}'", mergeMessage.Version, baseVersionSource) + { + Operator = new BaseVersionOperator() + { + Increment = increment, + ForceIncrement = false, + Label = label + } + }; + } } - - var mergeMessage = new MergeMessage(mergeCommit.Message, context.Configuration); - return mergeMessage; } } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs index 1e3e7232f0..e29eb16ca4 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs @@ -9,36 +9,54 @@ namespace GitVersion.VersionCalculation; /// BaseVersionSource is the tag's commit. /// Increments if the tag is not the current commit. /// -internal sealed class TaggedCommitVersionStrategy(ITaggedSemanticVersionRepository taggedSemanticVersionRepository, Lazy versionContext) - : VersionStrategyBase(versionContext) +internal sealed class TaggedCommitVersionStrategy( + Lazy contextLazy, + ITaggedSemanticVersionRepository taggedSemanticVersionRepository, + IIncrementStrategyFinder incrementStrategyFinder) + : IVersionStrategy { private readonly ITaggedSemanticVersionRepository taggedSemanticVersionRepository = taggedSemanticVersionRepository.NotNull(); + private readonly Lazy contextLazy = contextLazy.NotNull(); + private readonly IIncrementStrategyFinder incrementStrategyFinder = incrementStrategyFinder.NotNull(); - public override IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) - => !Context.Configuration.VersionStrategy.HasFlag(VersionStrategies.TaggedCommit) ? [] - : GetTaggedSemanticVersions(configuration).Select(CreateBaseVersion); + private GitVersionContext Context => contextLazy.Value; - private IEnumerable GetTaggedSemanticVersions(EffectiveBranchConfiguration configuration) + public IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) + => GetBaseVersionsInternal(configuration); + + private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfiguration configuration) { configuration.NotNull(); + if (!Context.Configuration.VersionStrategy.HasFlag(VersionStrategies.TaggedCommit)) + yield break; + var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); var taggedSemanticVersions = taggedSemanticVersionRepository .GetAllTaggedSemanticVersions(Context.Configuration, configuration.Value, Context.CurrentBranch, label, Context.CurrentCommit.When) .SelectMany(element => element) .Distinct().ToArray(); - foreach (var semanticVersion in taggedSemanticVersions) + foreach (var semanticVersionWithTag in taggedSemanticVersions) { - yield return semanticVersion; + var baseVersionSource = semanticVersionWithTag.Tag.Commit; + var increment = incrementStrategyFinder.DetermineIncrementedField( + currentCommit: Context.CurrentCommit, + baseVersionSource: baseVersionSource, + shouldIncrement: true, + configuration: configuration.Value, + label: label + ); + yield return new BaseVersion( + $"Git tag '{semanticVersionWithTag.Tag.Name.Friendly}'", semanticVersionWithTag.Value, baseVersionSource) + { + Operator = new BaseVersionOperator() + { + Increment = increment, + ForceIncrement = false, + Label = label + } + }; } } - - private static BaseVersion CreateBaseVersion(SemanticVersionWithTag semanticVersion) - { - var tagCommit = semanticVersion.Tag.Commit; - return new( - $"Git tag '{semanticVersion.Tag.Name.Friendly}'", true, semanticVersion.Value, tagCommit, null - ); - } } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrackReleaseBranchesVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrackReleaseBranchesVersionStrategy.cs index 1ef811eb6f..adbe014cad 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrackReleaseBranchesVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrackReleaseBranchesVersionStrategy.cs @@ -1,71 +1,76 @@ +using System.Diagnostics.CodeAnalysis; using GitVersion.Common; using GitVersion.Configuration; +using GitVersion.Core; using GitVersion.Extensions; namespace GitVersion.VersionCalculation; -/// -/// Active only when the branch is marked as IsDevelop. -/// Two different algorithms (results are merged): -/// -/// Using : -/// Version is that of any child branches marked with IsReleaseBranch (except if they have no commits of their own). -/// BaseVersionSource is the commit where the child branch was created. -/// Always increments. -/// -/// -/// Using : -/// Version is extracted from all tags on the main branch which are valid. -/// BaseVersionSource is the tag's commit (same as base strategy). -/// Increments if the tag is not the current commit (same as base strategy). -/// -/// -internal class TrackReleaseBranchesVersionStrategy(IRepositoryStore repositoryStore, Lazy versionContext) - : VersionStrategyBase(versionContext) +internal sealed class TrackReleaseBranchesVersionStrategy( + Lazy contextLazy, + IRepositoryStore repositoryStore, + IBranchRepository branchRepository, + IIncrementStrategyFinder incrementStrategyFinder) + : IVersionStrategy { - private readonly VersionInBranchNameVersionStrategy releaseVersionStrategy = new(repositoryStore, versionContext); - + private readonly Lazy contextLazy = contextLazy.NotNull(); private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); + private readonly IBranchRepository branchRepository = branchRepository.NotNull(); + private readonly IIncrementStrategyFinder incrementStrategyFinder = incrementStrategyFinder.NotNull(); + private readonly VersionInBranchNameVersionStrategy releaseVersionStrategy = new(contextLazy, repositoryStore); + + private GitVersionContext Context => contextLazy.Value; - public override IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) + public IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) { + configuration.NotNull(); + if (!Context.Configuration.VersionStrategy.HasFlag(VersionStrategies.TrackReleaseBranches)) - return []; + yield break; - return configuration.Value.TracksReleaseBranches ? ReleaseBranchBaseVersions() : []; + if (configuration.Value.TracksReleaseBranches) + { + foreach (var releaseBranche in branchRepository.GetReleaseBranches(Context.Configuration)) + { + if (TryGetBaseVersion(releaseBranche, configuration, out var baseVersion)) + { + yield return baseVersion; + } + } + } } - private IEnumerable ReleaseBranchBaseVersions() + private bool TryGetBaseVersion( + IBranch releaseBranch, EffectiveBranchConfiguration configuration, [NotNullWhen(true)] out BaseVersion? result) { - var releaseBranchConfig = Context.Configuration.GetReleaseBranchConfiguration(); - if (releaseBranchConfig.Count == 0) - return []; + result = null; - var releaseBranches = this.repositoryStore.GetReleaseBranches(releaseBranchConfig); + var releaseBranchConfiguration = Context.Configuration.GetEffectiveBranchConfiguration(releaseBranch); + if (this.releaseVersionStrategy.TryGetBaseVersion(releaseBranchConfiguration, out var baseVersion)) + { + // Find the commit where the child branch was created. + var baseVersionSource = this.repositoryStore.FindMergeBase(releaseBranch, Context.CurrentBranch); + var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); + var increment = incrementStrategyFinder.DetermineIncrementedField( + currentCommit: Context.CurrentCommit, + baseVersionSource: baseVersionSource, + shouldIncrement: true, + configuration: configuration.Value, + label: label + ); - return releaseBranches - .SelectMany(GetReleaseVersion) - .Select(baseVersion => + result = new BaseVersion( + "Release branch exists -> " + baseVersion.Source, baseVersion.SemanticVersion, baseVersionSource) { - // Need to drop branch overrides and give a bit more context about - // where this version came from - var source1 = "Release branch exists -> " + baseVersion.Source; - return new BaseVersion(source1, - baseVersion.ShouldIncrement, - baseVersion.GetSemanticVersion(), - baseVersion.BaseVersionSource, - null); - }) - .ToList(); - } + Operator = new BaseVersionOperator() + { + Increment = increment, + ForceIncrement = false, + Label = label + } + }; + } - private IEnumerable GetReleaseVersion(IBranch releaseBranch) - { - // Find the commit where the child branch was created. - var baseSource = this.repositoryStore.FindMergeBase(releaseBranch, Context.CurrentBranch); - var effectiveBranchConfiguration = Context.Configuration.GetEffectiveBranchConfiguration(releaseBranch); - return this.releaseVersionStrategy - .GetBaseVersions(effectiveBranchConfiguration) - .Select(b => new BaseVersion(b.Source, true, b.GetSemanticVersion(), baseSource, b.BranchNameOverride)); + return result is not null; } } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs index e37c9ec087..ddeb03ee84 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs @@ -10,24 +10,28 @@ namespace GitVersion.VersionCalculation; internal sealed class TrunkBasedVersionStrategy( - Lazy context, + Lazy contextLazy, IRepositoryStore repositoryStore, ITaggedSemanticVersionRepository taggedSemanticVersionRepository, IIncrementStrategyFinder incrementStrategyFinder) - : VersionStrategyBase(context) + : IVersionStrategy { - private static readonly IReadOnlyCollection TrunkContextPreEnricherCollection = new ITrunkBasedContextPreEnricher[] - { + private readonly Lazy contextLazy = contextLazy.NotNull(); + + private GitVersionContext Context => contextLazy.Value; + + private static readonly IReadOnlyCollection TrunkContextPreEnricherCollection = + [ new EnrichSemanticVersion(), new EnrichIncrement() - }; - private static readonly IReadOnlyCollection TrunkContextPostEnricherCollection = new ITrunkBasedContextPostEnricher[] - { + ]; + private static readonly IReadOnlyCollection TrunkContextPostEnricherCollection = + [ new RemoveSemanticVersion(), new RemoveIncrement() - }; - private static readonly IReadOnlyCollection TrunkIncrementerCollection = new ITrunkBasedIncrementer[] - { + ]; + private static readonly IReadOnlyCollection TrunkIncrementerCollection = + [ // Trunk new CommitOnTrunk(), @@ -56,7 +60,7 @@ internal sealed class TrunkBasedVersionStrategy( new CommitOnNonTrunkBranchedToTrunk(), new CommitOnNonTrunkBranchedToNonTrunk() - }; + ]; private volatile int iterationCounter; @@ -64,8 +68,10 @@ internal sealed class TrunkBasedVersionStrategy( private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); private readonly IIncrementStrategyFinder incrementStrategyFinder = incrementStrategyFinder.NotNull(); - public override IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) + public IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) { + configuration.NotNull(); + if (!Context.Configuration.VersionStrategy.HasFlag(VersionStrategies.TrunkBased)) yield break; @@ -139,7 +145,7 @@ private bool IterateOverCommitsRecursive( if (semanticVersion.Value.IsMatchForBranchSpecificLabel(label)) return true; } - if (item.IsMergeCommit) + if (item.IsMergeCommit()) { Lazy> mergedCommitsInReverseOrderLazy = new( () => incrementStrategyFinder.GetMergedCommits(item, 1, configuration.Ignore).Reverse().ToList() @@ -203,7 +209,7 @@ private VersionField GetIncrementForcedByCommit(ICommit commit, EffectiveConfigu { CommitMessageIncrementMode.Enabled => incrementStrategyFinder.GetIncrementForcedByCommit(commit, configuration), CommitMessageIncrementMode.Disabled => VersionField.None, - CommitMessageIncrementMode.MergeMessageOnly => commit.IsMergeCommit + CommitMessageIncrementMode.MergeMessageOnly => commit.IsMergeCommit() ? incrementStrategyFinder.GetIncrementForcedByCommit(commit, configuration) : VersionField.None, _ => throw new InvalidEnumArgumentException( nameof(configuration.CommitMessageIncrementing), (int)configuration.CommitMessageIncrementing, typeof(CommitMessageIncrementMode) @@ -250,57 +256,32 @@ private IReadOnlyDictionary GetCommitsWas return result; } - private static BaseVersionV2 DetermineBaseVersion(TrunkBasedIteration iteration, string? targetLabel) + private static BaseVersion DetermineBaseVersion(TrunkBasedIteration iteration, string? targetLabel) => DetermineBaseVersionRecursive(iteration, targetLabel); - internal static BaseVersionV2 DetermineBaseVersionRecursive(TrunkBasedIteration iteration, string? targetLabel) + internal static BaseVersion DetermineBaseVersionRecursive(TrunkBasedIteration iteration, string? targetLabel) { iteration.NotNull(); - var incrementSteps = GetIncrementSteps(iteration, targetLabel).ToArray(); - - var semanticVersion = SemanticVersion.Empty; + var incrementSteps = GetIncrements(iteration, targetLabel).ToArray(); + BaseVersion? result = null; for (var i = 0; i < incrementSteps.Length; i++) { - var incrementStep = incrementSteps[i]; - if (incrementStep.SemanticVersion is not null) - semanticVersion = incrementStep.SemanticVersion; - - if (i + 1 < incrementSteps.Length) + if (incrementSteps[i] is BaseVersionOperand baseVersionOperand) { - if (incrementStep.ShouldIncrement) - { - semanticVersion = semanticVersion.Increment( - incrementStep.Increment, incrementStep.Label, incrementStep.ForceIncrement - ); - if (semanticVersion.IsLessThan(incrementStep.AlternativeSemanticVersion, includePreRelease: false)) - { - semanticVersion = new(semanticVersion) - { - Major = incrementStep.AlternativeSemanticVersion!.Major, - Minor = incrementStep.AlternativeSemanticVersion.Minor, - Patch = incrementStep.AlternativeSemanticVersion.Patch - }; - } - } + result = new BaseVersion(baseVersionOperand); } - else + else if (incrementSteps[i] is BaseVersionOperator baseVersionOperator) { - return new(nameof(TrunkBasedVersionStrategy), incrementStep.ShouldIncrement, semanticVersion, incrementStep.BaseVersionSource, null) - { - Increment = incrementStep.Increment, - Label = incrementStep.Label, - ForceIncrement = incrementStep.ForceIncrement, - AlternativeSemanticVersion = incrementStep.AlternativeSemanticVersion - }; + result ??= new BaseVersion(); + result = result.Apply(baseVersionOperator); } } - - throw new InvalidOperationException(); + return result ?? throw new InvalidOperationException(); } - private static IEnumerable GetIncrementSteps(TrunkBasedIteration iteration, string? targetLabel) + private static IEnumerable GetIncrements(TrunkBasedIteration iteration, string? targetLabel) { TrunkBasedContext context = new() { diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs index bc7cfb215d..c9c91ac190 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs @@ -10,26 +10,34 @@ namespace GitVersion.VersionCalculation; /// BaseVersionSource is the commit where the branch was branched from its parent. /// Does not increment. /// -internal class VersionInBranchNameVersionStrategy(IRepositoryStore repositoryStore, Lazy versionContext) - : VersionStrategyBase(versionContext) +internal sealed class VersionInBranchNameVersionStrategy( + Lazy contextLazy, + IRepositoryStore repositoryStore) + : IVersionStrategy { + private readonly Lazy contextLazy = contextLazy.NotNull(); private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); - public override IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) + private GitVersionContext Context => contextLazy.Value; + + public IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) { if (!Context.Configuration.VersionStrategy.HasFlag(VersionStrategies.VersionInBranchName)) yield break; - if (configuration.Value.IsReleaseBranch && TryGetBaseVersion(out var baseVersion, configuration)) + if (TryGetBaseVersion(configuration, out var baseVersion)) { yield return baseVersion; } } - private bool TryGetBaseVersion([NotNullWhen(true)] out BaseVersion? baseVersion, EffectiveBranchConfiguration configuration) + public bool TryGetBaseVersion(EffectiveBranchConfiguration configuration, [NotNullWhen(true)] out BaseVersion? baseVersion) { baseVersion = null; + if (!configuration.Value.IsReleaseBranch) + return false; + Lazy commitBranchWasBranchedFrom = new( () => this.repositoryStore.FindCommitBranchWasBranchedFrom(configuration.Branch, Context.Configuration) ); @@ -45,13 +53,25 @@ private bool TryGetBaseVersion([NotNullWhen(true)] out BaseVersion? baseVersion, branchNameOverride = result.Name; } - baseVersion = new( - "Version in branch name", false, result.Value, commitBranchWasBranchedFrom.Value.Commit, branchNameOverride - ); - break; + var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, branchNameOverride); + //if (configuration.Value.Label != label) + //{ + // log.Info("Using current branch name to calculate version tag"); + //} + + baseVersion = new BaseVersion("Version in branch name", result.Value, commitBranchWasBranchedFrom.Value.Commit) + { + Operator = new BaseVersionOperator() + { + Increment = VersionField.None, + ForceIncrement = false, + Label = label + } + }; + return true; } } - return baseVersion != null; + return false; } } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionStrategyBase.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionStrategyBase.cs deleted file mode 100644 index 574264eb7a..0000000000 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionStrategyBase.cs +++ /dev/null @@ -1,13 +0,0 @@ -using GitVersion.Configuration; -using GitVersion.Extensions; - -namespace GitVersion.VersionCalculation; - -public abstract class VersionStrategyBase(Lazy versionContext) : IVersionStrategy -{ - private readonly Lazy versionContext = versionContext.NotNull(); - - protected GitVersionContext Context => this.versionContext.Value; - - public abstract IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration); -} diff --git a/src/GitVersion.LibGit2Sharp/Git/Commit.cs b/src/GitVersion.LibGit2Sharp/Git/Commit.cs index 3592b985c3..2aa64d2f17 100644 --- a/src/GitVersion.LibGit2Sharp/Git/Commit.cs +++ b/src/GitVersion.LibGit2Sharp/Git/Commit.cs @@ -7,19 +7,20 @@ internal sealed class Commit : GitObject, ICommit { private static readonly LambdaEqualityHelper equalityHelper = new(x => x.Id); private static readonly LambdaKeyComparer comparerHelper = new(x => x.Sha); + private readonly Lazy> parentsLazy; private readonly LibGit2Sharp.Commit innerCommit; internal Commit(LibGit2Sharp.Commit innerCommit) : base(innerCommit) { this.innerCommit = innerCommit.NotNull(); - Parents = innerCommit.Parents.Select(parent => new Commit(parent)); + parentsLazy = new Lazy>(() => innerCommit.Parents.Select(parent => new Commit(parent)).ToList()); When = innerCommit.Committer.When; } public int CompareTo(ICommit? other) => comparerHelper.Compare(this, other); public bool Equals(ICommit? other) => equalityHelper.Equals(this, other); - public IEnumerable Parents { get; } + public IReadOnlyList Parents => parentsLazy.Value; public DateTimeOffset When { get; } public string Message => this.innerCommit.Message; public override bool Equals(object? obj) => Equals(obj as ICommit); From 0d88d1c82c5d7af1b0d9f69b5ab63171f7e48541 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Sun, 17 Mar 2024 09:51:07 +0100 Subject: [PATCH 046/544] Move fallback strategy back to a dedicated version strategy class to have the version calculation transparent to the user. --- docs/input/docs/reference/configuration.md | 3 + ...riteOutEffectiveConfiguration.approved.txt | 1 + .../ConfigurationBuilderBase.cs | 16 ++- .../SupportedWorkflows/GitFlow/v1.yml | 1 + .../SupportedWorkflows/GitHubFlow/v1.yml | 1 + .../ConfiguredNextVersionScenarios.cs | 26 ---- .../FallbackVersionStrategyScenarios.cs | 125 ++++++++++++++++++ .../IntegrationTests/OtherScenarios.cs | 6 +- .../Configuration/ConfigurationConstants.cs | 1 + .../Core/TaggedSemanticVersionRepository.cs | 22 +-- src/GitVersion.Core/PublicAPI.Unshipped.txt | 13 +- .../NextVersionCalculator.cs | 45 +------ .../FallbacktVersionStrategy.cs | 60 +++++++++ .../VersionCalculation/VersionStrategies.cs | 13 +- src/GitVersion.sln | 21 +-- 15 files changed, 248 insertions(+), 106 deletions(-) delete mode 100644 src/GitVersion.Core.Tests/IntegrationTests/ConfiguredNextVersionScenarios.cs create mode 100644 src/GitVersion.Core.Tests/IntegrationTests/FallbackVersionStrategyScenarios.cs create mode 100644 src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/FallbacktVersionStrategy.cs diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index 99b3aba154..502d25a71d 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -63,6 +63,7 @@ merge-message-formats: {} update-build-number: true semantic-version-format: Strict strategies: +- Fallback - ConfiguredNextVersion - MergeMessage - TaggedCommit @@ -228,6 +229,7 @@ merge-message-formats: {} update-build-number: true semantic-version-format: Strict strategies: +- Fallback - ConfiguredNextVersion - MergeMessage - TaggedCommit @@ -917,6 +919,7 @@ Example of invalid `Strict`, but valid `Loose` ### strategies Specifies which version strategy implementation (one ore more) will be used to determine the next version. Following values are supported and can be combined: +- Fallback - ConfiguredNextVersion - MergeMessage - TaggedCommit diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt index 83c233ec89..8cb25f9a4d 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt @@ -12,6 +12,7 @@ merge-message-formats: {} update-build-number: true semantic-version-format: Strict strategies: +- Fallback - ConfiguredNextVersion - MergeMessage - TaggedCommit diff --git a/src/GitVersion.Configuration/ConfigurationBuilderBase.cs b/src/GitVersion.Configuration/ConfigurationBuilderBase.cs index 63827f31c9..6503ce0991 100644 --- a/src/GitVersion.Configuration/ConfigurationBuilderBase.cs +++ b/src/GitVersion.Configuration/ConfigurationBuilderBase.cs @@ -24,7 +24,7 @@ internal abstract class ConfigurationBuilderBase : IConfi private string? commitDateFormat; private bool updateBuildNumber; private SemanticVersionFormat semanticVersionFormat; - private VersionStrategies versionStrategy; + private VersionStrategies[] versionStrategies; private Dictionary mergeMessageFormats = new(); private readonly List> overrides = new(); private readonly Dictionary branchConfigurationBuilders = new(); @@ -204,7 +204,15 @@ public virtual TConfigurationBuilder WithSemanticVersionFormat(SemanticVersionFo public virtual TConfigurationBuilder WithVersionStrategy(VersionStrategies value) { - this.versionStrategy = value; + this.versionStrategies = Enum.GetValues() + .Where(element => element != VersionStrategies.None && value.HasFlag(element)) + .ToArray(); + return (TConfigurationBuilder)this; + } + + public virtual TConfigurationBuilder WithVersionStrategies(params VersionStrategies[] values) + { + this.versionStrategies = values; return (TConfigurationBuilder)this; } @@ -382,10 +390,6 @@ public virtual IGitVersionConfiguration Build() branches.Add(name, (BranchConfiguration)branchConfigurationBuilder.Build()); } - var versionStrategies = Enum.GetValues() - .Where(element => element != VersionStrategies.None && this.versionStrategy.HasFlag(element)) - .ToArray(); - IGitVersionConfiguration configuration = new GitVersionConfiguration { AssemblyVersioningScheme = this.assemblyVersioningScheme, diff --git a/src/GitVersion.Configuration/SupportedWorkflows/GitFlow/v1.yml b/src/GitVersion.Configuration/SupportedWorkflows/GitFlow/v1.yml index 83c233ec89..8cb25f9a4d 100644 --- a/src/GitVersion.Configuration/SupportedWorkflows/GitFlow/v1.yml +++ b/src/GitVersion.Configuration/SupportedWorkflows/GitFlow/v1.yml @@ -12,6 +12,7 @@ merge-message-formats: {} update-build-number: true semantic-version-format: Strict strategies: +- Fallback - ConfiguredNextVersion - MergeMessage - TaggedCommit diff --git a/src/GitVersion.Configuration/SupportedWorkflows/GitHubFlow/v1.yml b/src/GitVersion.Configuration/SupportedWorkflows/GitHubFlow/v1.yml index 48e1d6aabc..4082d04d3e 100644 --- a/src/GitVersion.Configuration/SupportedWorkflows/GitHubFlow/v1.yml +++ b/src/GitVersion.Configuration/SupportedWorkflows/GitHubFlow/v1.yml @@ -12,6 +12,7 @@ merge-message-formats: {} update-build-number: true semantic-version-format: Strict strategies: +- Fallback - ConfiguredNextVersion - MergeMessage - TaggedCommit diff --git a/src/GitVersion.Core.Tests/IntegrationTests/ConfiguredNextVersionScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/ConfiguredNextVersionScenarios.cs deleted file mode 100644 index a4dda8b437..0000000000 --- a/src/GitVersion.Core.Tests/IntegrationTests/ConfiguredNextVersionScenarios.cs +++ /dev/null @@ -1,26 +0,0 @@ -using GitVersion.Configuration; -using GitVersion.Core.Tests.Helpers; -using GitVersion.VersionCalculation; - -namespace GitVersion.Core.Tests.IntegrationTests; - -[TestFixture] -public class ConfiguredNextVersionScenarios : TestBase -{ - private static GitHubFlowConfigurationBuilder ConfigurationBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.ConfiguredNextVersion) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); - - [Test] - public void ShouldThrowGitVersionExceptionWhenAllCommitsAreIgnored1() - { - var configuration = ConfigurationBuilder.WithNextVersion("1.0.0").Build(); - - using EmptyRepositoryFixture repositoryFixture = new("main"); - - repositoryFixture.MakeACommit("+semver: major"); - - // ✅ succeeds as expected - repositoryFixture.AssertFullSemver("1.0.0-1+1", configuration); - } -} diff --git a/src/GitVersion.Core.Tests/IntegrationTests/FallbackVersionStrategyScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/FallbackVersionStrategyScenarios.cs new file mode 100644 index 0000000000..b574e1c808 --- /dev/null +++ b/src/GitVersion.Core.Tests/IntegrationTests/FallbackVersionStrategyScenarios.cs @@ -0,0 +1,125 @@ +using GitVersion.Configuration; +using GitVersion.Core.Tests.Helpers; +using GitVersion.VersionCalculation; + +namespace GitVersion.Core.Tests.IntegrationTests; + +[TestFixture] +public class FallbackVersionStrategyScenarios : TestBase +{ + private static GitHubFlowConfigurationBuilder ConfigurationBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Fallback) + .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + + [TestCase(IncrementStrategy.None, "0.0.0-1+1")] + [TestCase(IncrementStrategy.Patch, "0.0.1-1+1")] + [TestCase(IncrementStrategy.Minor, "0.1.0-1+1")] + [TestCase(IncrementStrategy.Major, "1.0.0-1+1")] + public void EnsureVersionIncrementOnMainWillBeUsed(IncrementStrategy increment, string expected) + { + var configuration = ConfigurationBuilder + .WithBranch("main", _ => _.WithIncrement(increment)) + .Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + fixture.MakeACommit(); + + // ✅ succeeds as expected + fixture.AssertFullSemver(expected, configuration); + } + + [TestCase(IncrementStrategy.None, "0.0.0-1+1")] + [TestCase(IncrementStrategy.Patch, "0.0.1-1+1")] + [TestCase(IncrementStrategy.Minor, "0.1.0-1+1")] + [TestCase(IncrementStrategy.Major, "1.0.0-1+1")] + public void EnsureVersionIncrementOnMessageWillBeUsed(IncrementStrategy increment, string expected) + { + var configuration = ConfigurationBuilder + .WithBranch("main", _ => _.WithIncrement(IncrementStrategy.None)) + .Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + fixture.MakeACommit($"+semver: {increment}"); + + // ✅ succeeds as expected + fixture.AssertFullSemver(expected, configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void TakeTheLatestCommitAsBaseVersion(bool mode) + { + var configuration = ConfigurationBuilder + .WithBranch("main", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithTrackMergeTarget(true) + .WithTracksReleaseBranches(false) + ).Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + fixture.MakeACommit("A"); + fixture.BranchTo("release/foo"); + fixture.Checkout("main"); + + fixture.MakeACommit("B"); + if (mode) + { + fixture.MergeTo("release/foo"); + fixture.ApplyTag("0.0.0"); + fixture.Checkout("main"); + } + else + { + fixture.ApplyTag("0.0.0"); + } + + fixture.MakeACommit("C"); + if (mode) + { + fixture.ApplyTag("0.0.1"); + } + else + { + fixture.MergeTo("release/foo"); + fixture.ApplyTag("0.0.1"); + fixture.Checkout("main"); + } + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + } + + [Test] + public void TakeTheCommitBranchedFromAsBaseVersion() + { + var configuration = ConfigurationBuilder + .WithBranch("main", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithTrackMergeTarget(false) + .WithTracksReleaseBranches(true) + ).Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + fixture.MakeACommit("A"); + fixture.MakeACommit("B"); + fixture.BranchTo("release/foo"); + fixture.Checkout("main"); + fixture.MakeACommit("C"); + fixture.Checkout("release/foo"); + fixture.MakeACommit("D"); + fixture.ApplyTag("0.0.0"); + fixture.Checkout("main"); + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+2", configuration); + + fixture.Repository.DumpGraph(); + } +} diff --git a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs index f0b0aac60e..73a968ff64 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs @@ -1053,7 +1053,7 @@ public void EnsureThePreReleaseTagIsCorrectlyGeneratedWhenPreReleaseLabelIsEmpty } [TestCase("0.0.1-alpha.2", true, "0.0.1-alpha.2")] - [TestCase("0.0.1-alpha.2", false, "0.0.1-alpha.3+0")] + [TestCase("0.0.1-alpha.2", false, "0.1.0-alpha.1+0")] [TestCase("0.0.1", true, "0.0.1")] [TestCase("0.0.1", false, "0.1.0-alpha.1+0")] [TestCase("0.0.1-beta.2", true, "0.1.0-alpha.1+1")] @@ -1080,7 +1080,7 @@ public void EnsurePreventIncrementWhenCurrentCommitTaggedOnDevelopWithDeployment } [TestCase("0.0.1-alpha.2", true, "0.0.1-alpha.2")] - [TestCase("0.0.1-alpha.2", false, "0.0.1-alpha.2")] + [TestCase("0.0.1-alpha.2", false, "0.1.0-alpha.0")] [TestCase("0.0.1", true, "0.0.1")] [TestCase("0.0.1", false, "0.1.0-alpha.0")] [TestCase("0.0.1-beta.2", true, "0.1.0-alpha.1")] @@ -1107,7 +1107,7 @@ public void EnsurePreventIncrementWhenCurrentCommitTaggedOnDevelopWithDeployment } [TestCase("0.0.1-alpha.2", true, "0.0.1")] - [TestCase("0.0.1-alpha.2", false, "0.0.1")] + [TestCase("0.0.1-alpha.2", false, "0.1.0")] [TestCase("0.0.1", true, "0.0.1")] [TestCase("0.0.1", false, "0.1.0")] [TestCase("0.0.1-beta.2", true, "0.1.0")] diff --git a/src/GitVersion.Core/Configuration/ConfigurationConstants.cs b/src/GitVersion.Core/Configuration/ConfigurationConstants.cs index b64bb3d869..ffbd1cea2b 100644 --- a/src/GitVersion.Core/Configuration/ConfigurationConstants.cs +++ b/src/GitVersion.Core/Configuration/ConfigurationConstants.cs @@ -15,6 +15,7 @@ internal static class ConfigurationConstants public const AssemblyFileVersioningScheme DefaultAssemblyFileVersioningScheme = AssemblyFileVersioningScheme.MajorMinorPatch; public const SemanticVersionFormat DefaultSemanticVersionFormat = SemanticVersionFormat.Strict; public static readonly VersionStrategies[] DefaultVersionStrategies = [ + VersionStrategies.Fallback, VersionStrategies.ConfiguredNextVersion, VersionStrategies.MergeMessage, VersionStrategies.TaggedCommit, diff --git a/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs b/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs index 138c562edc..fd147cd494 100644 --- a/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs +++ b/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs @@ -118,11 +118,12 @@ public ILookup GetAllTaggedSemanticVersions( } } - return GetElements().Distinct().ToLookup(element => element.Key, element => element.Value); + return GetElements().Distinct().OrderByDescending(element => element.Key.When) + .ToLookup(element => element.Key, element => element.Value); } public ILookup GetTaggedSemanticVersionsOfBranch( - IBranch branch, string? tagPrefix, SemanticVersionFormat format, IIgnoreConfiguration ignore) + IBranch branch, string? tagPrefix, SemanticVersionFormat format, IIgnoreConfiguration ignore) { branch.NotNull(); tagPrefix ??= string.Empty; @@ -148,7 +149,8 @@ IEnumerable GetElements() var result = taggedSemanticVersionsOfBranchCache.GetOrAdd(new(branch, tagPrefix, format), _ => { isCached = false; - return GetElements().Distinct().ToLookup(element => element.Tag.Commit, element => element); + return GetElements().Distinct().OrderByDescending(element => element.Tag.Commit.When) + .ToLookup(element => element.Tag.Commit, element => element); }); if (isCached) @@ -168,7 +170,7 @@ public ILookup GetTaggedSemanticVersionsOfMerge branch.NotNull(); tagPrefix ??= string.Empty; - IEnumerable<(ICommit, SemanticVersionWithTag)> GetElements() + IEnumerable<(ICommit Key, SemanticVersionWithTag Value)> GetElements() { using (this.log.IndentLog($"Getting tagged semantic versions by track merge target '{branch.Name.Canonical}'. " + $"TagPrefix: {tagPrefix} and Format: {format}")) @@ -189,7 +191,8 @@ public ILookup GetTaggedSemanticVersionsOfMerge var result = taggedSemanticVersionsOfMergeTargetCache.GetOrAdd(new(branch, tagPrefix, format), _ => { isCached = false; - return GetElements().Distinct().ToLookup(element => element.Item1, element => element.Item2); + return GetElements().Distinct().OrderByDescending(element => element.Key.When) + .ToLookup(element => element.Key, element => element.Value); }); if (isCached) @@ -225,7 +228,8 @@ IEnumerable GetElements() } } - return GetElements().Distinct().ToLookup(element => element.Tag.Commit, element => element); + return GetElements().Distinct().OrderByDescending(element => element.Tag.Commit.When) + .ToLookup(element => element.Tag.Commit, element => element); } public ILookup GetTaggedSemanticVersionsOfReleaseBranches( @@ -250,7 +254,8 @@ IEnumerable GetElements() } } - return GetElements().Distinct().ToLookup(element => element.Tag.Commit, element => element); + return GetElements().Distinct().OrderByDescending(element => element.Tag.Commit.When) + .ToLookup(element => element.Tag.Commit, element => element); } public ILookup GetTaggedSemanticVersions( @@ -275,7 +280,8 @@ IEnumerable GetElements() var result = taggedSemanticVersionsCache.GetOrAdd(new(tagPrefix, format), _ => { isCached = false; - return GetElements().ToLookup(element => element.Tag.Commit, element => element); + return GetElements().OrderByDescending(element => element.Tag.Commit.When) + .ToLookup(element => element.Tag.Commit, element => element); }); if (isCached) diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 9696c20d8f..8b5db12450 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -742,13 +742,14 @@ GitVersion.VersionCalculation.VersionCalculationModule GitVersion.VersionCalculation.VersionCalculationModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void GitVersion.VersionCalculation.VersionCalculationModule.VersionCalculationModule() -> void GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategies.ConfiguredNextVersion = 1 -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategies.MergeMessage = 2 -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategies.ConfiguredNextVersion = 2 -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategies.Fallback = 1 -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategies.MergeMessage = 4 -> GitVersion.VersionCalculation.VersionStrategies GitVersion.VersionCalculation.VersionStrategies.None = 0 -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategies.TaggedCommit = 4 -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategies.TrackReleaseBranches = 8 -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategies.TrunkBased = 32 -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategies.VersionInBranchName = 16 -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategies.TaggedCommit = 8 -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategies.TrackReleaseBranches = 16 -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategies.TrunkBased = 64 -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategies.VersionInBranchName = 32 -> GitVersion.VersionCalculation.VersionStrategies GitVersion.VersionCalculation.VersionStrategyModule GitVersion.VersionCalculation.VersionStrategyModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void GitVersion.VersionCalculation.VersionStrategyModule.VersionStrategyModule() -> void diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs index eaef246264..4780f6b757 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs @@ -13,7 +13,6 @@ internal class NextVersionCalculator( IEnumerable deploymentModeCalculators, IEnumerable versionStrategies, IEffectiveBranchConfigurationFinder effectiveBranchConfigurationFinder, - IIncrementStrategyFinder incrementStrategyFinder, ITaggedSemanticVersionRepository taggedSemanticVersionRepository) : INextVersionCalculator { @@ -21,7 +20,6 @@ internal class NextVersionCalculator( private readonly Lazy versionContext = versionContext.NotNull(); private readonly IVersionStrategy[] versionStrategies = versionStrategies.NotNull().ToArray(); private readonly IEffectiveBranchConfigurationFinder effectiveBranchConfigurationFinder = effectiveBranchConfigurationFinder.NotNull(); - private readonly IIncrementStrategyFinder incrementStrategyFinder = incrementStrategyFinder.NotNull(); private GitVersionContext Context => this.versionContext.Value; @@ -149,10 +147,11 @@ private SemanticVersion CalculateSemanticVersion( private NextVersion CalculateNextVersion(IBranch branch, IGitVersionConfiguration configuration) { - var nextVersions = GetNextVersions(branch, configuration).ToArray(); + var nextVersions = GetNextVersions(branch, configuration); log.Separator(); - var maxVersion = nextVersions.Max()!; + var maxVersion = nextVersions.Max() + ?? throw new GitVersionException("No base versions determined on the current branch."); var matchingVersionsOnceIncremented = nextVersions .Where(v => v.BaseVersion.BaseVersionSource != null && v.IncrementedVersion == maxVersion.IncrementedVersion) .ToList(); @@ -190,12 +189,6 @@ private NextVersion CalculateNextVersion(IBranch branch, IGitVersionConfiguratio latestBaseVersionSource = version.BaseVersion.BaseVersionSource; } - //var calculatedBase = new BaseVersionFinal(maxVersion.BaseVersion.Source) - //{ - // SemanticVersion = maxVersion.BaseVersion.SemanticVersion, - // BaseVersionSource = latestBaseVersionSource - //}; - BaseVersion calculatedBase = new() { Operand = new BaseVersionOperand() @@ -232,10 +225,7 @@ private IReadOnlyCollection GetNextVersions(IBranch branch, IGitVer if (branch.Tip == null) throw new GitVersionException("No commits found on the current branch."); - var nextVersions = GetNextVersionsInternal().ToList(); - if (nextVersions.Count == 0) - throw new GitVersionException("No base versions determined on the current branch."); - return nextVersions; + return GetNextVersionsInternal().ToList(); } IEnumerable GetNextVersionsInternal() @@ -244,7 +234,6 @@ IEnumerable GetNextVersionsInternal() foreach (var effectiveBranchConfiguration in effectiveBranchConfigurations) { this.log.Info($"Calculating base versions for '{effectiveBranchConfiguration.Branch.Name}'"); - var atLeastOneBaseVersionReturned = false; foreach (var versionStrategy in this.versionStrategies) { using (this.log.IndentLog($"[Using '{versionStrategy.GetType().Name}' strategy]")) @@ -259,36 +248,10 @@ IEnumerable GetNextVersionsInternal() baseVersion: baseVersion, configuration: effectiveBranchConfiguration ); - atLeastOneBaseVersionReturned = true; } } } } - - if (!atLeastOneBaseVersionReturned) - { - var label = effectiveBranchConfiguration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); - var increment = incrementStrategyFinder.DetermineIncrementedField( - currentCommit: Context.CurrentCommit, - baseVersionSource: null, - shouldIncrement: true, - configuration: effectiveBranchConfiguration.Value, - label: label - ); - - BaseVersion baseVersion = new() - { - Operator = new BaseVersionOperator() - { - Source = "Fallback base version", - BaseVersionSource = null, - Increment = increment, - ForceIncrement = false, - Label = label - } - }; - yield return new NextVersion(baseVersion.GetIncrementedVersion(), baseVersion, effectiveBranchConfiguration); - } } } } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/FallbacktVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/FallbacktVersionStrategy.cs new file mode 100644 index 0000000000..da116df3c7 --- /dev/null +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/FallbacktVersionStrategy.cs @@ -0,0 +1,60 @@ +using GitVersion.Configuration; +using GitVersion.Core; +using GitVersion.Extensions; + +namespace GitVersion.VersionCalculation; + +/// +/// Version is extracted from all tags on the branch which are valid, and not newer than the current commit. +/// BaseVersionSource is the tag's commit. +/// Increments if the tag is not the current commit. +/// +internal sealed class FallbackVersionStrategy( + Lazy contextLazy, + IIncrementStrategyFinder incrementStrategyFinder, + ITaggedSemanticVersionRepository taggedSemanticVersionRepository) + : IVersionStrategy +{ + private readonly Lazy contextLazy = contextLazy.NotNull(); + private readonly IIncrementStrategyFinder incrementStrategyFinder = incrementStrategyFinder.NotNull(); + private readonly ITaggedSemanticVersionRepository taggedSemanticVersionRepository = taggedSemanticVersionRepository.NotNull(); + + private GitVersionContext Context => contextLazy.Value; + + public IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) + => GetBaseVersionsInternal(configuration); + + private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfiguration configuration) + { + configuration.NotNull(); + + if (!Context.Configuration.VersionStrategy.HasFlag(VersionStrategies.Fallback)) + yield break; + + var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); + + var baseVersionSource = this.taggedSemanticVersionRepository.GetAllTaggedSemanticVersions( + Context.Configuration, configuration.Value, Context.CurrentBranch, label, Context.CurrentCommit.When + ).Select(element => element.Key).FirstOrDefault(); + + var increment = incrementStrategyFinder.DetermineIncrementedField( + currentCommit: Context.CurrentCommit, + baseVersionSource: baseVersionSource, + shouldIncrement: true, + configuration: configuration.Value, + label: label + ); + + yield return new BaseVersion() + { + Operator = new BaseVersionOperator() + { + Source = "Fallback base version", + BaseVersionSource = baseVersionSource, + Increment = increment, + ForceIncrement = false, + Label = label + } + }; + } +} diff --git a/src/GitVersion.Core/VersionCalculation/VersionStrategies.cs b/src/GitVersion.Core/VersionCalculation/VersionStrategies.cs index 395a5d38ac..5810de0df5 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionStrategies.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionStrategies.cs @@ -4,10 +4,11 @@ namespace GitVersion.VersionCalculation; public enum VersionStrategies { None = 0, - ConfiguredNextVersion = 1, - MergeMessage = 2, - TaggedCommit = 4, - TrackReleaseBranches = 8, - VersionInBranchName = 16, - TrunkBased = 32 + Fallback = 1, + ConfiguredNextVersion = 2, + MergeMessage = 4, + TaggedCommit = 8, + TrackReleaseBranches = 16, + VersionInBranchName = 32, + TrunkBased = 64 } diff --git a/src/GitVersion.sln b/src/GitVersion.sln index af7ff58e14..992fd9369f 100644 --- a/src/GitVersion.sln +++ b/src/GitVersion.sln @@ -4,7 +4,7 @@ VisualStudioVersion = 17.5.33502.453 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GitVersion.App", "GitVersion.App\GitVersion.App.csproj", "{C3578A7B-09A6-4444-9383-0DEAFA4958BD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitVersion.Configuration", "GitVersion.Configuration\GitVersion.Configuration.csproj", "{B93C3F0C-6CBF-49E6-A476-A0103319640B}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GitVersion.Configuration", "GitVersion.Configuration\GitVersion.Configuration.csproj", "{B93C3F0C-6CBF-49E6-A476-A0103319640B}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GitVersion.Core.Tests", "GitVersion.Core.Tests\GitVersion.Core.Tests.csproj", "{BF905F84-382C-440D-92F5-C61108626D8D}" EndProject @@ -41,23 +41,24 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "readme", "readme", "{1F4BE015-699F-464A-8FF0-D8762102421A}" ProjectSection(SolutionItems) = preProject ..\BREAKING_CHANGES.md = ..\BREAKING_CHANGES.md + ..\docs\input\docs\reference\configuration.md = ..\docs\input\docs\reference\configuration.md ..\CONTRIBUTING.md = ..\CONTRIBUTING.md ..\LICENSE = ..\LICENSE ..\README.md = ..\README.md ..\SECURITY.md = ..\SECURITY.md EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitVersion.Configuration.Tests", "GitVersion.Configuration.Tests\GitVersion.Configuration.Tests.csproj", "{E3722E82-D283-4BA7-B44F-C43072B829FA}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GitVersion.Configuration.Tests", "GitVersion.Configuration.Tests\GitVersion.Configuration.Tests.csproj", "{E3722E82-D283-4BA7-B44F-C43072B829FA}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "root", "root", "{7D3A83B4-95D9-42AF-AB11-6292209CF00B}" ProjectSection(SolutionItems) = preProject ..\.editorconfig = ..\.editorconfig ..\.gitattributes = ..\.gitattributes ..\.gitignore = ..\.gitignore + ..\schemas\6.0\GitVersion.configuration.json = ..\schemas\6.0\GitVersion.configuration.json + ..\schemas\6.0\GitVersion.json = ..\schemas\6.0\GitVersion.json ..\GitVersion.yml = ..\GitVersion.yml ..\global.json = ..\global.json - ..\schemas\6.0\GitVersion.json = ..\schemas\6.0\GitVersion.json - ..\schemas\6.0\GitVersion.configuration.json = ..\schemas\6.0\GitVersion.configuration.json EndProjectSection EndProject Global @@ -70,6 +71,10 @@ Global {C3578A7B-09A6-4444-9383-0DEAFA4958BD}.Debug|Any CPU.Build.0 = Debug|Any CPU {C3578A7B-09A6-4444-9383-0DEAFA4958BD}.Release|Any CPU.ActiveCfg = Release|Any CPU {C3578A7B-09A6-4444-9383-0DEAFA4958BD}.Release|Any CPU.Build.0 = Release|Any CPU + {B93C3F0C-6CBF-49E6-A476-A0103319640B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B93C3F0C-6CBF-49E6-A476-A0103319640B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B93C3F0C-6CBF-49E6-A476-A0103319640B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B93C3F0C-6CBF-49E6-A476-A0103319640B}.Release|Any CPU.Build.0 = Release|Any CPU {BF905F84-382C-440D-92F5-C61108626D8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BF905F84-382C-440D-92F5-C61108626D8D}.Debug|Any CPU.Build.0 = Debug|Any CPU {BF905F84-382C-440D-92F5-C61108626D8D}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -118,10 +123,6 @@ Global {22026A20-261C-4EF5-836C-EA6F6D37B5E3}.Debug|Any CPU.Build.0 = Debug|Any CPU {22026A20-261C-4EF5-836C-EA6F6D37B5E3}.Release|Any CPU.ActiveCfg = Release|Any CPU {22026A20-261C-4EF5-836C-EA6F6D37B5E3}.Release|Any CPU.Build.0 = Release|Any CPU - {B93C3F0C-6CBF-49E6-A476-A0103319640B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B93C3F0C-6CBF-49E6-A476-A0103319640B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B93C3F0C-6CBF-49E6-A476-A0103319640B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B93C3F0C-6CBF-49E6-A476-A0103319640B}.Release|Any CPU.Build.0 = Release|Any CPU {E3722E82-D283-4BA7-B44F-C43072B829FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E3722E82-D283-4BA7-B44F-C43072B829FA}.Debug|Any CPU.Build.0 = Debug|Any CPU {E3722E82-D283-4BA7-B44F-C43072B829FA}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -131,14 +132,14 @@ Global HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution + {B93C3F0C-6CBF-49E6-A476-A0103319640B} = {69C36B9D-E496-42A2-B091-C055E999686C} {093AFCF2-68F4-49B1-8173-7CB88467E783} = {69C36B9D-E496-42A2-B091-C055E999686C} {B1C486D2-2B07-42D6-86AE-3F9AD50F27C8} = {69C36B9D-E496-42A2-B091-C055E999686C} {85060C01-6DAF-48E9-9D7E-AEDA8FFEB0DD} = {69C36B9D-E496-42A2-B091-C055E999686C} {843450BC-3A6D-4DA6-8520-2D9A9C8218AC} = {69C36B9D-E496-42A2-B091-C055E999686C} {13C60949-7225-4B08-BE63-CAAC5E25FD16} = {69C36B9D-E496-42A2-B091-C055E999686C} - {B93C3F0C-6CBF-49E6-A476-A0103319640B} = {69C36B9D-E496-42A2-B091-C055E999686C} - {E3722E82-D283-4BA7-B44F-C43072B829FA} = {69C36B9D-E496-42A2-B091-C055E999686C} {1F4BE015-699F-464A-8FF0-D8762102421A} = {7D3A83B4-95D9-42AF-AB11-6292209CF00B} + {E3722E82-D283-4BA7-B44F-C43072B829FA} = {69C36B9D-E496-42A2-B091-C055E999686C} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {0C1C310E-7A4D-4032-878B-6DC375894C49} From 048371d72d9eea9ab6bf27bce209f1c3ed5da892 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Sun, 17 Mar 2024 09:55:07 +0100 Subject: [PATCH 047/544] Rename to ShouldIncrement --- .../Strategies/ConfiguredNextVersionVersionStrategyTests.cs | 2 +- src/GitVersion.Core/PublicAPI.Unshipped.txt | 2 +- .../VersionSearchStrategies/BaseVersion.cs | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfiguredNextVersionVersionStrategyTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfiguredNextVersionVersionStrategyTests.cs index 2f535f1f56..369124aae4 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfiguredNextVersionVersionStrategyTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfiguredNextVersionVersionStrategyTests.cs @@ -45,7 +45,7 @@ public void ConfiguredNextVersionTest( baseVersion.BaseVersionSource.ShouldBeNull(); var shouldBeIncremented = semanticVersion != incrementedVersion; - baseVersion.ShouldBeIncremented.ShouldBe(shouldBeIncremented); + baseVersion.ShouldIncrement.ShouldBe(shouldBeIncremented); if (shouldBeIncremented) { baseVersion.Operator.ShouldNotBeNull(); diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 8b5db12450..fac2dcec4a 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -666,7 +666,7 @@ GitVersion.VersionCalculation.BaseVersion.Operand.init -> void GitVersion.VersionCalculation.BaseVersion.Operator.get -> GitVersion.VersionCalculation.BaseVersionOperator? GitVersion.VersionCalculation.BaseVersion.Operator.init -> void GitVersion.VersionCalculation.BaseVersion.SemanticVersion.get -> GitVersion.SemanticVersion! -GitVersion.VersionCalculation.BaseVersion.ShouldBeIncremented.get -> bool +GitVersion.VersionCalculation.BaseVersion.ShouldIncrement.get -> bool GitVersion.VersionCalculation.BaseVersion.Source.get -> string! GitVersion.VersionCalculation.BaseVersionOperand GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionOperand() -> void diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs index a3374e9626..03fa295d43 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs @@ -23,7 +23,7 @@ public BaseVersion(string source, SemanticVersion semanticVersion, ICommit? base public ICommit? BaseVersionSource => Operator?.BaseVersionSource ?? Operand.BaseVersionSource; [MemberNotNullWhen(true, nameof(Operator))] - public bool ShouldBeIncremented => Operator is not null; + public bool ShouldIncrement => Operator is not null; public BaseVersionOperand Operand { get; init; } @@ -33,7 +33,7 @@ public SemanticVersion GetIncrementedVersion() { var result = SemanticVersion; - if (ShouldBeIncremented) + if (ShouldIncrement) { result = result.Increment( increment: Operator.Increment, @@ -60,7 +60,7 @@ public override string ToString() var commitSource = BaseVersionSource?.Id.ToString(7) ?? "External"; StringBuilder stringBuilder = new(); - if (ShouldBeIncremented) + if (ShouldIncrement) { stringBuilder.Append($"{Source}: "); if (Operator.ForceIncrement) From 58e68f14eec84cbecd2307a5a790a7ef0c5100fc Mon Sep 17 00:00:00 2001 From: HHobeck Date: Sun, 17 Mar 2024 09:55:07 +0100 Subject: [PATCH 048/544] Fix encoding in CommitExtensions --- src/GitVersion.Core/Git/CommitExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GitVersion.Core/Git/CommitExtensions.cs b/src/GitVersion.Core/Git/CommitExtensions.cs index 8972a7c438..6cd5c9f460 100644 --- a/src/GitVersion.Core/Git/CommitExtensions.cs +++ b/src/GitVersion.Core/Git/CommitExtensions.cs @@ -1,4 +1,4 @@ -using GitVersion.Extensions; +using GitVersion.Extensions; namespace GitVersion; From bcbe3e7690e780209fbecfbc5692d2c45eb0f3d9 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Thu, 21 Mar 2024 10:31:24 +0100 Subject: [PATCH 049/544] Fix warnings in MinDateVersionFilter and shaVersionFilterTests --- .../VersionCalculation/MinDateVersionFilterTests.cs | 2 +- .../VersionCalculation/ShaVersionFilterTests.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/GitVersion.Core.Tests/VersionCalculation/MinDateVersionFilterTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/MinDateVersionFilterTests.cs index 8a95fac0ac..317a0af8a2 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/MinDateVersionFilterTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/MinDateVersionFilterTests.cs @@ -12,7 +12,7 @@ public void VerifyNullGuard() var dummy = DateTimeOffset.UtcNow.AddSeconds(1.0); var sut = new MinDateVersionFilter(dummy); - Should.Throw(() => sut.Exclude(null, out _)); + Should.Throw(() => sut.Exclude(null!, out _)); } [Test] diff --git a/src/GitVersion.Core.Tests/VersionCalculation/ShaVersionFilterTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/ShaVersionFilterTests.cs index aecb3ab228..86be277b52 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/ShaVersionFilterTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/ShaVersionFilterTests.cs @@ -7,12 +7,12 @@ namespace GitVersion.Core.Tests; public class ShaVersionFilterTests : TestBase { [Test] - public void VerifyNullGuard2() + public void VerifyNullGuard() { var commit = GitToolsTestingExtensions.CreateMockCommit(); var sut = new ShaVersionFilter(new[] { commit.Sha }); - Should.Throw(() => sut.Exclude(null, out _)); + Should.Throw(() => sut.Exclude(null!, out _)); } [Test] From f835dfc0768cc148f07d11eb6da04b1efb5ccf54 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Thu, 21 Mar 2024 11:43:35 +0100 Subject: [PATCH 050/544] Integrate code review remarks of Arthur --- .../VersionInBranchNameVersionStrategy.cs | 4 ---- src/GitVersion.sln | 3 --- 2 files changed, 7 deletions(-) diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs index c9c91ac190..976bf25122 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs @@ -54,10 +54,6 @@ public bool TryGetBaseVersion(EffectiveBranchConfiguration configuration, [NotNu } var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, branchNameOverride); - //if (configuration.Value.Label != label) - //{ - // log.Info("Using current branch name to calculate version tag"); - //} baseVersion = new BaseVersion("Version in branch name", result.Value, commitBranchWasBranchedFrom.Value.Commit) { diff --git a/src/GitVersion.sln b/src/GitVersion.sln index 992fd9369f..cf4704cb70 100644 --- a/src/GitVersion.sln +++ b/src/GitVersion.sln @@ -41,7 +41,6 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "readme", "readme", "{1F4BE015-699F-464A-8FF0-D8762102421A}" ProjectSection(SolutionItems) = preProject ..\BREAKING_CHANGES.md = ..\BREAKING_CHANGES.md - ..\docs\input\docs\reference\configuration.md = ..\docs\input\docs\reference\configuration.md ..\CONTRIBUTING.md = ..\CONTRIBUTING.md ..\LICENSE = ..\LICENSE ..\README.md = ..\README.md @@ -55,8 +54,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "root", "root", "{7D3A83B4-9 ..\.editorconfig = ..\.editorconfig ..\.gitattributes = ..\.gitattributes ..\.gitignore = ..\.gitignore - ..\schemas\6.0\GitVersion.configuration.json = ..\schemas\6.0\GitVersion.configuration.json - ..\schemas\6.0\GitVersion.json = ..\schemas\6.0\GitVersion.json ..\GitVersion.yml = ..\GitVersion.yml ..\global.json = ..\global.json EndProjectSection From ec248ba9f2cd465b50aa8d3c1f2eab57f0370615 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 21 Mar 2024 12:10:26 +0100 Subject: [PATCH 051/544] reviewed classes/methods that are included in the public API --- .../ArgumentParserTests.cs | 1 - .../ArgumentParserExtensions.cs | 78 +++++++++++++++ .../ConfigurationProviderTests.cs | 1 - .../EmptyConfigurationBuilder.cs | 1 - .../FeatureBranchScenarios.cs | 1 - .../IntegrationTests/HotfixBranchScenarios.cs | 1 - .../ReleaseBranchScenarios.cs | 1 - .../TrunkBasedDevelopmentScenarios.cs | 1 - src/GitVersion.Core/Agents/BuildAgentBase.cs | 2 +- src/GitVersion.Core/Agents/IBuildAgent.cs | 2 +- src/GitVersion.Core/Agents/LocalBuild.cs | 2 +- .../AssemblyFileVersioningScheme.cs | 2 +- .../AssemblyVersioningScheme.cs | 2 +- .../Configuration/ConfigurationConstants.cs | 1 - .../Configuration/IGitVersionConfiguration.cs | 1 - .../IgnoreConfigurationExtensions.cs | 2 +- .../JsonPropertyDefaultAttribute.cs | 2 +- .../AssemblyVersionsGeneratorExtensions.cs | 2 + .../Extensions/ConfigurationExtensions.cs | 2 +- .../IncrementStrategyExtensions.cs | 2 +- .../Extensions/StringExtensions.cs | 79 --------------- src/GitVersion.Core/Git/IRefSpecCollection.cs | 4 +- src/GitVersion.Core/Git/ITagCollection.cs | 4 +- src/GitVersion.Core/GitVersion.Core.csproj | 1 + src/GitVersion.Core/PublicAPI.Unshipped.txt | 96 +++++-------------- .../Caching/GitVersionCache.cs | 2 +- .../Caching/GitVersionCacheKey.cs | 15 +-- .../Trunk/CommitOnTrunkBranchedBase.cs | 1 + .../Output/AssemblyFileVersionTests.cs | 1 + .../Output/AssemblyInfoFileUpdaterTests.cs | 1 - .../Output/ProjectFileUpdaterTests.cs | 1 - .../GitVersion.Output.csproj | 3 + src/GitVersion.Output/PublicAPI.Unshipped.txt | 66 +------------ .../Serializer/VersionVariableSerializer.cs | 2 +- .../Serializer/VersionVariablesJsonModel.cs | 2 +- .../VersionVariablesJsonStringConverter.cs | 2 +- 36 files changed, 128 insertions(+), 259 deletions(-) create mode 100644 src/GitVersion.App/ArgumentParserExtensions.cs rename src/GitVersion.Core/{Extensions => Configuration}/AssemblyFileVersioningScheme.cs (77%) rename src/GitVersion.Core/{Extensions => Configuration}/AssemblyVersioningScheme.cs (77%) rename src/GitVersion.Core/{VersionCalculation => Extensions}/IncrementStrategyExtensions.cs (93%) diff --git a/src/GitVersion.App.Tests/ArgumentParserTests.cs b/src/GitVersion.App.Tests/ArgumentParserTests.cs index 181578019e..d8456c7d12 100644 --- a/src/GitVersion.App.Tests/ArgumentParserTests.cs +++ b/src/GitVersion.App.Tests/ArgumentParserTests.cs @@ -1,6 +1,5 @@ using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; -using GitVersion.Extensions; using GitVersion.Helpers; using GitVersion.Logging; using GitVersion.VersionCalculation; diff --git a/src/GitVersion.App/ArgumentParserExtensions.cs b/src/GitVersion.App/ArgumentParserExtensions.cs new file mode 100644 index 0000000000..53c7f5387a --- /dev/null +++ b/src/GitVersion.App/ArgumentParserExtensions.cs @@ -0,0 +1,78 @@ +using System.Text.RegularExpressions; +using GitVersion.Helpers; + +namespace GitVersion; + +internal static class ArgumentParserExtensions +{ + private static readonly string[] TrueValues = ["1", "true"]; + private static readonly string[] FalseValues = ["0", "false"]; + + public static bool IsTrue(this string? value) => TrueValues.Contains(value, StringComparer.OrdinalIgnoreCase); + + public static bool IsFalse(this string? value) => FalseValues.Contains(value, StringComparer.OrdinalIgnoreCase); + + public static bool IsValidPath(this string? path) + { + if (path == null) + return false; + + try + { + _ = PathHelper.GetFullPath(path); + } + catch + { + path = PathHelper.Combine(SysEnv.CurrentDirectory, path); + + try + { + _ = PathHelper.GetFullPath(path); + } + catch + { + return false; + } + } + + return Directory.Exists(path); + } + + public static bool IsSwitchArgument(this string? value) + => value != null + && (value.StartsWith('-') || value.StartsWith('/')) + && !Regex.Match(value, @"/\w+:").Success; //Exclude msbuild & project parameters in form /blah:, which should be parsed as values, not switch names. + + public static bool IsSwitch(this string? value, string switchName) + { + if (value == null) + return false; + + if (value.StartsWith('-')) + { + value = value[1..]; + } + + if (value.StartsWith('/')) + { + value = value[1..]; + } + + return string.Equals(switchName, value, StringComparison.OrdinalIgnoreCase); + } + + public static bool IsHelp(this string singleArgument) => (singleArgument == "?") || singleArgument.IsSwitch("h") || singleArgument.IsSwitch("help") || singleArgument.IsSwitch("?"); + + public static bool ArgumentRequiresValue(this string argument, int argumentIndex) + { + var booleanArguments = new[] { "init", "updateassemblyinfo", "ensureassemblyinfo", "nofetch", "nonormalize", "nocache" }; + + var argumentMightRequireValue = !booleanArguments.Contains(argument[1..], StringComparer.OrdinalIgnoreCase); + + // If this is the first argument that might be a target path, the argument starts with slash and we're on an OS that supports paths with slashes, the argument does not require a value. + if (argumentMightRequireValue && argumentIndex == 0 && argument.StartsWith('/') && Path.DirectorySeparatorChar == '/' && argument.IsValidPath()) + return false; + + return argumentMightRequireValue; + } +} diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs index 9151a39a62..0792e5b4cc 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs @@ -2,7 +2,6 @@ using GitVersion.Configuration; using GitVersion.Configuration.Tests.Configuration; using GitVersion.Core.Tests.Helpers; -using GitVersion.Extensions; using GitVersion.Helpers; using GitVersion.Logging; using GitVersion.VersionCalculation; diff --git a/src/GitVersion.Configuration/EmptyConfigurationBuilder.cs b/src/GitVersion.Configuration/EmptyConfigurationBuilder.cs index 0ecd655721..b5431ee613 100644 --- a/src/GitVersion.Configuration/EmptyConfigurationBuilder.cs +++ b/src/GitVersion.Configuration/EmptyConfigurationBuilder.cs @@ -1,4 +1,3 @@ -using GitVersion.Extensions; using GitVersion.VersionCalculation; namespace GitVersion.Configuration; diff --git a/src/GitVersion.Core.Tests/IntegrationTests/FeatureBranchScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/FeatureBranchScenarios.cs index caba8424e3..e0db3bb7ee 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/FeatureBranchScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/FeatureBranchScenarios.cs @@ -1,6 +1,5 @@ using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; -using GitVersion.Extensions; using GitVersion.VersionCalculation; using LibGit2Sharp; diff --git a/src/GitVersion.Core.Tests/IntegrationTests/HotfixBranchScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/HotfixBranchScenarios.cs index cd3658f260..47ad7e13f8 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/HotfixBranchScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/HotfixBranchScenarios.cs @@ -1,6 +1,5 @@ using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; -using GitVersion.Extensions; using LibGit2Sharp; namespace GitVersion.Core.Tests.IntegrationTests; diff --git a/src/GitVersion.Core.Tests/IntegrationTests/ReleaseBranchScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/ReleaseBranchScenarios.cs index 4684491768..315cfad80c 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/ReleaseBranchScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/ReleaseBranchScenarios.cs @@ -1,6 +1,5 @@ using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; -using GitVersion.Extensions; using LibGit2Sharp; namespace GitVersion.Core.Tests.IntegrationTests; diff --git a/src/GitVersion.Core.Tests/IntegrationTests/TrunkBasedDevelopmentScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/TrunkBasedDevelopmentScenarios.cs index 6e62cdf6cd..90f814a906 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/TrunkBasedDevelopmentScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/TrunkBasedDevelopmentScenarios.cs @@ -1,6 +1,5 @@ using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; -using GitVersion.Extensions; using GitVersion.VersionCalculation; namespace GitVersion.Core.Tests.IntegrationTests; diff --git a/src/GitVersion.Core/Agents/BuildAgentBase.cs b/src/GitVersion.Core/Agents/BuildAgentBase.cs index b1f2fc19eb..fdd38d0cc8 100644 --- a/src/GitVersion.Core/Agents/BuildAgentBase.cs +++ b/src/GitVersion.Core/Agents/BuildAgentBase.cs @@ -4,7 +4,7 @@ namespace GitVersion.Agents; -public abstract class BuildAgentBase(IEnvironment environment, ILog log) : ICurrentBuildAgent +internal abstract class BuildAgentBase(IEnvironment environment, ILog log) : ICurrentBuildAgent { protected readonly ILog Log = log; protected IEnvironment Environment { get; } = environment; diff --git a/src/GitVersion.Core/Agents/IBuildAgent.cs b/src/GitVersion.Core/Agents/IBuildAgent.cs index 8b575934eb..b6f7b36725 100644 --- a/src/GitVersion.Core/Agents/IBuildAgent.cs +++ b/src/GitVersion.Core/Agents/IBuildAgent.cs @@ -14,4 +14,4 @@ public interface IBuildAgent void WriteIntegration(Action writer, GitVersionVariables variables, bool updateBuildNumber = true); } -public interface ICurrentBuildAgent : IBuildAgent { } +public interface ICurrentBuildAgent : IBuildAgent; diff --git a/src/GitVersion.Core/Agents/LocalBuild.cs b/src/GitVersion.Core/Agents/LocalBuild.cs index 4e84646401..11a636b352 100644 --- a/src/GitVersion.Core/Agents/LocalBuild.cs +++ b/src/GitVersion.Core/Agents/LocalBuild.cs @@ -3,7 +3,7 @@ namespace GitVersion.Agents; -public class LocalBuild(IEnvironment environment, ILog log) : BuildAgentBase(environment, log) +internal class LocalBuild(IEnvironment environment, ILog log) : BuildAgentBase(environment, log) { public override bool IsDefault => true; diff --git a/src/GitVersion.Core/Extensions/AssemblyFileVersioningScheme.cs b/src/GitVersion.Core/Configuration/AssemblyFileVersioningScheme.cs similarity index 77% rename from src/GitVersion.Core/Extensions/AssemblyFileVersioningScheme.cs rename to src/GitVersion.Core/Configuration/AssemblyFileVersioningScheme.cs index 59b42e2923..1593116fba 100644 --- a/src/GitVersion.Core/Extensions/AssemblyFileVersioningScheme.cs +++ b/src/GitVersion.Core/Configuration/AssemblyFileVersioningScheme.cs @@ -1,4 +1,4 @@ -namespace GitVersion.Extensions; +namespace GitVersion.Configuration; public enum AssemblyFileVersioningScheme { diff --git a/src/GitVersion.Core/Extensions/AssemblyVersioningScheme.cs b/src/GitVersion.Core/Configuration/AssemblyVersioningScheme.cs similarity index 77% rename from src/GitVersion.Core/Extensions/AssemblyVersioningScheme.cs rename to src/GitVersion.Core/Configuration/AssemblyVersioningScheme.cs index e867035dce..596decd681 100644 --- a/src/GitVersion.Core/Extensions/AssemblyVersioningScheme.cs +++ b/src/GitVersion.Core/Configuration/AssemblyVersioningScheme.cs @@ -1,4 +1,4 @@ -namespace GitVersion.Extensions; +namespace GitVersion.Configuration; public enum AssemblyVersioningScheme { diff --git a/src/GitVersion.Core/Configuration/ConfigurationConstants.cs b/src/GitVersion.Core/Configuration/ConfigurationConstants.cs index ffbd1cea2b..231633c927 100644 --- a/src/GitVersion.Core/Configuration/ConfigurationConstants.cs +++ b/src/GitVersion.Core/Configuration/ConfigurationConstants.cs @@ -1,4 +1,3 @@ -using GitVersion.Extensions; using GitVersion.VersionCalculation; namespace GitVersion.Configuration; diff --git a/src/GitVersion.Core/Configuration/IGitVersionConfiguration.cs b/src/GitVersion.Core/Configuration/IGitVersionConfiguration.cs index 6680f5aea0..1ef7b7971b 100644 --- a/src/GitVersion.Core/Configuration/IGitVersionConfiguration.cs +++ b/src/GitVersion.Core/Configuration/IGitVersionConfiguration.cs @@ -1,5 +1,4 @@ using System.Text.RegularExpressions; -using GitVersion.Extensions; using GitVersion.VersionCalculation; namespace GitVersion.Configuration; diff --git a/src/GitVersion.Core/Configuration/IgnoreConfigurationExtensions.cs b/src/GitVersion.Core/Configuration/IgnoreConfigurationExtensions.cs index 4308b39254..328d038759 100644 --- a/src/GitVersion.Core/Configuration/IgnoreConfigurationExtensions.cs +++ b/src/GitVersion.Core/Configuration/IgnoreConfigurationExtensions.cs @@ -2,7 +2,7 @@ namespace GitVersion.Configuration; -public static class IgnoreConfigurationExtensions +internal static class IgnoreConfigurationExtensions { public static IEnumerable Filter(this IIgnoreConfiguration ignore, IEnumerable source) { diff --git a/src/GitVersion.Core/Core/Attributes/JsonPropertyDefaultAttribute.cs b/src/GitVersion.Core/Core/Attributes/JsonPropertyDefaultAttribute.cs index f2a8f01fd6..e8fd5f3f56 100644 --- a/src/GitVersion.Core/Core/Attributes/JsonPropertyDefaultAttribute.cs +++ b/src/GitVersion.Core/Core/Attributes/JsonPropertyDefaultAttribute.cs @@ -1,4 +1,4 @@ -using GitVersion.Extensions; +using GitVersion.Configuration; namespace GitVersion.Attributes; diff --git a/src/GitVersion.Core/Extensions/AssemblyVersionsGeneratorExtensions.cs b/src/GitVersion.Core/Extensions/AssemblyVersionsGeneratorExtensions.cs index 1ef7f96637..d4465c8eac 100644 --- a/src/GitVersion.Core/Extensions/AssemblyVersionsGeneratorExtensions.cs +++ b/src/GitVersion.Core/Extensions/AssemblyVersionsGeneratorExtensions.cs @@ -1,3 +1,5 @@ +using GitVersion.Configuration; + namespace GitVersion.Extensions; public static class AssemblyVersionsGeneratorExtensions diff --git a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs index 3f0532639b..10bec60e63 100644 --- a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs +++ b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs @@ -4,7 +4,7 @@ namespace GitVersion.Configuration; -public static class ConfigurationExtensions +internal static class ConfigurationExtensions { public static EffectiveBranchConfiguration GetEffectiveBranchConfiguration(this IGitVersionConfiguration configuration, IBranch branch) { diff --git a/src/GitVersion.Core/VersionCalculation/IncrementStrategyExtensions.cs b/src/GitVersion.Core/Extensions/IncrementStrategyExtensions.cs similarity index 93% rename from src/GitVersion.Core/VersionCalculation/IncrementStrategyExtensions.cs rename to src/GitVersion.Core/Extensions/IncrementStrategyExtensions.cs index b535bef79b..eb84a57dce 100644 --- a/src/GitVersion.Core/VersionCalculation/IncrementStrategyExtensions.cs +++ b/src/GitVersion.Core/Extensions/IncrementStrategyExtensions.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Extensions; public static class IncrementStrategyExtensions { diff --git a/src/GitVersion.Core/Extensions/StringExtensions.cs b/src/GitVersion.Core/Extensions/StringExtensions.cs index 7fcd563d95..b45126b8c2 100644 --- a/src/GitVersion.Core/Extensions/StringExtensions.cs +++ b/src/GitVersion.Core/Extensions/StringExtensions.cs @@ -1,89 +1,10 @@ using System.Diagnostics.CodeAnalysis; using System.Text.RegularExpressions; -using GitVersion.Helpers; namespace GitVersion.Extensions; public static class StringExtensions { - private static readonly string[] Trues = ["1", "true"]; - private static readonly string[] Falses = ["0", "false"]; - - public static bool IsTrue(this string? value) => Trues.Contains(value, StringComparer.OrdinalIgnoreCase); - - public static bool IsFalse(this string? value) => Falses.Contains(value, StringComparer.OrdinalIgnoreCase); - - public static bool IsValidPath(this string? path) - { - if (path == null) - return false; - - try - { - _ = PathHelper.GetFullPath(path); - } - catch - { - path = PathHelper.Combine(System.Environment.CurrentDirectory, path); - - try - { - _ = PathHelper.GetFullPath(path); - } - catch - { - return false; - } - } - - return Directory.Exists(path); - } - - public static bool IsSwitchArgument(this string? value) => value != null - && (value.StartsWith('-') || value.StartsWith('/')) - && !Regex.Match(value, @"/\w+:").Success; //Exclude msbuild & project parameters in form /blah:, which should be parsed as values, not switch names. - - public static bool IsSwitch(this string? value, string switchName) - { - if (value == null) - return false; - - if (value.StartsWith('-')) - { - value = value[1..]; - } - - if (value.StartsWith('/')) - { - value = value[1..]; - } - - return string.Equals(switchName, value, StringComparison.OrdinalIgnoreCase); - } - - public static bool IsHelp(this string singleArgument) => (singleArgument == "?") || singleArgument.IsSwitch("h") || singleArgument.IsSwitch("help") || singleArgument.IsSwitch("?"); - - public static bool ArgumentRequiresValue(this string argument, int argumentIndex) - { - var booleanArguments = new[] - { - "init", - "updateassemblyinfo", - "ensureassemblyinfo", - "nofetch", - "nonormalize", - "nocache" - }; - - var argumentMightRequireValue = !booleanArguments.Contains(argument[1..], StringComparer.OrdinalIgnoreCase); - - // If this is the first argument that might be a target path, the argument starts with slash and we're on an OS that supports paths with slashes, the argument does not require a value. - if (argumentMightRequireValue && argumentIndex == 0 && argument.StartsWith('/') && Path.DirectorySeparatorChar == '/' && argument.IsValidPath()) - return false; - - return argumentMightRequireValue; - } - public static void AppendLineFormat(this StringBuilder stringBuilder, string format, params object[] args) { stringBuilder.AppendFormat(format, args); diff --git a/src/GitVersion.Core/Git/IRefSpecCollection.cs b/src/GitVersion.Core/Git/IRefSpecCollection.cs index 3ff492c0a3..1512aa8cbc 100644 --- a/src/GitVersion.Core/Git/IRefSpecCollection.cs +++ b/src/GitVersion.Core/Git/IRefSpecCollection.cs @@ -1,5 +1,3 @@ namespace GitVersion; -public interface IRefSpecCollection : IEnumerable -{ -} +public interface IRefSpecCollection : IEnumerable; diff --git a/src/GitVersion.Core/Git/ITagCollection.cs b/src/GitVersion.Core/Git/ITagCollection.cs index c5e189c6b5..eca7b5c0e7 100644 --- a/src/GitVersion.Core/Git/ITagCollection.cs +++ b/src/GitVersion.Core/Git/ITagCollection.cs @@ -1,5 +1,3 @@ namespace GitVersion; -public interface ITagCollection : IEnumerable -{ -} +public interface ITagCollection : IEnumerable; diff --git a/src/GitVersion.Core/GitVersion.Core.csproj b/src/GitVersion.Core/GitVersion.Core.csproj index 564781044c..a11a076110 100644 --- a/src/GitVersion.Core/GitVersion.Core.csproj +++ b/src/GitVersion.Core/GitVersion.Core.csproj @@ -21,6 +21,7 @@ + diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index fac2dcec4a..504abdd463 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -1,8 +1,4 @@ #nullable enable -GitVersion.Agents.BuildAgentBase -GitVersion.Agents.BuildAgentBase.BuildAgentBase(GitVersion.IEnvironment! environment, GitVersion.Logging.ILog! log) -> void -GitVersion.Agents.BuildAgentBase.Environment.get -> GitVersion.IEnvironment! -GitVersion.Agents.BuildAgentBase.GenerateBuildLogOutput(GitVersion.OutputVariables.GitVersionVariables! variables) -> System.Collections.Generic.IEnumerable! GitVersion.Agents.IBuildAgent GitVersion.Agents.IBuildAgent.CanApplyToCurrentContext() -> bool GitVersion.Agents.IBuildAgent.GetCurrentBranch(bool usingDynamicRepos) -> string? @@ -11,8 +7,6 @@ GitVersion.Agents.IBuildAgent.PreventFetch() -> bool GitVersion.Agents.IBuildAgent.ShouldCleanUpRemotes() -> bool GitVersion.Agents.IBuildAgent.WriteIntegration(System.Action! writer, GitVersion.OutputVariables.GitVersionVariables! variables, bool updateBuildNumber = true) -> void GitVersion.Agents.ICurrentBuildAgent -GitVersion.Agents.LocalBuild -GitVersion.Agents.LocalBuild.LocalBuild(GitVersion.IEnvironment! environment, GitVersion.Logging.ILog! log) -> void GitVersion.AssemblySettingsInfo GitVersion.AssemblySettingsInfo.AssemblySettingsInfo() -> void GitVersion.AssemblySettingsInfo.EnsureAssemblyInfo -> bool @@ -40,12 +34,12 @@ GitVersion.Attributes.Format.UriReference = 16 -> GitVersion.Attributes.Format GitVersion.Attributes.Format.UriTemplate = 17 -> GitVersion.Attributes.Format GitVersion.Attributes.Format.Uuid = 18 -> GitVersion.Attributes.Format GitVersion.Attributes.JsonPropertyDefaultAttribute +GitVersion.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(GitVersion.Configuration.AssemblyFileVersioningScheme value) -> void +GitVersion.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(GitVersion.Configuration.AssemblyVersioningScheme value) -> void GitVersion.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(object? boxedValue) -> void GitVersion.Attributes.JsonPropertyDefaultAttribute.Value.get -> string! GitVersion.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(bool value) -> void GitVersion.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(string? value) -> void -GitVersion.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(GitVersion.Extensions.AssemblyFileVersioningScheme value) -> void -GitVersion.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(GitVersion.Extensions.AssemblyVersioningScheme value) -> void GitVersion.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(GitVersion.SemanticVersionFormat value) -> void GitVersion.Attributes.JsonPropertyDescriptionAttribute GitVersion.Attributes.JsonPropertyDescriptionAttribute.Description.get -> string! @@ -102,17 +96,28 @@ GitVersion.Common.IRepositoryStore.GetSourceBranches(GitVersion.IBranch! branch, GitVersion.Common.IRepositoryStore.GetSourceBranches(GitVersion.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.IBranch![]! excludedBranches) -> System.Collections.Generic.IEnumerable! GitVersion.Common.IRepositoryStore.GetTargetBranch(string? targetBranchName) -> GitVersion.IBranch! GitVersion.Common.IRepositoryStore.IsCommitOnBranch(GitVersion.ICommit? baseVersionSource, GitVersion.IBranch! branch, GitVersion.ICommit! firstMatchingCommit) -> bool -GitVersion.Configuration.ConfigurationExtensions +GitVersion.Configuration.AssemblyFileVersioningScheme +GitVersion.Configuration.AssemblyFileVersioningScheme.Major = 3 -> GitVersion.Configuration.AssemblyFileVersioningScheme +GitVersion.Configuration.AssemblyFileVersioningScheme.MajorMinor = 2 -> GitVersion.Configuration.AssemblyFileVersioningScheme +GitVersion.Configuration.AssemblyFileVersioningScheme.MajorMinorPatch = 1 -> GitVersion.Configuration.AssemblyFileVersioningScheme +GitVersion.Configuration.AssemblyFileVersioningScheme.MajorMinorPatchTag = 0 -> GitVersion.Configuration.AssemblyFileVersioningScheme +GitVersion.Configuration.AssemblyFileVersioningScheme.None = 4 -> GitVersion.Configuration.AssemblyFileVersioningScheme +GitVersion.Configuration.AssemblyVersioningScheme +GitVersion.Configuration.AssemblyVersioningScheme.Major = 3 -> GitVersion.Configuration.AssemblyVersioningScheme +GitVersion.Configuration.AssemblyVersioningScheme.MajorMinor = 2 -> GitVersion.Configuration.AssemblyVersioningScheme +GitVersion.Configuration.AssemblyVersioningScheme.MajorMinorPatch = 1 -> GitVersion.Configuration.AssemblyVersioningScheme +GitVersion.Configuration.AssemblyVersioningScheme.MajorMinorPatchTag = 0 -> GitVersion.Configuration.AssemblyVersioningScheme +GitVersion.Configuration.AssemblyVersioningScheme.None = 4 -> GitVersion.Configuration.AssemblyVersioningScheme GitVersion.Configuration.EffectiveBranchConfiguration GitVersion.Configuration.EffectiveBranchConfiguration.Branch.get -> GitVersion.IBranch! GitVersion.Configuration.EffectiveBranchConfiguration.EffectiveBranchConfiguration(GitVersion.Configuration.EffectiveConfiguration! Value, GitVersion.IBranch! Branch) -> void GitVersion.Configuration.EffectiveBranchConfiguration.Value.get -> GitVersion.Configuration.EffectiveConfiguration! GitVersion.Configuration.EffectiveConfiguration GitVersion.Configuration.EffectiveConfiguration.AssemblyFileVersioningFormat.get -> string? -GitVersion.Configuration.EffectiveConfiguration.AssemblyFileVersioningScheme.get -> GitVersion.Extensions.AssemblyFileVersioningScheme +GitVersion.Configuration.EffectiveConfiguration.AssemblyFileVersioningScheme.get -> GitVersion.Configuration.AssemblyFileVersioningScheme GitVersion.Configuration.EffectiveConfiguration.AssemblyInformationalFormat.get -> string? GitVersion.Configuration.EffectiveConfiguration.AssemblyVersioningFormat.get -> string? -GitVersion.Configuration.EffectiveConfiguration.AssemblyVersioningScheme.get -> GitVersion.Extensions.AssemblyVersioningScheme +GitVersion.Configuration.EffectiveConfiguration.AssemblyVersioningScheme.get -> GitVersion.Configuration.AssemblyVersioningScheme GitVersion.Configuration.EffectiveConfiguration.DeploymentMode.get -> GitVersion.VersionCalculation.DeploymentMode GitVersion.Configuration.EffectiveConfiguration.EffectiveConfiguration(GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.Configuration.IBranchConfiguration! branchConfiguration) -> void GitVersion.Configuration.EffectiveConfiguration.Ignore.get -> GitVersion.Configuration.IIgnoreConfiguration! @@ -170,10 +175,10 @@ GitVersion.Configuration.IConfigurationProvider GitVersion.Configuration.IConfigurationProvider.Provide(System.Collections.Generic.IReadOnlyDictionary? overrideConfiguration = null) -> GitVersion.Configuration.IGitVersionConfiguration! GitVersion.Configuration.IGitVersionConfiguration GitVersion.Configuration.IGitVersionConfiguration.AssemblyFileVersioningFormat.get -> string? -GitVersion.Configuration.IGitVersionConfiguration.AssemblyFileVersioningScheme.get -> GitVersion.Extensions.AssemblyFileVersioningScheme? +GitVersion.Configuration.IGitVersionConfiguration.AssemblyFileVersioningScheme.get -> GitVersion.Configuration.AssemblyFileVersioningScheme? GitVersion.Configuration.IGitVersionConfiguration.AssemblyInformationalFormat.get -> string? GitVersion.Configuration.IGitVersionConfiguration.AssemblyVersioningFormat.get -> string? -GitVersion.Configuration.IGitVersionConfiguration.AssemblyVersioningScheme.get -> GitVersion.Extensions.AssemblyVersioningScheme? +GitVersion.Configuration.IGitVersionConfiguration.AssemblyVersioningScheme.get -> GitVersion.Configuration.AssemblyVersioningScheme? GitVersion.Configuration.IGitVersionConfiguration.Branches.get -> System.Collections.Generic.IReadOnlyDictionary! GitVersion.Configuration.IGitVersionConfiguration.CommitDateFormat.get -> string? GitVersion.Configuration.IGitVersionConfiguration.GetEmptyBranchConfiguration() -> GitVersion.Configuration.IBranchConfiguration! @@ -193,7 +198,6 @@ GitVersion.Configuration.IGitVersionConfiguration.VersionInBranchPattern.get -> GitVersion.Configuration.IGitVersionConfiguration.VersionInBranchRegex.get -> System.Text.RegularExpressions.Regex! GitVersion.Configuration.IGitVersionConfiguration.VersionStrategy.get -> GitVersion.VersionCalculation.VersionStrategies GitVersion.Configuration.IGitVersionConfiguration.Workflow.get -> string? -GitVersion.Configuration.IgnoreConfigurationExtensions GitVersion.Configuration.IIgnoreConfiguration GitVersion.Configuration.IIgnoreConfiguration.Before.get -> System.DateTimeOffset? GitVersion.Configuration.IIgnoreConfiguration.IsEmpty.get -> bool @@ -207,23 +211,12 @@ GitVersion.ConfigurationInfo.ConfigurationFile -> string? GitVersion.ConfigurationInfo.ConfigurationInfo() -> void GitVersion.ConfigurationInfo.OverrideConfiguration -> System.Collections.Generic.IReadOnlyDictionary? GitVersion.ConfigurationInfo.ShowConfiguration -> bool -GitVersion.Extensions.AssemblyFileVersioningScheme -GitVersion.Extensions.AssemblyFileVersioningScheme.Major = 3 -> GitVersion.Extensions.AssemblyFileVersioningScheme -GitVersion.Extensions.AssemblyFileVersioningScheme.MajorMinor = 2 -> GitVersion.Extensions.AssemblyFileVersioningScheme -GitVersion.Extensions.AssemblyFileVersioningScheme.MajorMinorPatch = 1 -> GitVersion.Extensions.AssemblyFileVersioningScheme -GitVersion.Extensions.AssemblyFileVersioningScheme.MajorMinorPatchTag = 0 -> GitVersion.Extensions.AssemblyFileVersioningScheme -GitVersion.Extensions.AssemblyFileVersioningScheme.None = 4 -> GitVersion.Extensions.AssemblyFileVersioningScheme -GitVersion.Extensions.AssemblyVersioningScheme -GitVersion.Extensions.AssemblyVersioningScheme.Major = 3 -> GitVersion.Extensions.AssemblyVersioningScheme -GitVersion.Extensions.AssemblyVersioningScheme.MajorMinor = 2 -> GitVersion.Extensions.AssemblyVersioningScheme -GitVersion.Extensions.AssemblyVersioningScheme.MajorMinorPatch = 1 -> GitVersion.Extensions.AssemblyVersioningScheme -GitVersion.Extensions.AssemblyVersioningScheme.MajorMinorPatchTag = 0 -> GitVersion.Extensions.AssemblyVersioningScheme -GitVersion.Extensions.AssemblyVersioningScheme.None = 4 -> GitVersion.Extensions.AssemblyVersioningScheme GitVersion.Extensions.AssemblyVersionsGeneratorExtensions GitVersion.Extensions.CommonExtensions GitVersion.Extensions.DictionaryExtensions GitVersion.Extensions.EnumerableExtensions GitVersion.Extensions.GitExtensions +GitVersion.Extensions.IncrementStrategyExtensions GitVersion.Extensions.ReadEmbeddedResourceExtensions GitVersion.Extensions.ServiceCollectionExtensions GitVersion.Extensions.StringExtensions @@ -408,7 +401,6 @@ GitVersion.IncrementStrategy.Major = 1 -> GitVersion.IncrementStrategy GitVersion.IncrementStrategy.Minor = 2 -> GitVersion.IncrementStrategy GitVersion.IncrementStrategy.None = 0 -> GitVersion.IncrementStrategy GitVersion.IncrementStrategy.Patch = 3 -> GitVersion.IncrementStrategy -GitVersion.IncrementStrategyExtensions GitVersion.LockedFileException GitVersion.LockedFileException.LockedFileException() -> void GitVersion.LockedFileException.LockedFileException(System.Exception! inner) -> void @@ -690,13 +682,10 @@ GitVersion.VersionCalculation.BaseVersionOperator.Label.get -> string? GitVersion.VersionCalculation.BaseVersionOperator.Label.init -> void GitVersion.VersionCalculation.BaseVersionOperator.Source.get -> string! GitVersion.VersionCalculation.BaseVersionOperator.Source.init -> void -GitVersion.VersionCalculation.Caching.GitVersionCache -GitVersion.VersionCalculation.Caching.GitVersionCache.GitVersionCache(GitVersion.IFileSystem! fileSystem, GitVersion.OutputVariables.IVersionVariableSerializer! serializer, GitVersion.Logging.ILog! log, GitVersion.IGitRepositoryInfo! repositoryInfo) -> void -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! versionVariables) -> void GitVersion.VersionCalculation.Caching.GitVersionCacheKey -GitVersion.VersionCalculation.Caching.GitVersionCacheKey.GitVersionCacheKey(string! value) -> void +GitVersion.VersionCalculation.Caching.GitVersionCacheKey.GitVersionCacheKey(string! Value) -> void GitVersion.VersionCalculation.Caching.GitVersionCacheKey.Value.get -> string! +GitVersion.VersionCalculation.Caching.GitVersionCacheKey.Value.init -> void GitVersion.VersionCalculation.Caching.IGitVersionCache 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! versionVariables) -> void @@ -765,18 +754,10 @@ GitVersion.WarningException.WarningException(string? message, System.Exception? GitVersion.WixInfo GitVersion.WixInfo.UpdateWixVersionFile -> bool GitVersion.WixInfo.WixInfo() -> void -abstract GitVersion.Agents.BuildAgentBase.EnvironmentVariable.get -> string! -abstract GitVersion.Agents.BuildAgentBase.GenerateSetParameterMessage(string! name, string? value) -> string![]! -abstract GitVersion.Agents.BuildAgentBase.GenerateSetVersionMessage(GitVersion.OutputVariables.GitVersionVariables! variables) -> string? const GitVersion.ReferenceName.LocalBranchPrefix = "refs/heads/" -> string! const GitVersion.ReferenceName.OriginPrefix = "origin/" -> string! const GitVersion.ReferenceName.RemoteTrackingBranchPrefix = "refs/remotes/" -> string! const GitVersion.ReferenceName.TagPrefix = "refs/tags/" -> string! -override GitVersion.Agents.LocalBuild.CanApplyToCurrentContext() -> bool -override GitVersion.Agents.LocalBuild.EnvironmentVariable.get -> string! -override GitVersion.Agents.LocalBuild.GenerateSetParameterMessage(string! name, string? value) -> string![]! -override GitVersion.Agents.LocalBuild.GenerateSetVersionMessage(GitVersion.OutputVariables.GitVersionVariables! variables) -> string? -override GitVersion.Agents.LocalBuild.IsDefault.get -> bool override GitVersion.BranchCommit.Equals(object? obj) -> bool override GitVersion.BranchCommit.GetHashCode() -> int override GitVersion.Helpers.LambdaKeyComparer.Compare(TSource? x, TSource? y) -> int @@ -797,25 +778,11 @@ override GitVersion.VersionCalculation.BaseVersion.ToString() -> string! override GitVersion.VersionCalculation.NextVersion.Equals(object? other) -> bool override GitVersion.VersionCalculation.NextVersion.GetHashCode() -> int override GitVersion.VersionCalculation.NextVersion.ToString() -> string! -readonly GitVersion.Agents.BuildAgentBase.Log -> GitVersion.Logging.ILog! static GitVersion.BranchCommit.operator !=(GitVersion.BranchCommit left, GitVersion.BranchCommit right) -> bool static GitVersion.BranchCommit.operator ==(GitVersion.BranchCommit left, GitVersion.BranchCommit right) -> bool static GitVersion.CommitExtensions.IsMergeCommit(this GitVersion.ICommit! source) -> bool -static GitVersion.Configuration.ConfigurationExtensions.FindGitDir(this string! path) -> (string! GitDirectory, string! WorkingTreeDirectory)? -static GitVersion.Configuration.ConfigurationExtensions.GetBranchConfiguration(this GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.IBranch! branch) -> GitVersion.Configuration.IBranchConfiguration! -static GitVersion.Configuration.ConfigurationExtensions.GetBranchConfiguration(this GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.ReferenceName! branchName) -> GitVersion.Configuration.IBranchConfiguration! -static GitVersion.Configuration.ConfigurationExtensions.GetBranchSpecificLabel(this GitVersion.Configuration.EffectiveConfiguration! configuration, GitVersion.ReferenceName! branchName, string? branchNameOverride) -> string? -static GitVersion.Configuration.ConfigurationExtensions.GetBranchSpecificLabel(this GitVersion.Configuration.EffectiveConfiguration! configuration, string? branchName, string? branchNameOverride) -> string? -static GitVersion.Configuration.ConfigurationExtensions.GetEffectiveBranchConfiguration(this GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.IBranch! branch) -> GitVersion.Configuration.EffectiveBranchConfiguration! -static GitVersion.Configuration.ConfigurationExtensions.GetEffectiveConfiguration(this GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.ReferenceName! branchName) -> GitVersion.Configuration.EffectiveConfiguration! -static GitVersion.Configuration.ConfigurationExtensions.GetFallbackBranchConfiguration(this GitVersion.Configuration.IGitVersionConfiguration! configuration) -> GitVersion.Configuration.IBranchConfiguration! -static GitVersion.Configuration.ConfigurationExtensions.IsReleaseBranch(this GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.IBranch! branch) -> bool -static GitVersion.Configuration.ConfigurationExtensions.IsReleaseBranch(this GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.ReferenceName! branchName) -> bool -static GitVersion.Configuration.ConfigurationExtensions.ToFilters(this GitVersion.Configuration.IIgnoreConfiguration! source) -> System.Collections.Generic.IEnumerable! -static GitVersion.Configuration.IgnoreConfigurationExtensions.Filter(this GitVersion.Configuration.IIgnoreConfiguration! ignore, System.Collections.Generic.IEnumerable! source) -> System.Collections.Generic.IEnumerable! -static GitVersion.Configuration.IgnoreConfigurationExtensions.Filter(this GitVersion.Configuration.IIgnoreConfiguration! ignore, System.Collections.Generic.IEnumerable! source) -> System.Collections.Generic.IEnumerable! -static GitVersion.Extensions.AssemblyVersionsGeneratorExtensions.GetAssemblyFileVersion(this GitVersion.SemanticVersion! sv, GitVersion.Extensions.AssemblyFileVersioningScheme scheme) -> string? -static GitVersion.Extensions.AssemblyVersionsGeneratorExtensions.GetAssemblyVersion(this GitVersion.SemanticVersion! sv, GitVersion.Extensions.AssemblyVersioningScheme scheme) -> string? +static GitVersion.Extensions.AssemblyVersionsGeneratorExtensions.GetAssemblyFileVersion(this GitVersion.SemanticVersion! sv, GitVersion.Configuration.AssemblyFileVersioningScheme scheme) -> string? +static GitVersion.Extensions.AssemblyVersionsGeneratorExtensions.GetAssemblyVersion(this GitVersion.SemanticVersion! sv, GitVersion.Configuration.AssemblyVersioningScheme scheme) -> string? static GitVersion.Extensions.CommonExtensions.NotNull(this T? value, string! name = "") -> T! static GitVersion.Extensions.CommonExtensions.NotNullOrEmpty(this string? value, string! name = "") -> string! static GitVersion.Extensions.CommonExtensions.NotNullOrWhitespace(this string? value, string! name = "") -> string! @@ -825,22 +792,16 @@ static GitVersion.Extensions.EnumerableExtensions.OnlyOrDefault(this System.C static GitVersion.Extensions.EnumerableExtensions.SingleOfType(this System.Collections.IEnumerable! source) -> T static GitVersion.Extensions.GitExtensions.CreateGitLogArgs(int? maxCommits) -> string! static GitVersion.Extensions.GitExtensions.DumpGraph(string! workingDirectory, System.Action? writer = null, int? maxCommits = null) -> void +static GitVersion.Extensions.IncrementStrategyExtensions.ToVersionField(this GitVersion.IncrementStrategy strategy) -> GitVersion.VersionField static GitVersion.Extensions.ReadEmbeddedResourceExtensions.ReadAsStringFromEmbeddedResource(this string! resourceName, System.Reflection.Assembly! assembly) -> string! static GitVersion.Extensions.ReadEmbeddedResourceExtensions.ReadAsStringFromEmbeddedResource(this string! resourceName) -> string! static GitVersion.Extensions.ServiceCollectionExtensions.AddModule(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection, GitVersion.IGitVersionModule! gitVersionModule) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static GitVersion.Extensions.ServiceCollectionExtensions.GetServiceForType(this System.IServiceProvider! serviceProvider) -> TService static GitVersion.Extensions.StringExtensions.AppendLineFormat(this System.Text.StringBuilder! stringBuilder, string! format, params object![]! args) -> void -static GitVersion.Extensions.StringExtensions.ArgumentRequiresValue(this string! argument, int argumentIndex) -> bool static GitVersion.Extensions.StringExtensions.IsEmpty(this string? value) -> bool static GitVersion.Extensions.StringExtensions.IsEquivalentTo(this string! self, string? other) -> bool -static GitVersion.Extensions.StringExtensions.IsFalse(this string? value) -> bool -static GitVersion.Extensions.StringExtensions.IsHelp(this string! singleArgument) -> bool static GitVersion.Extensions.StringExtensions.IsNullOrEmpty(this string? value) -> bool static GitVersion.Extensions.StringExtensions.IsNullOrWhiteSpace(this string? value) -> bool -static GitVersion.Extensions.StringExtensions.IsSwitch(this string? value, string! switchName) -> bool -static GitVersion.Extensions.StringExtensions.IsSwitchArgument(this string? value) -> bool -static GitVersion.Extensions.StringExtensions.IsTrue(this string? value) -> bool -static GitVersion.Extensions.StringExtensions.IsValidPath(this string? path) -> bool static GitVersion.Extensions.StringExtensions.RegexReplace(this string! input, string! pattern, string! replace, System.Text.RegularExpressions.RegexOptions options = System.Text.RegularExpressions.RegexOptions.None) -> string! static GitVersion.Extensions.StringExtensions.WithPrefixIfNotNullOrEmpty(this string! value, string! prefix) -> string! static GitVersion.Helpers.Disposable.Create(System.Action! disposer) -> System.IDisposable! @@ -848,7 +809,6 @@ static GitVersion.Helpers.Disposable.Create(T value, System.Action! disposer) static GitVersion.Helpers.EncodingHelper.DetectEncoding(System.Collections.Generic.IList! bytes) -> System.Text.Encoding? static GitVersion.Helpers.EncodingHelper.DetectEncoding(string? filename) -> System.Text.Encoding? static GitVersion.Helpers.ServiceMessageEscapeHelper.EscapeValue(string? value) -> string? -static GitVersion.IncrementStrategyExtensions.ToVersionField(this GitVersion.IncrementStrategy strategy) -> GitVersion.VersionField static GitVersion.Logging.LogExtensions.Debug(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogAction! logAction) -> void static GitVersion.Logging.LogExtensions.Debug(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogAction! logAction) -> void static GitVersion.Logging.LogExtensions.Debug(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, string! format, params object![]! args) -> void @@ -912,10 +872,4 @@ static readonly GitVersion.BranchCommit.Empty -> GitVersion.BranchCommit static readonly GitVersion.Helpers.Disposable.Empty -> System.IDisposable! static readonly GitVersion.SemanticVersion.Empty -> GitVersion.SemanticVersion! static readonly GitVersion.SemanticVersionBuildMetaData.Empty -> GitVersion.SemanticVersionBuildMetaData! -static readonly GitVersion.SemanticVersionPreReleaseTag.Empty -> GitVersion.SemanticVersionPreReleaseTag! -virtual GitVersion.Agents.BuildAgentBase.CanApplyToCurrentContext() -> bool -virtual GitVersion.Agents.BuildAgentBase.GetCurrentBranch(bool usingDynamicRepos) -> string? -virtual GitVersion.Agents.BuildAgentBase.IsDefault.get -> bool -virtual GitVersion.Agents.BuildAgentBase.PreventFetch() -> bool -virtual GitVersion.Agents.BuildAgentBase.ShouldCleanUpRemotes() -> bool -virtual GitVersion.Agents.BuildAgentBase.WriteIntegration(System.Action! writer, GitVersion.OutputVariables.GitVersionVariables! variables, bool updateBuildNumber = true) -> void +static readonly GitVersion.SemanticVersionPreReleaseTag.Empty -> GitVersion.SemanticVersionPreReleaseTag! \ No newline at end of file diff --git a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs index 952b8007f1..f758135734 100644 --- a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs +++ b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs @@ -5,7 +5,7 @@ namespace GitVersion.VersionCalculation.Caching; -public class GitVersionCache(IFileSystem fileSystem, IVersionVariableSerializer serializer, ILog log, IGitRepositoryInfo repositoryInfo) +internal class GitVersionCache(IFileSystem fileSystem, IVersionVariableSerializer serializer, ILog log, IGitRepositoryInfo repositoryInfo) : IGitVersionCache { private readonly IFileSystem fileSystem = fileSystem.NotNull(); diff --git a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKey.cs b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKey.cs index b7bcd5a4e1..baf9e3e090 100644 --- a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKey.cs +++ b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKey.cs @@ -1,16 +1,3 @@ -using GitVersion.Extensions; - namespace GitVersion.VersionCalculation.Caching; -public class GitVersionCacheKey -{ - public GitVersionCacheKey(string value) - { - if (value.IsNullOrEmpty()) - throw new ArgumentNullException(nameof(value)); - - Value = value; - } - - public string Value { get; } -} +public record GitVersionCacheKey(string Value); diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs index 9a74aa10ea..af8b2f8ff6 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs @@ -1,4 +1,5 @@ using GitVersion.Configuration; +using GitVersion.Extensions; namespace GitVersion.VersionCalculation.TrunkBased.Trunk; diff --git a/src/GitVersion.Output.Tests/Output/AssemblyFileVersionTests.cs b/src/GitVersion.Output.Tests/Output/AssemblyFileVersionTests.cs index 377477e6b8..d6f50b26ee 100644 --- a/src/GitVersion.Output.Tests/Output/AssemblyFileVersionTests.cs +++ b/src/GitVersion.Output.Tests/Output/AssemblyFileVersionTests.cs @@ -1,3 +1,4 @@ +using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; using GitVersion.Extensions; diff --git a/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs b/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs index 1d576d0dd8..7082e33020 100644 --- a/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs +++ b/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs @@ -1,6 +1,5 @@ using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; -using GitVersion.Extensions; using GitVersion.Helpers; using GitVersion.Logging; using GitVersion.Output.AssemblyInfo; diff --git a/src/GitVersion.Output.Tests/Output/ProjectFileUpdaterTests.cs b/src/GitVersion.Output.Tests/Output/ProjectFileUpdaterTests.cs index 9a3d6b5790..90f92f91c4 100644 --- a/src/GitVersion.Output.Tests/Output/ProjectFileUpdaterTests.cs +++ b/src/GitVersion.Output.Tests/Output/ProjectFileUpdaterTests.cs @@ -1,7 +1,6 @@ using System.Xml.Linq; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; -using GitVersion.Extensions; using GitVersion.Helpers; using GitVersion.Logging; using GitVersion.Output.AssemblyInfo; diff --git a/src/GitVersion.Output/GitVersion.Output.csproj b/src/GitVersion.Output/GitVersion.Output.csproj index da36e3d835..9de104e061 100644 --- a/src/GitVersion.Output/GitVersion.Output.csproj +++ b/src/GitVersion.Output/GitVersion.Output.csproj @@ -11,6 +11,9 @@ + + + diff --git a/src/GitVersion.Output/PublicAPI.Unshipped.txt b/src/GitVersion.Output/PublicAPI.Unshipped.txt index 946f93a466..e2d0bb6407 100644 --- a/src/GitVersion.Output/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Output/PublicAPI.Unshipped.txt @@ -6,68 +6,4 @@ GitVersion.IGitVersionOutputTool.UpdateAssemblyInfo(GitVersion.OutputVariables.G GitVersion.IGitVersionOutputTool.UpdateWixVersionFile(GitVersion.OutputVariables.GitVersionVariables! variables) -> void GitVersion.Output.GitVersionOutputModule GitVersion.Output.GitVersionOutputModule.GitVersionOutputModule() -> void -GitVersion.Output.GitVersionOutputModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void -GitVersion.OutputVariables.VersionVariableSerializer -GitVersion.OutputVariables.VersionVariableSerializer.FromFile(string! filePath) -> GitVersion.OutputVariables.GitVersionVariables! -GitVersion.OutputVariables.VersionVariableSerializer.FromJson(string! json) -> GitVersion.OutputVariables.GitVersionVariables! -GitVersion.OutputVariables.VersionVariableSerializer.ToFile(GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables, string! filePath) -> void -GitVersion.OutputVariables.VersionVariableSerializer.ToJson(GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables) -> string! -GitVersion.OutputVariables.VersionVariableSerializer.VersionVariableSerializer(GitVersion.IFileSystem! fileSystem) -> void -GitVersion.OutputVariables.VersionVariablesJsonModel -GitVersion.OutputVariables.VersionVariablesJsonModel.AssemblySemFileVer.get -> string? -GitVersion.OutputVariables.VersionVariablesJsonModel.AssemblySemFileVer.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.AssemblySemVer.get -> string? -GitVersion.OutputVariables.VersionVariablesJsonModel.AssemblySemVer.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.BranchName.get -> string? -GitVersion.OutputVariables.VersionVariablesJsonModel.BranchName.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.BuildMetaData.get -> int? -GitVersion.OutputVariables.VersionVariablesJsonModel.BuildMetaData.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.CommitDate.get -> string? -GitVersion.OutputVariables.VersionVariablesJsonModel.CommitDate.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.CommitsSinceVersionSource.get -> int? -GitVersion.OutputVariables.VersionVariablesJsonModel.CommitsSinceVersionSource.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.EscapedBranchName.get -> string? -GitVersion.OutputVariables.VersionVariablesJsonModel.EscapedBranchName.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.FullBuildMetaData.get -> string? -GitVersion.OutputVariables.VersionVariablesJsonModel.FullBuildMetaData.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.FullSemVer.get -> string? -GitVersion.OutputVariables.VersionVariablesJsonModel.FullSemVer.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.InformationalVersion.get -> string? -GitVersion.OutputVariables.VersionVariablesJsonModel.InformationalVersion.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.Major.get -> int? -GitVersion.OutputVariables.VersionVariablesJsonModel.Major.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.MajorMinorPatch.get -> string? -GitVersion.OutputVariables.VersionVariablesJsonModel.MajorMinorPatch.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.Minor.get -> int? -GitVersion.OutputVariables.VersionVariablesJsonModel.Minor.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.Patch.get -> int? -GitVersion.OutputVariables.VersionVariablesJsonModel.Patch.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseLabel.get -> string? -GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseLabel.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseLabelWithDash.get -> string? -GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseLabelWithDash.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseNumber.get -> int? -GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseNumber.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseTag.get -> string? -GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseTag.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseTagWithDash.get -> string? -GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseTagWithDash.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.SemVer.get -> string? -GitVersion.OutputVariables.VersionVariablesJsonModel.SemVer.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.Sha.get -> string? -GitVersion.OutputVariables.VersionVariablesJsonModel.Sha.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.ShortSha.get -> string? -GitVersion.OutputVariables.VersionVariablesJsonModel.ShortSha.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.UncommittedChanges.get -> int? -GitVersion.OutputVariables.VersionVariablesJsonModel.UncommittedChanges.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.VersionSourceSha.get -> string? -GitVersion.OutputVariables.VersionVariablesJsonModel.VersionSourceSha.set -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.VersionVariablesJsonModel() -> void -GitVersion.OutputVariables.VersionVariablesJsonModel.WeightedPreReleaseNumber.get -> int? -GitVersion.OutputVariables.VersionVariablesJsonModel.WeightedPreReleaseNumber.set -> void -GitVersion.OutputVariables.VersionVariablesJsonStringConverter -GitVersion.OutputVariables.VersionVariablesJsonStringConverter.VersionVariablesJsonStringConverter() -> void -override GitVersion.OutputVariables.VersionVariablesJsonStringConverter.CanConvert(System.Type! typeToConvert) -> bool -override GitVersion.OutputVariables.VersionVariablesJsonStringConverter.HandleNull.get -> bool -override GitVersion.OutputVariables.VersionVariablesJsonStringConverter.Read(ref System.Text.Json.Utf8JsonReader reader, System.Type! typeToConvert, System.Text.Json.JsonSerializerOptions! options) -> string! -override GitVersion.OutputVariables.VersionVariablesJsonStringConverter.Write(System.Text.Json.Utf8JsonWriter! writer, string? value, System.Text.Json.JsonSerializerOptions! options) -> void +GitVersion.Output.GitVersionOutputModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void \ No newline at end of file diff --git a/src/GitVersion.Output/Serializer/VersionVariableSerializer.cs b/src/GitVersion.Output/Serializer/VersionVariableSerializer.cs index 1ffac9e567..b6243ea2aa 100644 --- a/src/GitVersion.Output/Serializer/VersionVariableSerializer.cs +++ b/src/GitVersion.Output/Serializer/VersionVariableSerializer.cs @@ -4,7 +4,7 @@ namespace GitVersion.OutputVariables; -public class VersionVariableSerializer(IFileSystem fileSystem) : IVersionVariableSerializer +internal class VersionVariableSerializer(IFileSystem fileSystem) : IVersionVariableSerializer { public GitVersionVariables FromJson(string json) { diff --git a/src/GitVersion.Output/Serializer/VersionVariablesJsonModel.cs b/src/GitVersion.Output/Serializer/VersionVariablesJsonModel.cs index b545391ffc..2aaec108be 100644 --- a/src/GitVersion.Output/Serializer/VersionVariablesJsonModel.cs +++ b/src/GitVersion.Output/Serializer/VersionVariablesJsonModel.cs @@ -2,7 +2,7 @@ namespace GitVersion.OutputVariables; -public class VersionVariablesJsonModel +internal class VersionVariablesJsonModel { [JsonPropertyDescription("Suitable for .NET AssemblyFileVersion. Defaults to Major.Minor.Patch.0.")] public string? AssemblySemFileVer { get; set; } diff --git a/src/GitVersion.Output/Serializer/VersionVariablesJsonStringConverter.cs b/src/GitVersion.Output/Serializer/VersionVariablesJsonStringConverter.cs index a5d7c2844a..236853f11d 100644 --- a/src/GitVersion.Output/Serializer/VersionVariablesJsonStringConverter.cs +++ b/src/GitVersion.Output/Serializer/VersionVariablesJsonStringConverter.cs @@ -3,7 +3,7 @@ namespace GitVersion.OutputVariables; -public class VersionVariablesJsonStringConverter : JsonConverter +internal class VersionVariablesJsonStringConverter : JsonConverter { public override bool CanConvert(Type typeToConvert) => typeToConvert == typeof(string); From de9f2cf3d69fc702acb2767409e6c0248b7a051c Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 21 Mar 2024 13:46:46 +0100 Subject: [PATCH 052/544] move git classes under GitVersion.Git namespace --- .../CalculateCommand.cs | 1 + new-cli/GitVersion.Cli/Program.cs | 1 + .../Git/GitRepository.extended.cs | 2 +- .../LibGit2SharpCoreModule.cs | 2 +- .../GitVersion.Core.Tester/GitVersionApp.cs | 1 + new-cli/GitVersion.Core.Tester/Program.cs | 1 + .../PullRequestInBuildAgentTest.cs | 1 + .../ArgumentParserExtensions.cs | 2 +- src/GitVersion.App/Arguments.cs | 1 + src/GitVersion.App/GitVersionExecutor.cs | 1 + .../ConfigurationExtensionsTests.cs | 1 + .../GitVersionCacheKeyFactory.cs | 1 + .../Core/GitVersionExecutorTests.cs | 1 + .../Core/RepositoryExtensionsTests.cs | 1 + .../Core/RepositoryStoreTests.cs | 1 + .../Extensions/GitToolsTestingExtensions.cs | 1 + .../Helpers/GitVersionContextBuilder.cs | 1 + src/GitVersion.Core.Tests/Helpers/TestBase.cs | 1 + .../IntegrationTests/HotfixBranchScenarios.cs | 4 +- ...EffectiveBranchConfigurationFinderTests.cs | 1 + .../MergeMessageBaseVersionStrategyTests.cs | 1 + ...ionInBranchNameBaseVersionStrategyTests.cs | 1 + .../VariableProviderTests.cs | 1 + .../VersionCalculation/VersionSourceTests.cs | 1 + .../EffectiveBranchConfiguration.cs | 1 + .../IgnoreConfigurationExtensions.cs | 1 + .../Core/Abstractions/IGitPreparer.cs | 2 + .../Core/Abstractions/IRepositoryStore.cs | 1 + src/GitVersion.Core/Core/BranchRepository.cs | 1 + .../Core/BranchesContainingCommitFinder.cs | 1 + src/GitVersion.Core/Core/GitPreparer.cs | 1 + src/GitVersion.Core/Core/IBranchRepository.cs | 1 + .../Core/ITaggedSemanticVersionRepository.cs | 1 + .../Core/MainlineBranchFinder.cs | 1 + src/GitVersion.Core/Core/MergeBaseFinder.cs | 1 + src/GitVersion.Core/Core/MergeCommitFinder.cs | 1 + src/GitVersion.Core/Core/RepositoryStore.cs | 1 + .../Core/SourceBranchFinder.cs | 1 + .../Core/TaggedSemanticVersionRepository.cs | 1 + .../Extensions/ConfigurationExtensions.cs | 1 + src/GitVersion.Core/Git/AuthenticationInfo.cs | 2 +- src/GitVersion.Core/Git/BranchCommit.cs | 2 +- src/GitVersion.Core/Git/CommitExtensions.cs | 2 +- src/GitVersion.Core/Git/CommitFilter.cs | 2 +- src/GitVersion.Core/Git/IBranch.cs | 2 +- src/GitVersion.Core/Git/IBranchCollection.cs | 2 +- src/GitVersion.Core/Git/ICommit.cs | 2 +- src/GitVersion.Core/Git/ICommitCollection.cs | 2 +- src/GitVersion.Core/Git/IGitObject.cs | 2 +- src/GitVersion.Core/Git/IGitRepository.cs | 2 +- src/GitVersion.Core/Git/IGitRepositoryInfo.cs | 2 +- .../Git/IMutatingGitRepository.cs | 2 +- src/GitVersion.Core/Git/INamedReference.cs | 2 +- src/GitVersion.Core/Git/IObjectId.cs | 2 +- src/GitVersion.Core/Git/IRefSpec.cs | 2 +- src/GitVersion.Core/Git/IRefSpecCollection.cs | 2 +- src/GitVersion.Core/Git/IReference.cs | 2 +- .../Git/IReferenceCollection.cs | 2 +- src/GitVersion.Core/Git/IRemote.cs | 2 +- src/GitVersion.Core/Git/IRemoteCollection.cs | 2 +- src/GitVersion.Core/Git/ITag.cs | 2 +- src/GitVersion.Core/Git/ITagCollection.cs | 2 +- src/GitVersion.Core/Git/RefSpecDirection.cs | 2 +- src/GitVersion.Core/Git/ReferenceName.cs | 2 +- src/GitVersion.Core/GitVersionContext.cs | 1 + src/GitVersion.Core/MergeMessage.cs | 1 + .../Options/GitVersionOptions.cs | 1 + src/GitVersion.Core/PublicAPI.Unshipped.txt | 356 +++++++++--------- .../Abstractions/IDeploymentModeCalculator.cs | 2 + .../IEffectiveBranchConfigurationFinder.cs | 1 + .../Abstractions/IIncrementStrategyFinder.cs | 1 + .../Caching/GitVersionCache.cs | 1 + .../EffectiveBranchConfigurationFinder.cs | 1 + .../IncrementStrategyFinder.cs | 1 + .../SemanticVersionWithTag.cs | 2 + .../TrunkBased/TrunkBasedCommit.cs | 1 + .../TrunkBased/TrunkBasedContext.cs | 2 + .../TrunkBased/TrunkBasedIteration.cs | 1 + .../ContinuousDeliveryVersionCalculator.cs | 1 + .../ContinuousDeploymentVersionCalculator.cs | 1 + .../ManualDeploymentVersionCalculator.cs | 1 + .../NextVersionCalculator.cs | 1 + .../VersionCalculatorBase.cs | 1 + .../VersionSearchStrategies/BaseVersion.cs | 1 + .../BaseVersionOperand.cs | 1 + .../BaseVersionOperator.cs | 2 + .../IBaseVersionIncrement.cs | 2 + .../TrackReleaseBranchesVersionStrategy.cs | 1 + .../TrunkBasedVersionStrategy.cs | 1 + .../VersionInBranchNameVersionStrategy.cs | 1 + src/GitVersion.LibGit2Sharp/Git/Branch.cs | 2 +- .../Git/BranchCollection.cs | 2 +- src/GitVersion.LibGit2Sharp/Git/Commit.cs | 6 +- .../Git/CommitCollection.cs | 2 +- src/GitVersion.LibGit2Sharp/Git/GitObject.cs | 2 +- .../Git/GitRepository.cs | 2 +- .../Git/GitRepository.extended.cs | 2 +- .../Git/GitRepositoryInfo.cs | 2 +- src/GitVersion.LibGit2Sharp/Git/ObjectId.cs | 2 +- src/GitVersion.LibGit2Sharp/Git/RefSpec.cs | 2 +- .../Git/RefSpecCollection.cs | 2 +- src/GitVersion.LibGit2Sharp/Git/Reference.cs | 2 +- .../Git/ReferenceCollection.cs | 2 +- src/GitVersion.LibGit2Sharp/Git/Remote.cs | 2 +- .../Git/RemoteCollection.cs | 2 +- .../Git/RepositoryExtensions.cs | 2 +- src/GitVersion.LibGit2Sharp/Git/Tag.cs | 8 +- .../Git/TagCollection.cs | 2 +- .../GitVersionLibGit2SharpModule.cs | 1 + 109 files changed, 298 insertions(+), 230 deletions(-) diff --git a/new-cli/GitVersion.Calculation/CalculateCommand.cs b/new-cli/GitVersion.Calculation/CalculateCommand.cs index 33299f91e5..56dae32c90 100644 --- a/new-cli/GitVersion.Calculation/CalculateCommand.cs +++ b/new-cli/GitVersion.Calculation/CalculateCommand.cs @@ -1,4 +1,5 @@ using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Infrastructure; namespace GitVersion.Commands; diff --git a/new-cli/GitVersion.Cli/Program.cs b/new-cli/GitVersion.Cli/Program.cs index ef5c7de7d4..46cbdc1ad8 100644 --- a/new-cli/GitVersion.Cli/Program.cs +++ b/new-cli/GitVersion.Cli/Program.cs @@ -1,6 +1,7 @@ using GitVersion; using GitVersion.Extensions; using GitVersion.Generated; +using GitVersion.Git; using GitVersion.Infrastructure; var modules = new IGitVersionModule[] diff --git a/new-cli/GitVersion.Core.Libgit2Sharp/Git/GitRepository.extended.cs b/new-cli/GitVersion.Core.Libgit2Sharp/Git/GitRepository.extended.cs index b97c010aab..d54427f263 100644 --- a/new-cli/GitVersion.Core.Libgit2Sharp/Git/GitRepository.extended.cs +++ b/new-cli/GitVersion.Core.Libgit2Sharp/Git/GitRepository.extended.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; internal sealed partial class GitRepository : IGitRepository { diff --git a/new-cli/GitVersion.Core.Libgit2Sharp/LibGit2SharpCoreModule.cs b/new-cli/GitVersion.Core.Libgit2Sharp/LibGit2SharpCoreModule.cs index 2879233216..bc06d9bd32 100644 --- a/new-cli/GitVersion.Core.Libgit2Sharp/LibGit2SharpCoreModule.cs +++ b/new-cli/GitVersion.Core.Libgit2Sharp/LibGit2SharpCoreModule.cs @@ -1,6 +1,6 @@ using GitVersion.Infrastructure; -namespace GitVersion; +namespace GitVersion.Git; public class LibGit2SharpCoreModule : IGitVersionModule { diff --git a/new-cli/GitVersion.Core.Tester/GitVersionApp.cs b/new-cli/GitVersion.Core.Tester/GitVersionApp.cs index 68bd82d371..83e4a7a31a 100644 --- a/new-cli/GitVersion.Core.Tester/GitVersionApp.cs +++ b/new-cli/GitVersion.Core.Tester/GitVersionApp.cs @@ -1,3 +1,4 @@ +using GitVersion.Git; using GitVersion.Infrastructure; namespace GitVersion; diff --git a/new-cli/GitVersion.Core.Tester/Program.cs b/new-cli/GitVersion.Core.Tester/Program.cs index 4c1ae3e56e..2325f7d0d2 100644 --- a/new-cli/GitVersion.Core.Tester/Program.cs +++ b/new-cli/GitVersion.Core.Tester/Program.cs @@ -1,5 +1,6 @@ using GitVersion; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Infrastructure; var assemblies = new IGitVersionModule[] diff --git a/src/GitVersion.App.Tests/PullRequestInBuildAgentTest.cs b/src/GitVersion.App.Tests/PullRequestInBuildAgentTest.cs index 38a3cc95d6..9fb5e7db11 100644 --- a/src/GitVersion.App.Tests/PullRequestInBuildAgentTest.cs +++ b/src/GitVersion.App.Tests/PullRequestInBuildAgentTest.cs @@ -1,6 +1,7 @@ using GitVersion.Agents; using GitVersion.Core.Tests.Helpers; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Helpers; using GitVersion.Output; using LibGit2Sharp; diff --git a/src/GitVersion.App/ArgumentParserExtensions.cs b/src/GitVersion.App/ArgumentParserExtensions.cs index 53c7f5387a..35bc3ef10d 100644 --- a/src/GitVersion.App/ArgumentParserExtensions.cs +++ b/src/GitVersion.App/ArgumentParserExtensions.cs @@ -1,4 +1,4 @@ -using System.Text.RegularExpressions; +using System.Text.RegularExpressions; using GitVersion.Helpers; namespace GitVersion; diff --git a/src/GitVersion.App/Arguments.cs b/src/GitVersion.App/Arguments.cs index 03e7714b9d..8f5f977a67 100644 --- a/src/GitVersion.App/Arguments.cs +++ b/src/GitVersion.App/Arguments.cs @@ -1,3 +1,4 @@ +using GitVersion.Git; using GitVersion.Logging; namespace GitVersion; diff --git a/src/GitVersion.App/GitVersionExecutor.cs b/src/GitVersion.App/GitVersionExecutor.cs index 0ff21108a9..192c35801b 100644 --- a/src/GitVersion.App/GitVersionExecutor.cs +++ b/src/GitVersion.App/GitVersionExecutor.cs @@ -1,5 +1,6 @@ using GitVersion.Configuration; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Helpers; using GitVersion.Logging; diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationExtensionsTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationExtensionsTests.cs index ff54caa0c2..4edbae0b4e 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationExtensionsTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationExtensionsTests.cs @@ -1,5 +1,6 @@ using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; +using GitVersion.Git; namespace GitVersion.Core.Tests.Configuration; diff --git a/src/GitVersion.Configuration/GitVersionCacheKeyFactory.cs b/src/GitVersion.Configuration/GitVersionCacheKeyFactory.cs index 4276f1acd3..4bce1c1c2f 100644 --- a/src/GitVersion.Configuration/GitVersionCacheKeyFactory.cs +++ b/src/GitVersion.Configuration/GitVersionCacheKeyFactory.cs @@ -1,6 +1,7 @@ using System.Security.Cryptography; using GitVersion.Configuration; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Helpers; using GitVersion.Logging; using Microsoft.Extensions.Options; diff --git a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs index 07235e287e..043ed1c9ea 100644 --- a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs +++ b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs @@ -1,6 +1,7 @@ using GitVersion.Agents; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; +using GitVersion.Git; using GitVersion.Helpers; using GitVersion.Logging; using GitVersion.VersionCalculation.Caching; diff --git a/src/GitVersion.Core.Tests/Core/RepositoryExtensionsTests.cs b/src/GitVersion.Core.Tests/Core/RepositoryExtensionsTests.cs index ee86c14f5a..47258223f8 100644 --- a/src/GitVersion.Core.Tests/Core/RepositoryExtensionsTests.cs +++ b/src/GitVersion.Core.Tests/Core/RepositoryExtensionsTests.cs @@ -1,4 +1,5 @@ using GitVersion.Core.Tests.Helpers; +using GitVersion.Git; namespace GitVersion.Core.Tests; diff --git a/src/GitVersion.Core.Tests/Core/RepositoryStoreTests.cs b/src/GitVersion.Core.Tests/Core/RepositoryStoreTests.cs index 00ed164fc6..e795732a57 100644 --- a/src/GitVersion.Core.Tests/Core/RepositoryStoreTests.cs +++ b/src/GitVersion.Core.Tests/Core/RepositoryStoreTests.cs @@ -1,6 +1,7 @@ using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; using GitVersion.Core.Tests.IntegrationTests; +using GitVersion.Git; using GitVersion.Logging; using Microsoft.Extensions.DependencyInjection; diff --git a/src/GitVersion.Core.Tests/Extensions/GitToolsTestingExtensions.cs b/src/GitVersion.Core.Tests/Extensions/GitToolsTestingExtensions.cs index 6c80ddcc5c..947d4e6fc4 100644 --- a/src/GitVersion.Core.Tests/Extensions/GitToolsTestingExtensions.cs +++ b/src/GitVersion.Core.Tests/Extensions/GitToolsTestingExtensions.cs @@ -2,6 +2,7 @@ using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Logging; using GitVersion.OutputVariables; using GitVersion.VersionCalculation; diff --git a/src/GitVersion.Core.Tests/Helpers/GitVersionContextBuilder.cs b/src/GitVersion.Core.Tests/Helpers/GitVersionContextBuilder.cs index abce552ffd..eb76416658 100644 --- a/src/GitVersion.Core.Tests/Helpers/GitVersionContextBuilder.cs +++ b/src/GitVersion.Core.Tests/Helpers/GitVersionContextBuilder.cs @@ -1,5 +1,6 @@ using GitVersion.Core.Tests.Helpers; using GitVersion.Extensions; +using GitVersion.Git; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; diff --git a/src/GitVersion.Core.Tests/Helpers/TestBase.cs b/src/GitVersion.Core.Tests/Helpers/TestBase.cs index ff7d695671..cd25bd8a27 100644 --- a/src/GitVersion.Core.Tests/Helpers/TestBase.cs +++ b/src/GitVersion.Core.Tests/Helpers/TestBase.cs @@ -1,4 +1,5 @@ using GitVersion.Extensions; +using GitVersion.Git; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; diff --git a/src/GitVersion.Core.Tests/IntegrationTests/HotfixBranchScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/HotfixBranchScenarios.cs index 47ad7e13f8..2369e1c58b 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/HotfixBranchScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/HotfixBranchScenarios.cs @@ -53,7 +53,7 @@ public void CanTakeVersionFromHotfixesBranch() }); // Merge hotfix branch to support var branch = fixture.Repository.CreateBranch( - "support-1.1", (LibGit2Sharp.Commit)fixture.Repository.Tags.Single(t => t.FriendlyName == "1.1.0").Target + "support-1.1", (Commit)fixture.Repository.Tags.Single(t => t.FriendlyName == "1.1.0").Target ); Commands.Checkout(fixture.Repository, branch); fixture.AssertFullSemver("1.1.0"); @@ -80,7 +80,7 @@ public void PatchOlderReleaseExample() // Merge hotfix branch to support fixture.Checkout(MainBranch); var tag = fixture.Repository.Tags.Single(t => t.FriendlyName == "1.1.0"); - fixture.Repository.CreateBranch("support-1.1", (LibGit2Sharp.Commit)tag.Target); + fixture.Repository.CreateBranch("support-1.1", (Commit)tag.Target); fixture.Checkout("support-1.1"); fixture.AssertFullSemver("1.1.0"); diff --git a/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs index 15d63aa968..1e66d278ca 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs @@ -1,5 +1,6 @@ using GitVersion.Common; using GitVersion.Configuration; +using GitVersion.Git; using GitVersion.Logging; using GitVersion.VersionCalculation; diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs index 6dac15a836..f1c09f2f30 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs @@ -1,6 +1,7 @@ using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.VersionCalculation; using Microsoft.Extensions.DependencyInjection; diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/VersionInBranchNameBaseVersionStrategyTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/VersionInBranchNameBaseVersionStrategyTests.cs index e006162870..86aba6e7d3 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/VersionInBranchNameBaseVersionStrategyTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/VersionInBranchNameBaseVersionStrategyTests.cs @@ -1,6 +1,7 @@ using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.VersionCalculation; namespace GitVersion.Core.Tests.VersionCalculation.Strategies; diff --git a/src/GitVersion.Core.Tests/VersionCalculation/VariableProviderTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/VariableProviderTests.cs index aa9fe03aa4..76e33af068 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/VariableProviderTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/VariableProviderTests.cs @@ -1,5 +1,6 @@ using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; +using GitVersion.Git; using GitVersion.Logging; using GitVersion.VersionCalculation; using Microsoft.Extensions.DependencyInjection; diff --git a/src/GitVersion.Core.Tests/VersionCalculation/VersionSourceTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/VersionSourceTests.cs index 3bb50fbf16..f4618e6d40 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/VersionSourceTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/VersionSourceTests.cs @@ -1,4 +1,5 @@ using GitVersion.Core.Tests.Helpers; +using GitVersion.Git; using GitVersion.VersionCalculation; using Microsoft.Extensions.DependencyInjection; diff --git a/src/GitVersion.Core/Configuration/EffectiveBranchConfiguration.cs b/src/GitVersion.Core/Configuration/EffectiveBranchConfiguration.cs index f9e1ababce..1ad5c523b1 100644 --- a/src/GitVersion.Core/Configuration/EffectiveBranchConfiguration.cs +++ b/src/GitVersion.Core/Configuration/EffectiveBranchConfiguration.cs @@ -1,4 +1,5 @@ using GitVersion.Extensions; +using GitVersion.Git; namespace GitVersion.Configuration; diff --git a/src/GitVersion.Core/Configuration/IgnoreConfigurationExtensions.cs b/src/GitVersion.Core/Configuration/IgnoreConfigurationExtensions.cs index 328d038759..d99c33db76 100644 --- a/src/GitVersion.Core/Configuration/IgnoreConfigurationExtensions.cs +++ b/src/GitVersion.Core/Configuration/IgnoreConfigurationExtensions.cs @@ -1,4 +1,5 @@ using GitVersion.Extensions; +using GitVersion.Git; namespace GitVersion.Configuration; diff --git a/src/GitVersion.Core/Core/Abstractions/IGitPreparer.cs b/src/GitVersion.Core/Core/Abstractions/IGitPreparer.cs index 8fede694f1..8e47f43328 100644 --- a/src/GitVersion.Core/Core/Abstractions/IGitPreparer.cs +++ b/src/GitVersion.Core/Core/Abstractions/IGitPreparer.cs @@ -1,3 +1,5 @@ +using GitVersion.Git; + namespace GitVersion; public interface IGitPreparer diff --git a/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs b/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs index d8f71c94e5..58571cc06d 100644 --- a/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs +++ b/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs @@ -1,4 +1,5 @@ using GitVersion.Configuration; +using GitVersion.Git; namespace GitVersion.Common; diff --git a/src/GitVersion.Core/Core/BranchRepository.cs b/src/GitVersion.Core/Core/BranchRepository.cs index 1e7223198a..3a3832e5ff 100644 --- a/src/GitVersion.Core/Core/BranchRepository.cs +++ b/src/GitVersion.Core/Core/BranchRepository.cs @@ -1,5 +1,6 @@ using GitVersion.Configuration; using GitVersion.Extensions; +using GitVersion.Git; namespace GitVersion.Core; diff --git a/src/GitVersion.Core/Core/BranchesContainingCommitFinder.cs b/src/GitVersion.Core/Core/BranchesContainingCommitFinder.cs index e12aafe18b..4ce67ba6de 100644 --- a/src/GitVersion.Core/Core/BranchesContainingCommitFinder.cs +++ b/src/GitVersion.Core/Core/BranchesContainingCommitFinder.cs @@ -1,4 +1,5 @@ using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Logging; namespace GitVersion; diff --git a/src/GitVersion.Core/Core/GitPreparer.cs b/src/GitVersion.Core/Core/GitPreparer.cs index ec583dcbf3..c761c1518b 100644 --- a/src/GitVersion.Core/Core/GitPreparer.cs +++ b/src/GitVersion.Core/Core/GitPreparer.cs @@ -1,6 +1,7 @@ using GitVersion.Agents; using GitVersion.Configuration; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Helpers; using GitVersion.Logging; using Microsoft.Extensions.Options; diff --git a/src/GitVersion.Core/Core/IBranchRepository.cs b/src/GitVersion.Core/Core/IBranchRepository.cs index 95887c6f37..a58e603988 100644 --- a/src/GitVersion.Core/Core/IBranchRepository.cs +++ b/src/GitVersion.Core/Core/IBranchRepository.cs @@ -1,4 +1,5 @@ using GitVersion.Configuration; +using GitVersion.Git; namespace GitVersion.Core; diff --git a/src/GitVersion.Core/Core/ITaggedSemanticVersionRepository.cs b/src/GitVersion.Core/Core/ITaggedSemanticVersionRepository.cs index 6ab34a5835..a93a6f42d5 100644 --- a/src/GitVersion.Core/Core/ITaggedSemanticVersionRepository.cs +++ b/src/GitVersion.Core/Core/ITaggedSemanticVersionRepository.cs @@ -1,4 +1,5 @@ using GitVersion.Configuration; +using GitVersion.Git; namespace GitVersion.Core; diff --git a/src/GitVersion.Core/Core/MainlineBranchFinder.cs b/src/GitVersion.Core/Core/MainlineBranchFinder.cs index fa9596d07f..31d4f3ad89 100644 --- a/src/GitVersion.Core/Core/MainlineBranchFinder.cs +++ b/src/GitVersion.Core/Core/MainlineBranchFinder.cs @@ -2,6 +2,7 @@ using GitVersion.Common; using GitVersion.Configuration; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Logging; namespace GitVersion; diff --git a/src/GitVersion.Core/Core/MergeBaseFinder.cs b/src/GitVersion.Core/Core/MergeBaseFinder.cs index ff4c3dcb31..ceedd5e5d9 100644 --- a/src/GitVersion.Core/Core/MergeBaseFinder.cs +++ b/src/GitVersion.Core/Core/MergeBaseFinder.cs @@ -1,5 +1,6 @@ using GitVersion.Common; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Logging; namespace GitVersion; diff --git a/src/GitVersion.Core/Core/MergeCommitFinder.cs b/src/GitVersion.Core/Core/MergeCommitFinder.cs index 1a268e20a2..d3940d63fd 100644 --- a/src/GitVersion.Core/Core/MergeCommitFinder.cs +++ b/src/GitVersion.Core/Core/MergeCommitFinder.cs @@ -1,5 +1,6 @@ using GitVersion.Configuration; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Logging; namespace GitVersion; diff --git a/src/GitVersion.Core/Core/RepositoryStore.cs b/src/GitVersion.Core/Core/RepositoryStore.cs index dba9aa7c3e..43a2115734 100644 --- a/src/GitVersion.Core/Core/RepositoryStore.cs +++ b/src/GitVersion.Core/Core/RepositoryStore.cs @@ -1,6 +1,7 @@ using GitVersion.Common; using GitVersion.Configuration; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Helpers; using GitVersion.Logging; diff --git a/src/GitVersion.Core/Core/SourceBranchFinder.cs b/src/GitVersion.Core/Core/SourceBranchFinder.cs index 903412b5e3..3dfcaf3625 100644 --- a/src/GitVersion.Core/Core/SourceBranchFinder.cs +++ b/src/GitVersion.Core/Core/SourceBranchFinder.cs @@ -1,6 +1,7 @@ using System.Text.RegularExpressions; using GitVersion.Configuration; using GitVersion.Extensions; +using GitVersion.Git; namespace GitVersion; diff --git a/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs b/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs index fd147cd494..9ed2ee7144 100644 --- a/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs +++ b/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs @@ -1,6 +1,7 @@ using System.Collections.Concurrent; using GitVersion.Configuration; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Logging; namespace GitVersion.Core; diff --git a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs index 10bec60e63..78fb1521b3 100644 --- a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs +++ b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs @@ -1,5 +1,6 @@ using System.Text.RegularExpressions; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.VersionCalculation; namespace GitVersion.Configuration; diff --git a/src/GitVersion.Core/Git/AuthenticationInfo.cs b/src/GitVersion.Core/Git/AuthenticationInfo.cs index 925dedfdad..24d6798735 100644 --- a/src/GitVersion.Core/Git/AuthenticationInfo.cs +++ b/src/GitVersion.Core/Git/AuthenticationInfo.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public record AuthenticationInfo { diff --git a/src/GitVersion.Core/Git/BranchCommit.cs b/src/GitVersion.Core/Git/BranchCommit.cs index 7a12c027d0..ccc926033a 100644 --- a/src/GitVersion.Core/Git/BranchCommit.cs +++ b/src/GitVersion.Core/Git/BranchCommit.cs @@ -1,6 +1,6 @@ using GitVersion.Extensions; -namespace GitVersion; +namespace GitVersion.Git; /// /// A commit, together with the branch to which the commit belongs. diff --git a/src/GitVersion.Core/Git/CommitExtensions.cs b/src/GitVersion.Core/Git/CommitExtensions.cs index 6cd5c9f460..9b8971ac54 100644 --- a/src/GitVersion.Core/Git/CommitExtensions.cs +++ b/src/GitVersion.Core/Git/CommitExtensions.cs @@ -1,6 +1,6 @@ using GitVersion.Extensions; -namespace GitVersion; +namespace GitVersion.Git; public static class CommitExtensions { diff --git a/src/GitVersion.Core/Git/CommitFilter.cs b/src/GitVersion.Core/Git/CommitFilter.cs index 4992f1715a..f8c05c5261 100644 --- a/src/GitVersion.Core/Git/CommitFilter.cs +++ b/src/GitVersion.Core/Git/CommitFilter.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public record CommitFilter { diff --git a/src/GitVersion.Core/Git/IBranch.cs b/src/GitVersion.Core/Git/IBranch.cs index e0745b87c2..4c78171180 100644 --- a/src/GitVersion.Core/Git/IBranch.cs +++ b/src/GitVersion.Core/Git/IBranch.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface IBranch : IEquatable, IComparable, INamedReference { diff --git a/src/GitVersion.Core/Git/IBranchCollection.cs b/src/GitVersion.Core/Git/IBranchCollection.cs index ffb86439ad..5943bdf7d8 100644 --- a/src/GitVersion.Core/Git/IBranchCollection.cs +++ b/src/GitVersion.Core/Git/IBranchCollection.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface IBranchCollection : IEnumerable { diff --git a/src/GitVersion.Core/Git/ICommit.cs b/src/GitVersion.Core/Git/ICommit.cs index 0c9484c395..6d54ecb78d 100644 --- a/src/GitVersion.Core/Git/ICommit.cs +++ b/src/GitVersion.Core/Git/ICommit.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface ICommit : IEquatable, IComparable, IGitObject { diff --git a/src/GitVersion.Core/Git/ICommitCollection.cs b/src/GitVersion.Core/Git/ICommitCollection.cs index 10d9723156..8bf6267f37 100644 --- a/src/GitVersion.Core/Git/ICommitCollection.cs +++ b/src/GitVersion.Core/Git/ICommitCollection.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface ICommitCollection : IEnumerable { diff --git a/src/GitVersion.Core/Git/IGitObject.cs b/src/GitVersion.Core/Git/IGitObject.cs index d125066ad7..1965547a30 100644 --- a/src/GitVersion.Core/Git/IGitObject.cs +++ b/src/GitVersion.Core/Git/IGitObject.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface IGitObject : IEquatable, IComparable { diff --git a/src/GitVersion.Core/Git/IGitRepository.cs b/src/GitVersion.Core/Git/IGitRepository.cs index abc2317c3a..9f25193b0d 100644 --- a/src/GitVersion.Core/Git/IGitRepository.cs +++ b/src/GitVersion.Core/Git/IGitRepository.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface IGitRepository : IDisposable { diff --git a/src/GitVersion.Core/Git/IGitRepositoryInfo.cs b/src/GitVersion.Core/Git/IGitRepositoryInfo.cs index 4e39080ee1..4aff8edd97 100644 --- a/src/GitVersion.Core/Git/IGitRepositoryInfo.cs +++ b/src/GitVersion.Core/Git/IGitRepositoryInfo.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface IGitRepositoryInfo { diff --git a/src/GitVersion.Core/Git/IMutatingGitRepository.cs b/src/GitVersion.Core/Git/IMutatingGitRepository.cs index 3924c4326e..b7dc7bf811 100644 --- a/src/GitVersion.Core/Git/IMutatingGitRepository.cs +++ b/src/GitVersion.Core/Git/IMutatingGitRepository.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface IMutatingGitRepository : IGitRepository { diff --git a/src/GitVersion.Core/Git/INamedReference.cs b/src/GitVersion.Core/Git/INamedReference.cs index a138984514..2c41175783 100644 --- a/src/GitVersion.Core/Git/INamedReference.cs +++ b/src/GitVersion.Core/Git/INamedReference.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface INamedReference { diff --git a/src/GitVersion.Core/Git/IObjectId.cs b/src/GitVersion.Core/Git/IObjectId.cs index 1140e04f1f..b303cc953d 100644 --- a/src/GitVersion.Core/Git/IObjectId.cs +++ b/src/GitVersion.Core/Git/IObjectId.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface IObjectId : IEquatable, IComparable { diff --git a/src/GitVersion.Core/Git/IRefSpec.cs b/src/GitVersion.Core/Git/IRefSpec.cs index d21969e32a..777641c1b4 100644 --- a/src/GitVersion.Core/Git/IRefSpec.cs +++ b/src/GitVersion.Core/Git/IRefSpec.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface IRefSpec : IEquatable, IComparable { diff --git a/src/GitVersion.Core/Git/IRefSpecCollection.cs b/src/GitVersion.Core/Git/IRefSpecCollection.cs index 1512aa8cbc..d007874d8c 100644 --- a/src/GitVersion.Core/Git/IRefSpecCollection.cs +++ b/src/GitVersion.Core/Git/IRefSpecCollection.cs @@ -1,3 +1,3 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface IRefSpecCollection : IEnumerable; diff --git a/src/GitVersion.Core/Git/IReference.cs b/src/GitVersion.Core/Git/IReference.cs index 7cb6132d1d..6b560af39b 100644 --- a/src/GitVersion.Core/Git/IReference.cs +++ b/src/GitVersion.Core/Git/IReference.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface IReference : IEquatable, IComparable, INamedReference { diff --git a/src/GitVersion.Core/Git/IReferenceCollection.cs b/src/GitVersion.Core/Git/IReferenceCollection.cs index e3aafe1d50..6b4f639386 100644 --- a/src/GitVersion.Core/Git/IReferenceCollection.cs +++ b/src/GitVersion.Core/Git/IReferenceCollection.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface IReferenceCollection : IEnumerable { diff --git a/src/GitVersion.Core/Git/IRemote.cs b/src/GitVersion.Core/Git/IRemote.cs index 896b3edfda..53b51eaad0 100644 --- a/src/GitVersion.Core/Git/IRemote.cs +++ b/src/GitVersion.Core/Git/IRemote.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface IRemote : IEquatable, IComparable { diff --git a/src/GitVersion.Core/Git/IRemoteCollection.cs b/src/GitVersion.Core/Git/IRemoteCollection.cs index 614177ac81..531eee8546 100644 --- a/src/GitVersion.Core/Git/IRemoteCollection.cs +++ b/src/GitVersion.Core/Git/IRemoteCollection.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface IRemoteCollection : IEnumerable { diff --git a/src/GitVersion.Core/Git/ITag.cs b/src/GitVersion.Core/Git/ITag.cs index 3a450e7cb9..c37dec97f4 100644 --- a/src/GitVersion.Core/Git/ITag.cs +++ b/src/GitVersion.Core/Git/ITag.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface ITag : IEquatable, IComparable, INamedReference { diff --git a/src/GitVersion.Core/Git/ITagCollection.cs b/src/GitVersion.Core/Git/ITagCollection.cs index eca7b5c0e7..3065430e39 100644 --- a/src/GitVersion.Core/Git/ITagCollection.cs +++ b/src/GitVersion.Core/Git/ITagCollection.cs @@ -1,3 +1,3 @@ -namespace GitVersion; +namespace GitVersion.Git; public interface ITagCollection : IEnumerable; diff --git a/src/GitVersion.Core/Git/RefSpecDirection.cs b/src/GitVersion.Core/Git/RefSpecDirection.cs index 9cca4404f6..97070104f8 100644 --- a/src/GitVersion.Core/Git/RefSpecDirection.cs +++ b/src/GitVersion.Core/Git/RefSpecDirection.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; public enum RefSpecDirection { diff --git a/src/GitVersion.Core/Git/ReferenceName.cs b/src/GitVersion.Core/Git/ReferenceName.cs index 601ddc1348..630511dda2 100644 --- a/src/GitVersion.Core/Git/ReferenceName.cs +++ b/src/GitVersion.Core/Git/ReferenceName.cs @@ -3,7 +3,7 @@ using GitVersion.Extensions; using GitVersion.Helpers; -namespace GitVersion; +namespace GitVersion.Git; public class ReferenceName : IEquatable, IComparable { diff --git a/src/GitVersion.Core/GitVersionContext.cs b/src/GitVersion.Core/GitVersionContext.cs index fd654d5dc1..7264abe4c5 100644 --- a/src/GitVersion.Core/GitVersionContext.cs +++ b/src/GitVersion.Core/GitVersionContext.cs @@ -1,5 +1,6 @@ using GitVersion.Configuration; using GitVersion.Extensions; +using GitVersion.Git; namespace GitVersion; diff --git a/src/GitVersion.Core/MergeMessage.cs b/src/GitVersion.Core/MergeMessage.cs index f7b8c24ebe..43a4a66c75 100644 --- a/src/GitVersion.Core/MergeMessage.cs +++ b/src/GitVersion.Core/MergeMessage.cs @@ -2,6 +2,7 @@ using System.Text.RegularExpressions; using GitVersion.Configuration; using GitVersion.Extensions; +using GitVersion.Git; namespace GitVersion; diff --git a/src/GitVersion.Core/Options/GitVersionOptions.cs b/src/GitVersion.Core/Options/GitVersionOptions.cs index d3338a195c..1fc689dbd7 100644 --- a/src/GitVersion.Core/Options/GitVersionOptions.cs +++ b/src/GitVersion.Core/Options/GitVersionOptions.cs @@ -1,3 +1,4 @@ +using GitVersion.Git; using GitVersion.Logging; namespace GitVersion; diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 504abdd463..7f4fcd4129 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -1,4 +1,8 @@ #nullable enable +const GitVersion.Git.ReferenceName.LocalBranchPrefix = "refs/heads/" -> string! +const GitVersion.Git.ReferenceName.OriginPrefix = "origin/" -> string! +const GitVersion.Git.ReferenceName.RemoteTrackingBranchPrefix = "refs/remotes/" -> string! +const GitVersion.Git.ReferenceName.TagPrefix = "refs/tags/" -> string! GitVersion.Agents.IBuildAgent GitVersion.Agents.IBuildAgent.CanApplyToCurrentContext() -> bool GitVersion.Agents.IBuildAgent.GetCurrentBranch(bool usingDynamicRepos) -> string? @@ -47,55 +51,27 @@ GitVersion.Attributes.JsonPropertyDescriptionAttribute.JsonPropertyDescriptionAt GitVersion.Attributes.JsonPropertyFormatAttribute GitVersion.Attributes.JsonPropertyFormatAttribute.Format.get -> GitVersion.Attributes.Format GitVersion.Attributes.JsonPropertyFormatAttribute.JsonPropertyFormatAttribute(GitVersion.Attributes.Format format) -> void -GitVersion.AuthenticationInfo -GitVersion.AuthenticationInfo.Password.get -> string? -GitVersion.AuthenticationInfo.Password.set -> void -GitVersion.AuthenticationInfo.Token.get -> string? -GitVersion.AuthenticationInfo.Token.set -> void -GitVersion.AuthenticationInfo.Username.get -> string? -GitVersion.AuthenticationInfo.Username.set -> void -GitVersion.BranchCommit -GitVersion.BranchCommit.Branch.get -> GitVersion.IBranch! -GitVersion.BranchCommit.BranchCommit() -> void -GitVersion.BranchCommit.BranchCommit(GitVersion.ICommit! commit, GitVersion.IBranch! branch) -> void -GitVersion.BranchCommit.Commit.get -> GitVersion.ICommit! -GitVersion.BranchCommit.Equals(GitVersion.BranchCommit? other) -> bool GitVersion.BugException GitVersion.BugException.BugException() -> void GitVersion.BugException.BugException(string! message) -> void GitVersion.BugException.BugException(string? message, System.Exception? innerException) -> void -GitVersion.CommitExtensions -GitVersion.CommitFilter -GitVersion.CommitFilter.ExcludeReachableFrom.get -> object? -GitVersion.CommitFilter.ExcludeReachableFrom.set -> void -GitVersion.CommitFilter.FirstParentOnly.get -> bool -GitVersion.CommitFilter.FirstParentOnly.set -> void -GitVersion.CommitFilter.IncludeReachableFrom.get -> object? -GitVersion.CommitFilter.IncludeReachableFrom.set -> void -GitVersion.CommitFilter.SortBy.get -> GitVersion.CommitSortStrategies -GitVersion.CommitFilter.SortBy.set -> void -GitVersion.CommitSortStrategies -GitVersion.CommitSortStrategies.None = 0 -> GitVersion.CommitSortStrategies -GitVersion.CommitSortStrategies.Reverse = 4 -> GitVersion.CommitSortStrategies -GitVersion.CommitSortStrategies.Time = 2 -> GitVersion.CommitSortStrategies -GitVersion.CommitSortStrategies.Topological = 1 -> GitVersion.CommitSortStrategies GitVersion.Common.IRepositoryStore -GitVersion.Common.IRepositoryStore.ExcludingBranches(System.Collections.Generic.IEnumerable! branchesToExclude) -> System.Collections.Generic.IEnumerable! -GitVersion.Common.IRepositoryStore.FindBranch(GitVersion.ReferenceName! branchName) -> GitVersion.IBranch? -GitVersion.Common.IRepositoryStore.FindBranch(string! branchName) -> GitVersion.IBranch? -GitVersion.Common.IRepositoryStore.FindCommitBranchWasBranchedFrom(GitVersion.IBranch? branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.IBranch![]! excludedBranches) -> GitVersion.BranchCommit -GitVersion.Common.IRepositoryStore.FindCommitBranchesWasBranchedFrom(GitVersion.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, System.Collections.Generic.IEnumerable! excludedBranches) -> System.Collections.Generic.IEnumerable! -GitVersion.Common.IRepositoryStore.FindCommitBranchesWasBranchedFrom(GitVersion.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.IBranch![]! excludedBranches) -> System.Collections.Generic.IEnumerable! -GitVersion.Common.IRepositoryStore.FindMergeBase(GitVersion.IBranch? branch, GitVersion.IBranch? otherBranch) -> GitVersion.ICommit? -GitVersion.Common.IRepositoryStore.FindMergeBase(GitVersion.ICommit! commit, GitVersion.ICommit! mainlineTip) -> GitVersion.ICommit? -GitVersion.Common.IRepositoryStore.GetBranchesContainingCommit(GitVersion.ICommit! commit, System.Collections.Generic.IEnumerable? branches = null, bool onlyTrackedBranches = false) -> System.Collections.Generic.IEnumerable! -GitVersion.Common.IRepositoryStore.GetCommitLog(GitVersion.ICommit? baseVersionSource, GitVersion.ICommit! currentCommit, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> System.Collections.Generic.IReadOnlyList! -GitVersion.Common.IRepositoryStore.GetCurrentCommit(GitVersion.IBranch! currentBranch, string? commitId, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> GitVersion.ICommit? +GitVersion.Common.IRepositoryStore.ExcludingBranches(System.Collections.Generic.IEnumerable! branchesToExclude) -> System.Collections.Generic.IEnumerable! +GitVersion.Common.IRepositoryStore.FindBranch(GitVersion.Git.ReferenceName! branchName) -> GitVersion.Git.IBranch? +GitVersion.Common.IRepositoryStore.FindBranch(string! branchName) -> GitVersion.Git.IBranch? +GitVersion.Common.IRepositoryStore.FindCommitBranchesWasBranchedFrom(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.Git.IBranch![]! excludedBranches) -> System.Collections.Generic.IEnumerable! +GitVersion.Common.IRepositoryStore.FindCommitBranchesWasBranchedFrom(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, System.Collections.Generic.IEnumerable! excludedBranches) -> System.Collections.Generic.IEnumerable! +GitVersion.Common.IRepositoryStore.FindCommitBranchWasBranchedFrom(GitVersion.Git.IBranch? branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.Git.IBranch![]! excludedBranches) -> GitVersion.Git.BranchCommit +GitVersion.Common.IRepositoryStore.FindMergeBase(GitVersion.Git.IBranch? branch, GitVersion.Git.IBranch? otherBranch) -> GitVersion.Git.ICommit? +GitVersion.Common.IRepositoryStore.FindMergeBase(GitVersion.Git.ICommit! commit, GitVersion.Git.ICommit! mainlineTip) -> GitVersion.Git.ICommit? +GitVersion.Common.IRepositoryStore.GetBranchesContainingCommit(GitVersion.Git.ICommit! commit, System.Collections.Generic.IEnumerable? branches = null, bool onlyTrackedBranches = false) -> System.Collections.Generic.IEnumerable! +GitVersion.Common.IRepositoryStore.GetCommitLog(GitVersion.Git.ICommit? baseVersionSource, GitVersion.Git.ICommit! currentCommit, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> System.Collections.Generic.IReadOnlyList! +GitVersion.Common.IRepositoryStore.GetCurrentCommit(GitVersion.Git.IBranch! currentBranch, string? commitId, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> GitVersion.Git.ICommit? GitVersion.Common.IRepositoryStore.GetNumberOfUncommittedChanges() -> int -GitVersion.Common.IRepositoryStore.GetSourceBranches(GitVersion.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, System.Collections.Generic.IEnumerable! excludedBranches) -> System.Collections.Generic.IEnumerable! -GitVersion.Common.IRepositoryStore.GetSourceBranches(GitVersion.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.IBranch![]! excludedBranches) -> System.Collections.Generic.IEnumerable! -GitVersion.Common.IRepositoryStore.GetTargetBranch(string? targetBranchName) -> GitVersion.IBranch! -GitVersion.Common.IRepositoryStore.IsCommitOnBranch(GitVersion.ICommit? baseVersionSource, GitVersion.IBranch! branch, GitVersion.ICommit! firstMatchingCommit) -> bool +GitVersion.Common.IRepositoryStore.GetSourceBranches(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.Git.IBranch![]! excludedBranches) -> System.Collections.Generic.IEnumerable! +GitVersion.Common.IRepositoryStore.GetSourceBranches(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, System.Collections.Generic.IEnumerable! excludedBranches) -> System.Collections.Generic.IEnumerable! +GitVersion.Common.IRepositoryStore.GetTargetBranch(string? targetBranchName) -> GitVersion.Git.IBranch! +GitVersion.Common.IRepositoryStore.IsCommitOnBranch(GitVersion.Git.ICommit? baseVersionSource, GitVersion.Git.IBranch! branch, GitVersion.Git.ICommit! firstMatchingCommit) -> bool GitVersion.Configuration.AssemblyFileVersioningScheme GitVersion.Configuration.AssemblyFileVersioningScheme.Major = 3 -> GitVersion.Configuration.AssemblyFileVersioningScheme GitVersion.Configuration.AssemblyFileVersioningScheme.MajorMinor = 2 -> GitVersion.Configuration.AssemblyFileVersioningScheme @@ -109,8 +85,8 @@ GitVersion.Configuration.AssemblyVersioningScheme.MajorMinorPatch = 1 -> GitVers GitVersion.Configuration.AssemblyVersioningScheme.MajorMinorPatchTag = 0 -> GitVersion.Configuration.AssemblyVersioningScheme GitVersion.Configuration.AssemblyVersioningScheme.None = 4 -> GitVersion.Configuration.AssemblyVersioningScheme GitVersion.Configuration.EffectiveBranchConfiguration -GitVersion.Configuration.EffectiveBranchConfiguration.Branch.get -> GitVersion.IBranch! -GitVersion.Configuration.EffectiveBranchConfiguration.EffectiveBranchConfiguration(GitVersion.Configuration.EffectiveConfiguration! Value, GitVersion.IBranch! Branch) -> void +GitVersion.Configuration.EffectiveBranchConfiguration.Branch.get -> GitVersion.Git.IBranch! +GitVersion.Configuration.EffectiveBranchConfiguration.EffectiveBranchConfiguration(GitVersion.Configuration.EffectiveConfiguration! Value, GitVersion.Git.IBranch! Branch) -> void GitVersion.Configuration.EffectiveBranchConfiguration.Value.get -> GitVersion.Configuration.EffectiveConfiguration! GitVersion.Configuration.EffectiveConfiguration GitVersion.Configuration.EffectiveConfiguration.AssemblyFileVersioningFormat.get -> string? @@ -225,6 +201,129 @@ GitVersion.FileWriteInfo.FileExtension.get -> string! GitVersion.FileWriteInfo.FileName.get -> string! GitVersion.FileWriteInfo.FileWriteInfo(string! workingDirectory, string! fileName, string! fileExtension) -> void GitVersion.FileWriteInfo.WorkingDirectory.get -> string! +GitVersion.Git.AuthenticationInfo +GitVersion.Git.AuthenticationInfo.Password.get -> string? +GitVersion.Git.AuthenticationInfo.Password.set -> void +GitVersion.Git.AuthenticationInfo.Token.get -> string? +GitVersion.Git.AuthenticationInfo.Token.set -> void +GitVersion.Git.AuthenticationInfo.Username.get -> string? +GitVersion.Git.AuthenticationInfo.Username.set -> void +GitVersion.Git.BranchCommit +GitVersion.Git.BranchCommit.Branch.get -> GitVersion.Git.IBranch! +GitVersion.Git.BranchCommit.BranchCommit() -> void +GitVersion.Git.BranchCommit.BranchCommit(GitVersion.Git.ICommit! commit, GitVersion.Git.IBranch! branch) -> void +GitVersion.Git.BranchCommit.Commit.get -> GitVersion.Git.ICommit! +GitVersion.Git.BranchCommit.Equals(GitVersion.Git.BranchCommit? other) -> bool +GitVersion.Git.CommitExtensions +GitVersion.Git.CommitFilter +GitVersion.Git.CommitFilter.ExcludeReachableFrom.get -> object? +GitVersion.Git.CommitFilter.ExcludeReachableFrom.set -> void +GitVersion.Git.CommitFilter.FirstParentOnly.get -> bool +GitVersion.Git.CommitFilter.FirstParentOnly.set -> void +GitVersion.Git.CommitFilter.IncludeReachableFrom.get -> object? +GitVersion.Git.CommitFilter.IncludeReachableFrom.set -> void +GitVersion.Git.CommitFilter.SortBy.get -> GitVersion.Git.CommitSortStrategies +GitVersion.Git.CommitFilter.SortBy.set -> void +GitVersion.Git.CommitSortStrategies +GitVersion.Git.CommitSortStrategies.None = 0 -> GitVersion.Git.CommitSortStrategies +GitVersion.Git.CommitSortStrategies.Reverse = 4 -> GitVersion.Git.CommitSortStrategies +GitVersion.Git.CommitSortStrategies.Time = 2 -> GitVersion.Git.CommitSortStrategies +GitVersion.Git.CommitSortStrategies.Topological = 1 -> GitVersion.Git.CommitSortStrategies +GitVersion.Git.IBranch +GitVersion.Git.IBranch.Commits.get -> GitVersion.Git.ICommitCollection! +GitVersion.Git.IBranch.IsDetachedHead.get -> bool +GitVersion.Git.IBranch.IsRemote.get -> bool +GitVersion.Git.IBranch.IsTracking.get -> bool +GitVersion.Git.IBranch.Tip.get -> GitVersion.Git.ICommit? +GitVersion.Git.IBranchCollection +GitVersion.Git.IBranchCollection.ExcludeBranches(System.Collections.Generic.IEnumerable! branchesToExclude) -> System.Collections.Generic.IEnumerable! +GitVersion.Git.IBranchCollection.this[string! name].get -> GitVersion.Git.IBranch? +GitVersion.Git.IBranchCollection.UpdateTrackedBranch(GitVersion.Git.IBranch! branch, string! remoteTrackingReferenceName) -> void +GitVersion.Git.ICommit +GitVersion.Git.ICommit.Message.get -> string! +GitVersion.Git.ICommit.Parents.get -> System.Collections.Generic.IReadOnlyList! +GitVersion.Git.ICommit.When.get -> System.DateTimeOffset +GitVersion.Git.ICommitCollection +GitVersion.Git.ICommitCollection.GetCommitsPriorTo(System.DateTimeOffset olderThan) -> System.Collections.Generic.IEnumerable! +GitVersion.Git.ICommitCollection.QueryBy(GitVersion.Git.CommitFilter! commitFilter) -> System.Collections.Generic.IEnumerable! +GitVersion.Git.IGitObject +GitVersion.Git.IGitObject.Id.get -> GitVersion.Git.IObjectId! +GitVersion.Git.IGitObject.Sha.get -> string! +GitVersion.Git.IGitRepository +GitVersion.Git.IGitRepository.Branches.get -> GitVersion.Git.IBranchCollection! +GitVersion.Git.IGitRepository.Commits.get -> GitVersion.Git.ICommitCollection! +GitVersion.Git.IGitRepository.DiscoverRepository(string? gitDirectory) -> void +GitVersion.Git.IGitRepository.FindMergeBase(GitVersion.Git.ICommit! commit, GitVersion.Git.ICommit! otherCommit) -> GitVersion.Git.ICommit? +GitVersion.Git.IGitRepository.GetNumberOfUncommittedChanges() -> int +GitVersion.Git.IGitRepository.Head.get -> GitVersion.Git.IBranch! +GitVersion.Git.IGitRepository.IsHeadDetached.get -> bool +GitVersion.Git.IGitRepository.IsShallow.get -> bool +GitVersion.Git.IGitRepository.Path.get -> string! +GitVersion.Git.IGitRepository.Refs.get -> GitVersion.Git.IReferenceCollection! +GitVersion.Git.IGitRepository.Remotes.get -> GitVersion.Git.IRemoteCollection! +GitVersion.Git.IGitRepository.Tags.get -> GitVersion.Git.ITagCollection! +GitVersion.Git.IGitRepository.WorkingDirectory.get -> string! +GitVersion.Git.IGitRepositoryInfo +GitVersion.Git.IGitRepositoryInfo.DotGitDirectory.get -> string? +GitVersion.Git.IGitRepositoryInfo.DynamicGitRepositoryPath.get -> string? +GitVersion.Git.IGitRepositoryInfo.GitRootPath.get -> string? +GitVersion.Git.IGitRepositoryInfo.ProjectRootDirectory.get -> string? +GitVersion.Git.IMutatingGitRepository +GitVersion.Git.IMutatingGitRepository.Checkout(string! commitOrBranchSpec) -> void +GitVersion.Git.IMutatingGitRepository.Clone(string? sourceUrl, string? workdirPath, GitVersion.Git.AuthenticationInfo! auth) -> void +GitVersion.Git.IMutatingGitRepository.CreateBranchForPullRequestBranch(GitVersion.Git.AuthenticationInfo! auth) -> void +GitVersion.Git.IMutatingGitRepository.Fetch(string! remote, System.Collections.Generic.IEnumerable! refSpecs, GitVersion.Git.AuthenticationInfo! auth, string? logMessage) -> void +GitVersion.Git.INamedReference +GitVersion.Git.INamedReference.Name.get -> GitVersion.Git.ReferenceName! +GitVersion.Git.IObjectId +GitVersion.Git.IObjectId.Sha.get -> string! +GitVersion.Git.IObjectId.ToString(int prefixLength) -> string! +GitVersion.Git.IReference +GitVersion.Git.IReference.ReferenceTargetId.get -> GitVersion.Git.IObjectId? +GitVersion.Git.IReference.TargetIdentifier.get -> string! +GitVersion.Git.IReferenceCollection +GitVersion.Git.IReferenceCollection.Add(string! name, string! canonicalRefNameOrObject, bool allowOverwrite = false) -> void +GitVersion.Git.IReferenceCollection.FromGlob(string! prefix) -> System.Collections.Generic.IEnumerable! +GitVersion.Git.IReferenceCollection.Head.get -> GitVersion.Git.IReference? +GitVersion.Git.IReferenceCollection.this[GitVersion.Git.ReferenceName! referenceName].get -> GitVersion.Git.IReference? +GitVersion.Git.IReferenceCollection.this[string! name].get -> GitVersion.Git.IReference? +GitVersion.Git.IReferenceCollection.UpdateTarget(GitVersion.Git.IReference! directRef, GitVersion.Git.IObjectId! targetId) -> void +GitVersion.Git.IRefSpec +GitVersion.Git.IRefSpec.Destination.get -> string! +GitVersion.Git.IRefSpec.Direction.get -> GitVersion.Git.RefSpecDirection +GitVersion.Git.IRefSpec.Source.get -> string! +GitVersion.Git.IRefSpec.Specification.get -> string! +GitVersion.Git.IRefSpecCollection +GitVersion.Git.IRemote +GitVersion.Git.IRemote.FetchRefSpecs.get -> System.Collections.Generic.IEnumerable! +GitVersion.Git.IRemote.Name.get -> string! +GitVersion.Git.IRemote.PushRefSpecs.get -> System.Collections.Generic.IEnumerable! +GitVersion.Git.IRemote.RefSpecs.get -> System.Collections.Generic.IEnumerable! +GitVersion.Git.IRemote.Url.get -> string! +GitVersion.Git.IRemoteCollection +GitVersion.Git.IRemoteCollection.Remove(string! remoteName) -> void +GitVersion.Git.IRemoteCollection.this[string! name].get -> GitVersion.Git.IRemote? +GitVersion.Git.IRemoteCollection.Update(string! remoteName, string! refSpec) -> void +GitVersion.Git.ITag +GitVersion.Git.ITag.Commit.get -> GitVersion.Git.ICommit! +GitVersion.Git.ITag.TargetSha.get -> string! +GitVersion.Git.ITagCollection +GitVersion.Git.ReferenceName +GitVersion.Git.ReferenceName.Canonical.get -> string! +GitVersion.Git.ReferenceName.CompareTo(GitVersion.Git.ReferenceName? other) -> int +GitVersion.Git.ReferenceName.Equals(GitVersion.Git.ReferenceName? other) -> bool +GitVersion.Git.ReferenceName.EquivalentTo(string? name) -> bool +GitVersion.Git.ReferenceName.Friendly.get -> string! +GitVersion.Git.ReferenceName.IsLocalBranch.get -> bool +GitVersion.Git.ReferenceName.IsPullRequest.get -> bool +GitVersion.Git.ReferenceName.IsRemoteBranch.get -> bool +GitVersion.Git.ReferenceName.IsTag.get -> bool +GitVersion.Git.ReferenceName.ReferenceName(string! canonical) -> void +GitVersion.Git.ReferenceName.TryGetSemanticVersion(out (GitVersion.SemanticVersion! Value, string? Name) result, System.Text.RegularExpressions.Regex! versionPatternRegex, string? tagPrefix, GitVersion.SemanticVersionFormat format) -> bool +GitVersion.Git.ReferenceName.WithoutOrigin.get -> string! +GitVersion.Git.RefSpecDirection +GitVersion.Git.RefSpecDirection.Fetch = 0 -> GitVersion.Git.RefSpecDirection +GitVersion.Git.RefSpecDirection.Push = 1 -> GitVersion.Git.RefSpecDirection GitVersion.GitToolsException GitVersion.GitToolsException.GitToolsException() -> void GitVersion.GitToolsException.GitToolsException(string! message, System.Exception! innerException) -> void @@ -235,10 +334,10 @@ GitVersion.GitVersionCommonModule.GitVersionCommonModule() -> void GitVersion.GitVersionCommonModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void GitVersion.GitVersionContext GitVersion.GitVersionContext.Configuration.get -> GitVersion.Configuration.IGitVersionConfiguration! -GitVersion.GitVersionContext.CurrentBranch.get -> GitVersion.IBranch! -GitVersion.GitVersionContext.CurrentBranchCommits.get -> System.Collections.Generic.IEnumerable! -GitVersion.GitVersionContext.CurrentCommit.get -> GitVersion.ICommit! -GitVersion.GitVersionContext.GitVersionContext(GitVersion.IBranch! currentBranch, GitVersion.ICommit! currentCommit, GitVersion.Configuration.IGitVersionConfiguration! configuration, bool isCurrentCommitTagged, int numberOfUncommittedChanges) -> void +GitVersion.GitVersionContext.CurrentBranch.get -> GitVersion.Git.IBranch! +GitVersion.GitVersionContext.CurrentBranchCommits.get -> System.Collections.Generic.IEnumerable! +GitVersion.GitVersionContext.CurrentCommit.get -> GitVersion.Git.ICommit! +GitVersion.GitVersionContext.GitVersionContext(GitVersion.Git.IBranch! currentBranch, GitVersion.Git.ICommit! currentCommit, GitVersion.Configuration.IGitVersionConfiguration! configuration, bool isCurrentCommitTagged, int numberOfUncommittedChanges) -> void GitVersion.GitVersionContext.IsCurrentCommitTagged.get -> bool GitVersion.GitVersionContext.NumberOfUncommittedChanges.get -> int GitVersion.GitVersionCoreModule @@ -251,7 +350,7 @@ GitVersion.GitVersionException.GitVersionException(string! message, System.Excep GitVersion.GitVersionException.GitVersionException(string! messageFormat, params object![]! args) -> void GitVersion.GitVersionOptions GitVersion.GitVersionOptions.AssemblySettingsInfo.get -> GitVersion.AssemblySettingsInfo! -GitVersion.GitVersionOptions.AuthenticationInfo.get -> GitVersion.AuthenticationInfo! +GitVersion.GitVersionOptions.AuthenticationInfo.get -> GitVersion.Git.AuthenticationInfo! GitVersion.GitVersionOptions.ConfigurationInfo.get -> GitVersion.ConfigurationInfo! GitVersion.GitVersionOptions.Diag -> bool GitVersion.GitVersionOptions.Format -> string? @@ -285,23 +384,6 @@ GitVersion.Helpers.RetryAction GitVersion.Helpers.RetryAction.Execute(System.Action! operation) -> void GitVersion.Helpers.RetryAction.RetryAction(int maxRetries = 5) -> void GitVersion.Helpers.ServiceMessageEscapeHelper -GitVersion.IBranch -GitVersion.IBranch.Commits.get -> GitVersion.ICommitCollection! -GitVersion.IBranch.IsDetachedHead.get -> bool -GitVersion.IBranch.IsRemote.get -> bool -GitVersion.IBranch.IsTracking.get -> bool -GitVersion.IBranch.Tip.get -> GitVersion.ICommit? -GitVersion.IBranchCollection -GitVersion.IBranchCollection.ExcludeBranches(System.Collections.Generic.IEnumerable! branchesToExclude) -> System.Collections.Generic.IEnumerable! -GitVersion.IBranchCollection.UpdateTrackedBranch(GitVersion.IBranch! branch, string! remoteTrackingReferenceName) -> void -GitVersion.IBranchCollection.this[string! name].get -> GitVersion.IBranch? -GitVersion.ICommit -GitVersion.ICommit.Message.get -> string! -GitVersion.ICommit.Parents.get -> System.Collections.Generic.IReadOnlyList! -GitVersion.ICommit.When.get -> System.DateTimeOffset -GitVersion.ICommitCollection -GitVersion.ICommitCollection.GetCommitsPriorTo(System.DateTimeOffset olderThan) -> System.Collections.Generic.IEnumerable! -GitVersion.ICommitCollection.QueryBy(GitVersion.CommitFilter! commitFilter) -> System.Collections.Generic.IEnumerable! GitVersion.IConverterContext GitVersion.IConverterContext.WorkingDirectory.get -> string! GitVersion.IEnvironment @@ -321,31 +403,9 @@ GitVersion.IFileSystem.OpenWrite(string! path) -> System.IO.Stream! GitVersion.IFileSystem.ReadAllText(string! path) -> string! GitVersion.IFileSystem.WriteAllText(string? file, string! fileContents) -> void GitVersion.IFileSystem.WriteAllText(string? file, string! fileContents, System.Text.Encoding! encoding) -> void -GitVersion.IGitObject -GitVersion.IGitObject.Id.get -> GitVersion.IObjectId! -GitVersion.IGitObject.Sha.get -> string! GitVersion.IGitPreparer -GitVersion.IGitPreparer.EnsureLocalBranchExistsForCurrentBranch(GitVersion.IRemote! remote, string! currentBranch) -> void +GitVersion.IGitPreparer.EnsureLocalBranchExistsForCurrentBranch(GitVersion.Git.IRemote! remote, string! currentBranch) -> void GitVersion.IGitPreparer.Prepare() -> void -GitVersion.IGitRepository -GitVersion.IGitRepository.Branches.get -> GitVersion.IBranchCollection! -GitVersion.IGitRepository.Commits.get -> GitVersion.ICommitCollection! -GitVersion.IGitRepository.DiscoverRepository(string? gitDirectory) -> void -GitVersion.IGitRepository.FindMergeBase(GitVersion.ICommit! commit, GitVersion.ICommit! otherCommit) -> GitVersion.ICommit? -GitVersion.IGitRepository.GetNumberOfUncommittedChanges() -> int -GitVersion.IGitRepository.Head.get -> GitVersion.IBranch! -GitVersion.IGitRepository.IsHeadDetached.get -> bool -GitVersion.IGitRepository.IsShallow.get -> bool -GitVersion.IGitRepository.Path.get -> string! -GitVersion.IGitRepository.Refs.get -> GitVersion.IReferenceCollection! -GitVersion.IGitRepository.Remotes.get -> GitVersion.IRemoteCollection! -GitVersion.IGitRepository.Tags.get -> GitVersion.ITagCollection! -GitVersion.IGitRepository.WorkingDirectory.get -> string! -GitVersion.IGitRepositoryInfo -GitVersion.IGitRepositoryInfo.DotGitDirectory.get -> string? -GitVersion.IGitRepositoryInfo.DynamicGitRepositoryPath.get -> string? -GitVersion.IGitRepositoryInfo.GitRootPath.get -> string? -GitVersion.IGitRepositoryInfo.ProjectRootDirectory.get -> string? GitVersion.IGitVersionCalculateTool GitVersion.IGitVersionCalculateTool.CalculateVersionVariables() -> GitVersion.OutputVariables.GitVersionVariables! GitVersion.IGitVersionContextFactory @@ -353,46 +413,6 @@ GitVersion.IGitVersionContextFactory.Create(GitVersion.GitVersionOptions! gitVer GitVersion.IGitVersionModule GitVersion.IGitVersionModule.FindAllDerivedTypes(System.Reflection.Assembly? assembly) -> System.Collections.Generic.IEnumerable! GitVersion.IGitVersionModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void -GitVersion.IMutatingGitRepository -GitVersion.IMutatingGitRepository.Checkout(string! commitOrBranchSpec) -> void -GitVersion.IMutatingGitRepository.Clone(string? sourceUrl, string? workdirPath, GitVersion.AuthenticationInfo! auth) -> void -GitVersion.IMutatingGitRepository.CreateBranchForPullRequestBranch(GitVersion.AuthenticationInfo! auth) -> void -GitVersion.IMutatingGitRepository.Fetch(string! remote, System.Collections.Generic.IEnumerable! refSpecs, GitVersion.AuthenticationInfo! auth, string? logMessage) -> void -GitVersion.INamedReference -GitVersion.INamedReference.Name.get -> GitVersion.ReferenceName! -GitVersion.IObjectId -GitVersion.IObjectId.Sha.get -> string! -GitVersion.IObjectId.ToString(int prefixLength) -> string! -GitVersion.IRefSpec -GitVersion.IRefSpec.Destination.get -> string! -GitVersion.IRefSpec.Direction.get -> GitVersion.RefSpecDirection -GitVersion.IRefSpec.Source.get -> string! -GitVersion.IRefSpec.Specification.get -> string! -GitVersion.IRefSpecCollection -GitVersion.IReference -GitVersion.IReference.ReferenceTargetId.get -> GitVersion.IObjectId? -GitVersion.IReference.TargetIdentifier.get -> string! -GitVersion.IReferenceCollection -GitVersion.IReferenceCollection.Add(string! name, string! canonicalRefNameOrObject, bool allowOverwrite = false) -> void -GitVersion.IReferenceCollection.FromGlob(string! prefix) -> System.Collections.Generic.IEnumerable! -GitVersion.IReferenceCollection.Head.get -> GitVersion.IReference? -GitVersion.IReferenceCollection.UpdateTarget(GitVersion.IReference! directRef, GitVersion.IObjectId! targetId) -> void -GitVersion.IReferenceCollection.this[GitVersion.ReferenceName! referenceName].get -> GitVersion.IReference? -GitVersion.IReferenceCollection.this[string! name].get -> GitVersion.IReference? -GitVersion.IRemote -GitVersion.IRemote.FetchRefSpecs.get -> System.Collections.Generic.IEnumerable! -GitVersion.IRemote.Name.get -> string! -GitVersion.IRemote.PushRefSpecs.get -> System.Collections.Generic.IEnumerable! -GitVersion.IRemote.RefSpecs.get -> System.Collections.Generic.IEnumerable! -GitVersion.IRemote.Url.get -> string! -GitVersion.IRemoteCollection -GitVersion.IRemoteCollection.Remove(string! remoteName) -> void -GitVersion.IRemoteCollection.Update(string! remoteName, string! refSpec) -> void -GitVersion.IRemoteCollection.this[string! name].get -> GitVersion.IRemote? -GitVersion.ITag -GitVersion.ITag.Commit.get -> GitVersion.ICommit! -GitVersion.ITag.TargetSha.get -> string! -GitVersion.ITagCollection GitVersion.IVersionConverter GitVersion.IVersionConverter.Execute(GitVersion.OutputVariables.GitVersionVariables! variables, T context) -> void GitVersion.IncrementStrategy @@ -440,8 +460,8 @@ GitVersion.Logging.Verbosity.Verbose = 3 -> GitVersion.Logging.Verbosity GitVersion.MergeMessage GitVersion.MergeMessage.FormatName.get -> string? GitVersion.MergeMessage.IsMergedPullRequest.get -> bool +GitVersion.MergeMessage.MergedBranch.get -> GitVersion.Git.ReferenceName? GitVersion.MergeMessage.MergeMessage(string! mergeMessage, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> void -GitVersion.MergeMessage.MergedBranch.get -> GitVersion.ReferenceName? GitVersion.MergeMessage.PullRequestNumber.get -> int? GitVersion.MergeMessage.TargetBranch.get -> string? GitVersion.MergeMessage.Version.get -> GitVersion.SemanticVersion? @@ -508,22 +528,6 @@ GitVersion.OutputVariables.IVersionVariableSerializer.FromFile(string! filePath) GitVersion.OutputVariables.IVersionVariableSerializer.FromJson(string! json) -> GitVersion.OutputVariables.GitVersionVariables! GitVersion.OutputVariables.IVersionVariableSerializer.ToFile(GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables, string! filePath) -> void GitVersion.OutputVariables.IVersionVariableSerializer.ToJson(GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables) -> string! -GitVersion.ReferenceName.TryGetSemanticVersion(out (GitVersion.SemanticVersion! Value, string? Name) result, System.Text.RegularExpressions.Regex! versionPatternRegex, string? tagPrefix, GitVersion.SemanticVersionFormat format) -> bool -GitVersion.RefSpecDirection -GitVersion.RefSpecDirection.Fetch = 0 -> GitVersion.RefSpecDirection -GitVersion.RefSpecDirection.Push = 1 -> GitVersion.RefSpecDirection -GitVersion.ReferenceName -GitVersion.ReferenceName.Canonical.get -> string! -GitVersion.ReferenceName.CompareTo(GitVersion.ReferenceName? other) -> int -GitVersion.ReferenceName.Equals(GitVersion.ReferenceName? other) -> bool -GitVersion.ReferenceName.EquivalentTo(string? name) -> bool -GitVersion.ReferenceName.Friendly.get -> string! -GitVersion.ReferenceName.IsLocalBranch.get -> bool -GitVersion.ReferenceName.IsPullRequest.get -> bool -GitVersion.ReferenceName.IsRemoteBranch.get -> bool -GitVersion.ReferenceName.IsTag.get -> bool -GitVersion.ReferenceName.ReferenceName(string! canonical) -> void -GitVersion.ReferenceName.WithoutOrigin.get -> string! GitVersion.RepositoryInfo GitVersion.RepositoryInfo.ClonePath -> string? GitVersion.RepositoryInfo.CommitId -> string? @@ -636,8 +640,8 @@ GitVersion.SemanticVersionPreReleaseTag.ToString(string! format) -> string! GitVersion.SemanticVersionPreReleaseTag.ToString(string? format, System.IFormatProvider? formatProvider) -> string! GitVersion.SemanticVersionWithTag GitVersion.SemanticVersionWithTag.CompareTo(GitVersion.SemanticVersionWithTag? other) -> int -GitVersion.SemanticVersionWithTag.SemanticVersionWithTag(GitVersion.SemanticVersion! Value, GitVersion.ITag! Tag) -> void -GitVersion.SemanticVersionWithTag.Tag.get -> GitVersion.ITag! +GitVersion.SemanticVersionWithTag.SemanticVersionWithTag(GitVersion.SemanticVersion! Value, GitVersion.Git.ITag! Tag) -> void +GitVersion.SemanticVersionWithTag.Tag.get -> GitVersion.Git.ITag! GitVersion.SemanticVersionWithTag.Tag.init -> void GitVersion.SemanticVersionWithTag.Value.get -> GitVersion.SemanticVersion! GitVersion.SemanticVersionWithTag.Value.init -> void @@ -650,8 +654,8 @@ GitVersion.Settings.Settings() -> void GitVersion.VersionCalculation.BaseVersion GitVersion.VersionCalculation.BaseVersion.BaseVersion() -> void GitVersion.VersionCalculation.BaseVersion.BaseVersion(GitVersion.VersionCalculation.BaseVersionOperand! baseVersionOperand) -> void -GitVersion.VersionCalculation.BaseVersion.BaseVersion(string! source, GitVersion.SemanticVersion! semanticVersion, GitVersion.ICommit? baseVersionSource = null) -> void -GitVersion.VersionCalculation.BaseVersion.BaseVersionSource.get -> GitVersion.ICommit? +GitVersion.VersionCalculation.BaseVersion.BaseVersion(string! source, GitVersion.SemanticVersion! semanticVersion, GitVersion.Git.ICommit? baseVersionSource = null) -> void +GitVersion.VersionCalculation.BaseVersion.BaseVersionSource.get -> GitVersion.Git.ICommit? GitVersion.VersionCalculation.BaseVersion.GetIncrementedVersion() -> GitVersion.SemanticVersion! GitVersion.VersionCalculation.BaseVersion.Operand.get -> GitVersion.VersionCalculation.BaseVersionOperand! GitVersion.VersionCalculation.BaseVersion.Operand.init -> void @@ -662,8 +666,8 @@ GitVersion.VersionCalculation.BaseVersion.ShouldIncrement.get -> bool GitVersion.VersionCalculation.BaseVersion.Source.get -> string! GitVersion.VersionCalculation.BaseVersionOperand GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionOperand() -> void -GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionOperand(string! source, GitVersion.SemanticVersion! semanticVersion, GitVersion.ICommit? baseVersionSource = null) -> void -GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionSource.get -> GitVersion.ICommit? +GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionOperand(string! source, GitVersion.SemanticVersion! semanticVersion, GitVersion.Git.ICommit? baseVersionSource = null) -> void +GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionSource.get -> GitVersion.Git.ICommit? GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionSource.init -> void GitVersion.VersionCalculation.BaseVersionOperand.SemanticVersion.get -> GitVersion.SemanticVersion! GitVersion.VersionCalculation.BaseVersionOperand.SemanticVersion.init -> void @@ -672,7 +676,7 @@ GitVersion.VersionCalculation.BaseVersionOperand.Source.init -> void GitVersion.VersionCalculation.BaseVersionOperator GitVersion.VersionCalculation.BaseVersionOperator.AlternativeSemanticVersion.get -> GitVersion.SemanticVersion? GitVersion.VersionCalculation.BaseVersionOperator.AlternativeSemanticVersion.init -> void -GitVersion.VersionCalculation.BaseVersionOperator.BaseVersionSource.get -> GitVersion.ICommit? +GitVersion.VersionCalculation.BaseVersionOperator.BaseVersionSource.get -> GitVersion.Git.ICommit? GitVersion.VersionCalculation.BaseVersionOperator.BaseVersionSource.init -> void GitVersion.VersionCalculation.BaseVersionOperator.ForceIncrement.get -> bool GitVersion.VersionCalculation.BaseVersionOperator.ForceIncrement.init -> void @@ -700,17 +704,17 @@ GitVersion.VersionCalculation.DeploymentMode.ManualDeployment = 0 -> GitVersion. GitVersion.VersionCalculation.IBaseVersion GitVersion.VersionCalculation.IBaseVersion.SemanticVersion.get -> GitVersion.SemanticVersion! GitVersion.VersionCalculation.IBaseVersionIncrement -GitVersion.VersionCalculation.IBaseVersionIncrement.BaseVersionSource.get -> GitVersion.ICommit? +GitVersion.VersionCalculation.IBaseVersionIncrement.BaseVersionSource.get -> GitVersion.Git.ICommit? GitVersion.VersionCalculation.IBaseVersionIncrement.Source.get -> string! GitVersion.VersionCalculation.IDeploymentModeCalculator -GitVersion.VersionCalculation.IDeploymentModeCalculator.Calculate(GitVersion.SemanticVersion! semanticVersion, GitVersion.ICommit? baseVersionSource) -> GitVersion.SemanticVersion! +GitVersion.VersionCalculation.IDeploymentModeCalculator.Calculate(GitVersion.SemanticVersion! semanticVersion, GitVersion.Git.ICommit? baseVersionSource) -> GitVersion.SemanticVersion! GitVersion.VersionCalculation.IEffectiveBranchConfigurationFinder -GitVersion.VersionCalculation.IEffectiveBranchConfigurationFinder.GetConfigurations(GitVersion.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> System.Collections.Generic.IEnumerable! +GitVersion.VersionCalculation.IEffectiveBranchConfigurationFinder.GetConfigurations(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> System.Collections.Generic.IEnumerable! GitVersion.VersionCalculation.IIncrementStrategyFinder -GitVersion.VersionCalculation.IIncrementStrategyFinder.DetermineIncrementedField(GitVersion.ICommit! currentCommit, GitVersion.ICommit? baseVersionSource, bool shouldIncrement, GitVersion.Configuration.EffectiveConfiguration! configuration, string? label) -> GitVersion.VersionField -GitVersion.VersionCalculation.IIncrementStrategyFinder.GetIncrementForcedByCommit(GitVersion.ICommit! commit, GitVersion.Configuration.EffectiveConfiguration! configuration) -> GitVersion.VersionField -GitVersion.VersionCalculation.IIncrementStrategyFinder.GetIncrementForCommits(string? majorVersionBumpMessage, string? minorVersionBumpMessage, string? patchVersionBumpMessage, string? noBumpMessage, GitVersion.ICommit![]! commits) -> GitVersion.VersionField? -GitVersion.VersionCalculation.IIncrementStrategyFinder.GetMergedCommits(GitVersion.ICommit! mergeCommit, int index, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> System.Collections.Generic.IEnumerable! +GitVersion.VersionCalculation.IIncrementStrategyFinder.DetermineIncrementedField(GitVersion.Git.ICommit! currentCommit, GitVersion.Git.ICommit? baseVersionSource, bool shouldIncrement, GitVersion.Configuration.EffectiveConfiguration! configuration, string? label) -> GitVersion.VersionField +GitVersion.VersionCalculation.IIncrementStrategyFinder.GetIncrementForcedByCommit(GitVersion.Git.ICommit! commit, GitVersion.Configuration.EffectiveConfiguration! configuration) -> GitVersion.VersionField +GitVersion.VersionCalculation.IIncrementStrategyFinder.GetIncrementForCommits(string? majorVersionBumpMessage, string? minorVersionBumpMessage, string? patchVersionBumpMessage, string? noBumpMessage, GitVersion.Git.ICommit![]! commits) -> GitVersion.VersionField? +GitVersion.VersionCalculation.IIncrementStrategyFinder.GetMergedCommits(GitVersion.Git.ICommit! mergeCommit, int index, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> System.Collections.Generic.IEnumerable! GitVersion.VersionCalculation.INextVersionCalculator GitVersion.VersionCalculation.INextVersionCalculator.FindVersion() -> GitVersion.SemanticVersion! GitVersion.VersionCalculation.IVariableProvider @@ -754,16 +758,12 @@ GitVersion.WarningException.WarningException(string? message, System.Exception? GitVersion.WixInfo GitVersion.WixInfo.UpdateWixVersionFile -> bool GitVersion.WixInfo.WixInfo() -> void -const GitVersion.ReferenceName.LocalBranchPrefix = "refs/heads/" -> string! -const GitVersion.ReferenceName.OriginPrefix = "origin/" -> string! -const GitVersion.ReferenceName.RemoteTrackingBranchPrefix = "refs/remotes/" -> string! -const GitVersion.ReferenceName.TagPrefix = "refs/tags/" -> string! -override GitVersion.BranchCommit.Equals(object? obj) -> bool -override GitVersion.BranchCommit.GetHashCode() -> int +override GitVersion.Git.BranchCommit.Equals(object? obj) -> bool +override GitVersion.Git.BranchCommit.GetHashCode() -> int +override GitVersion.Git.ReferenceName.Equals(object? obj) -> bool +override GitVersion.Git.ReferenceName.GetHashCode() -> int +override GitVersion.Git.ReferenceName.ToString() -> string! override GitVersion.Helpers.LambdaKeyComparer.Compare(TSource? x, TSource? y) -> int -override GitVersion.ReferenceName.Equals(object? obj) -> bool -override GitVersion.ReferenceName.GetHashCode() -> int -override GitVersion.ReferenceName.ToString() -> string! override GitVersion.SemanticVersion.Equals(object? obj) -> bool override GitVersion.SemanticVersion.GetHashCode() -> int override GitVersion.SemanticVersion.ToString() -> string! @@ -778,9 +778,6 @@ override GitVersion.VersionCalculation.BaseVersion.ToString() -> string! override GitVersion.VersionCalculation.NextVersion.Equals(object? other) -> bool override GitVersion.VersionCalculation.NextVersion.GetHashCode() -> int override GitVersion.VersionCalculation.NextVersion.ToString() -> string! -static GitVersion.BranchCommit.operator !=(GitVersion.BranchCommit left, GitVersion.BranchCommit right) -> bool -static GitVersion.BranchCommit.operator ==(GitVersion.BranchCommit left, GitVersion.BranchCommit right) -> bool -static GitVersion.CommitExtensions.IsMergeCommit(this GitVersion.ICommit! source) -> bool static GitVersion.Extensions.AssemblyVersionsGeneratorExtensions.GetAssemblyFileVersion(this GitVersion.SemanticVersion! sv, GitVersion.Configuration.AssemblyFileVersioningScheme scheme) -> string? static GitVersion.Extensions.AssemblyVersionsGeneratorExtensions.GetAssemblyVersion(this GitVersion.SemanticVersion! sv, GitVersion.Configuration.AssemblyVersioningScheme scheme) -> string? static GitVersion.Extensions.CommonExtensions.NotNull(this T? value, string! name = "") -> T! @@ -804,6 +801,12 @@ static GitVersion.Extensions.StringExtensions.IsNullOrEmpty(this string? value) static GitVersion.Extensions.StringExtensions.IsNullOrWhiteSpace(this string? value) -> bool static GitVersion.Extensions.StringExtensions.RegexReplace(this string! input, string! pattern, string! replace, System.Text.RegularExpressions.RegexOptions options = System.Text.RegularExpressions.RegexOptions.None) -> string! static GitVersion.Extensions.StringExtensions.WithPrefixIfNotNullOrEmpty(this string! value, string! prefix) -> string! +static GitVersion.Git.BranchCommit.operator !=(GitVersion.Git.BranchCommit left, GitVersion.Git.BranchCommit right) -> bool +static GitVersion.Git.BranchCommit.operator ==(GitVersion.Git.BranchCommit left, GitVersion.Git.BranchCommit right) -> bool +static GitVersion.Git.CommitExtensions.IsMergeCommit(this GitVersion.Git.ICommit! source) -> bool +static GitVersion.Git.ReferenceName.FromBranchName(string! branchName) -> GitVersion.Git.ReferenceName! +static GitVersion.Git.ReferenceName.Parse(string! canonicalName) -> GitVersion.Git.ReferenceName! +static GitVersion.Git.ReferenceName.TryParse(out GitVersion.Git.ReferenceName? value, string! canonicalName) -> bool static GitVersion.Helpers.Disposable.Create(System.Action! disposer) -> System.IDisposable! static GitVersion.Helpers.Disposable.Create(T value, System.Action! disposer) -> GitVersion.Helpers.IDisposable! static GitVersion.Helpers.EncodingHelper.DetectEncoding(System.Collections.Generic.IList! bytes) -> System.Text.Encoding? @@ -836,10 +839,7 @@ static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! lo static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, string! format, params object![]! args) -> void static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! log, string! format, params object![]! args) -> void static GitVersion.Logging.LogExtensions.Write(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogLevel level, string! format, params object![]! args) -> void -static GitVersion.MergeMessage.TryParse(GitVersion.ICommit! mergeCommit, GitVersion.Configuration.IGitVersionConfiguration! configuration, out GitVersion.MergeMessage? mergeMessage) -> bool -static GitVersion.ReferenceName.FromBranchName(string! branchName) -> GitVersion.ReferenceName! -static GitVersion.ReferenceName.Parse(string! canonicalName) -> GitVersion.ReferenceName! -static GitVersion.ReferenceName.TryParse(out GitVersion.ReferenceName? value, string! canonicalName) -> bool +static GitVersion.MergeMessage.TryParse(GitVersion.Git.ICommit! mergeCommit, GitVersion.Configuration.IGitVersionConfiguration! configuration, out GitVersion.MergeMessage? mergeMessage) -> bool static GitVersion.SemanticVersion.Parse(string! version, string? tagPrefixRegex, GitVersion.SemanticVersionFormat versionFormat = GitVersion.SemanticVersionFormat.Strict) -> GitVersion.SemanticVersion! static GitVersion.SemanticVersion.operator !=(GitVersion.SemanticVersion? v1, GitVersion.SemanticVersion? v2) -> bool static GitVersion.SemanticVersion.operator <(GitVersion.SemanticVersion! v1, GitVersion.SemanticVersion! v2) -> bool @@ -868,7 +868,7 @@ static GitVersion.VersionCalculation.NextVersion.operator <=(GitVersion.VersionC static GitVersion.VersionCalculation.NextVersion.operator ==(GitVersion.VersionCalculation.NextVersion! left, GitVersion.VersionCalculation.NextVersion? right) -> bool static GitVersion.VersionCalculation.NextVersion.operator >(GitVersion.VersionCalculation.NextVersion! left, GitVersion.VersionCalculation.NextVersion! right) -> bool static GitVersion.VersionCalculation.NextVersion.operator >=(GitVersion.VersionCalculation.NextVersion! left, GitVersion.VersionCalculation.NextVersion! right) -> bool -static readonly GitVersion.BranchCommit.Empty -> GitVersion.BranchCommit +static readonly GitVersion.Git.BranchCommit.Empty -> GitVersion.Git.BranchCommit static readonly GitVersion.Helpers.Disposable.Empty -> System.IDisposable! static readonly GitVersion.SemanticVersion.Empty -> GitVersion.SemanticVersion! static readonly GitVersion.SemanticVersionBuildMetaData.Empty -> GitVersion.SemanticVersionBuildMetaData! diff --git a/src/GitVersion.Core/VersionCalculation/Abstractions/IDeploymentModeCalculator.cs b/src/GitVersion.Core/VersionCalculation/Abstractions/IDeploymentModeCalculator.cs index e4d16d3710..28c6cec386 100644 --- a/src/GitVersion.Core/VersionCalculation/Abstractions/IDeploymentModeCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/Abstractions/IDeploymentModeCalculator.cs @@ -1,3 +1,5 @@ +using GitVersion.Git; + namespace GitVersion.VersionCalculation; public interface IDeploymentModeCalculator diff --git a/src/GitVersion.Core/VersionCalculation/Abstractions/IEffectiveBranchConfigurationFinder.cs b/src/GitVersion.Core/VersionCalculation/Abstractions/IEffectiveBranchConfigurationFinder.cs index 3c010fb67c..9f43497dbb 100644 --- a/src/GitVersion.Core/VersionCalculation/Abstractions/IEffectiveBranchConfigurationFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/Abstractions/IEffectiveBranchConfigurationFinder.cs @@ -1,4 +1,5 @@ using GitVersion.Configuration; +using GitVersion.Git; namespace GitVersion.VersionCalculation { diff --git a/src/GitVersion.Core/VersionCalculation/Abstractions/IIncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/Abstractions/IIncrementStrategyFinder.cs index 3326e99c94..2c34ed344a 100644 --- a/src/GitVersion.Core/VersionCalculation/Abstractions/IIncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/Abstractions/IIncrementStrategyFinder.cs @@ -1,4 +1,5 @@ using GitVersion.Configuration; +using GitVersion.Git; namespace GitVersion.VersionCalculation; diff --git a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs index f758135734..61bb245cd6 100644 --- a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs +++ b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs @@ -1,4 +1,5 @@ using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Helpers; using GitVersion.Logging; using GitVersion.OutputVariables; diff --git a/src/GitVersion.Core/VersionCalculation/EffectiveBranchConfigurationFinder.cs b/src/GitVersion.Core/VersionCalculation/EffectiveBranchConfigurationFinder.cs index 9e0fac9db3..a8307b06b1 100644 --- a/src/GitVersion.Core/VersionCalculation/EffectiveBranchConfigurationFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/EffectiveBranchConfigurationFinder.cs @@ -1,6 +1,7 @@ using GitVersion.Common; using GitVersion.Configuration; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Logging; namespace GitVersion.VersionCalculation; diff --git a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs index 0cb2866c74..89860d8827 100644 --- a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs @@ -3,6 +3,7 @@ using GitVersion.Configuration; using GitVersion.Core; using GitVersion.Extensions; +using GitVersion.Git; namespace GitVersion.VersionCalculation; diff --git a/src/GitVersion.Core/VersionCalculation/SemanticVersioning/SemanticVersionWithTag.cs b/src/GitVersion.Core/VersionCalculation/SemanticVersioning/SemanticVersionWithTag.cs index 84a888cae1..823c182244 100644 --- a/src/GitVersion.Core/VersionCalculation/SemanticVersioning/SemanticVersionWithTag.cs +++ b/src/GitVersion.Core/VersionCalculation/SemanticVersioning/SemanticVersionWithTag.cs @@ -1,3 +1,5 @@ +using GitVersion.Git; + namespace GitVersion; public sealed record SemanticVersionWithTag(SemanticVersion Value, ITag Tag) : IComparable diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs index d50df2858a..02c370fb0d 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs @@ -1,5 +1,6 @@ using GitVersion.Configuration; using GitVersion.Extensions; +using GitVersion.Git; namespace GitVersion.VersionCalculation.TrunkBased; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedContext.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedContext.cs index fd11faa676..cb075db486 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedContext.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedContext.cs @@ -1,3 +1,5 @@ +using GitVersion.Git; + namespace GitVersion.VersionCalculation.TrunkBased; internal record class TrunkBasedContext diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs index b10d3d688e..6e49eba5b3 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs @@ -1,5 +1,6 @@ using GitVersion.Configuration; using GitVersion.Extensions; +using GitVersion.Git; namespace GitVersion.VersionCalculation.TrunkBased; diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeliveryVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeliveryVersionCalculator.cs index 8cd7bd2044..91098dae31 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeliveryVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeliveryVersionCalculator.cs @@ -1,4 +1,5 @@ using GitVersion.Common; +using GitVersion.Git; using GitVersion.Logging; namespace GitVersion.VersionCalculation; diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeploymentVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeploymentVersionCalculator.cs index 0808340627..eb8bcc3acc 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeploymentVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ContinuousDeploymentVersionCalculator.cs @@ -1,4 +1,5 @@ using GitVersion.Common; +using GitVersion.Git; using GitVersion.Logging; namespace GitVersion.VersionCalculation; diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ManualDeploymentVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ManualDeploymentVersionCalculator.cs index 41364db63d..537ee7b360 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/ManualDeploymentVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/ManualDeploymentVersionCalculator.cs @@ -1,4 +1,5 @@ using GitVersion.Common; +using GitVersion.Git; using GitVersion.Logging; namespace GitVersion.VersionCalculation; diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs index 4780f6b757..692b4cbc4f 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs @@ -3,6 +3,7 @@ using GitVersion.Configuration; using GitVersion.Core; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Logging; namespace GitVersion.VersionCalculation; diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/VersionCalculatorBase.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/VersionCalculatorBase.cs index 3c939332dc..a37ece76d8 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/VersionCalculatorBase.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/VersionCalculatorBase.cs @@ -1,5 +1,6 @@ using GitVersion.Common; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Logging; namespace GitVersion.VersionCalculation; diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs index 03fa295d43..55446f7ab3 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs @@ -1,5 +1,6 @@ using System.Diagnostics.CodeAnalysis; using GitVersion.Extensions; +using GitVersion.Git; namespace GitVersion.VersionCalculation; diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs index 4e3b44477b..055fbe4d7b 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs @@ -1,4 +1,5 @@ using GitVersion.Extensions; +using GitVersion.Git; namespace GitVersion.VersionCalculation; diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperator.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperator.cs index 11268c82b5..8f2708bc99 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperator.cs @@ -1,3 +1,5 @@ +using GitVersion.Git; + namespace GitVersion.VersionCalculation; public sealed record class BaseVersionOperator : IBaseVersionIncrement diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/IBaseVersionIncrement.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/IBaseVersionIncrement.cs index e22cfbd9f8..02f53b7cd1 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/IBaseVersionIncrement.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/IBaseVersionIncrement.cs @@ -1,3 +1,5 @@ +using GitVersion.Git; + namespace GitVersion.VersionCalculation; public interface IBaseVersionIncrement diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrackReleaseBranchesVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrackReleaseBranchesVersionStrategy.cs index adbe014cad..6d8ddf164f 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrackReleaseBranchesVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrackReleaseBranchesVersionStrategy.cs @@ -3,6 +3,7 @@ using GitVersion.Configuration; using GitVersion.Core; using GitVersion.Extensions; +using GitVersion.Git; namespace GitVersion.VersionCalculation; diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs index ddeb03ee84..59c69cb29c 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs @@ -3,6 +3,7 @@ using GitVersion.Configuration; using GitVersion.Core; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.VersionCalculation.TrunkBased; using GitVersion.VersionCalculation.TrunkBased.NonTrunk; using GitVersion.VersionCalculation.TrunkBased.Trunk; diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs index 976bf25122..fb4c382343 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs @@ -2,6 +2,7 @@ using GitVersion.Common; using GitVersion.Configuration; using GitVersion.Extensions; +using GitVersion.Git; namespace GitVersion.VersionCalculation; diff --git a/src/GitVersion.LibGit2Sharp/Git/Branch.cs b/src/GitVersion.LibGit2Sharp/Git/Branch.cs index 5722d5cfa9..2cbda65c0e 100644 --- a/src/GitVersion.LibGit2Sharp/Git/Branch.cs +++ b/src/GitVersion.LibGit2Sharp/Git/Branch.cs @@ -1,7 +1,7 @@ using GitVersion.Extensions; using GitVersion.Helpers; -namespace GitVersion; +namespace GitVersion.Git; internal sealed class Branch : IBranch { diff --git a/src/GitVersion.LibGit2Sharp/Git/BranchCollection.cs b/src/GitVersion.LibGit2Sharp/Git/BranchCollection.cs index 89cb27fe04..b543161bd8 100644 --- a/src/GitVersion.LibGit2Sharp/Git/BranchCollection.cs +++ b/src/GitVersion.LibGit2Sharp/Git/BranchCollection.cs @@ -1,7 +1,7 @@ using GitVersion.Extensions; using LibGit2Sharp; -namespace GitVersion; +namespace GitVersion.Git; internal sealed class BranchCollection : IBranchCollection { diff --git a/src/GitVersion.LibGit2Sharp/Git/Commit.cs b/src/GitVersion.LibGit2Sharp/Git/Commit.cs index 2aa64d2f17..f9dd9cfc06 100644 --- a/src/GitVersion.LibGit2Sharp/Git/Commit.cs +++ b/src/GitVersion.LibGit2Sharp/Git/Commit.cs @@ -1,7 +1,7 @@ using GitVersion.Extensions; using GitVersion.Helpers; -namespace GitVersion; +namespace GitVersion.Git; internal sealed class Commit : GitObject, ICommit { @@ -14,13 +14,13 @@ internal sealed class Commit : GitObject, ICommit internal Commit(LibGit2Sharp.Commit innerCommit) : base(innerCommit) { this.innerCommit = innerCommit.NotNull(); - parentsLazy = new Lazy>(() => innerCommit.Parents.Select(parent => new Commit(parent)).ToList()); + this.parentsLazy = new(() => innerCommit.Parents.Select(parent => new Commit(parent)).ToList()); When = innerCommit.Committer.When; } public int CompareTo(ICommit? other) => comparerHelper.Compare(this, other); public bool Equals(ICommit? other) => equalityHelper.Equals(this, other); - public IReadOnlyList Parents => parentsLazy.Value; + public IReadOnlyList Parents => this.parentsLazy.Value; public DateTimeOffset When { get; } public string Message => this.innerCommit.Message; public override bool Equals(object? obj) => Equals(obj as ICommit); diff --git a/src/GitVersion.LibGit2Sharp/Git/CommitCollection.cs b/src/GitVersion.LibGit2Sharp/Git/CommitCollection.cs index 94e1d49d03..08ebb91393 100644 --- a/src/GitVersion.LibGit2Sharp/Git/CommitCollection.cs +++ b/src/GitVersion.LibGit2Sharp/Git/CommitCollection.cs @@ -1,7 +1,7 @@ using GitVersion.Extensions; using LibGit2Sharp; -namespace GitVersion; +namespace GitVersion.Git; internal sealed class CommitCollection : ICommitCollection { diff --git a/src/GitVersion.LibGit2Sharp/Git/GitObject.cs b/src/GitVersion.LibGit2Sharp/Git/GitObject.cs index 16fa8ebaa9..850168393c 100644 --- a/src/GitVersion.LibGit2Sharp/Git/GitObject.cs +++ b/src/GitVersion.LibGit2Sharp/Git/GitObject.cs @@ -1,7 +1,7 @@ using GitVersion.Extensions; using GitVersion.Helpers; -namespace GitVersion; +namespace GitVersion.Git; internal class GitObject : IGitObject { diff --git a/src/GitVersion.LibGit2Sharp/Git/GitRepository.cs b/src/GitVersion.LibGit2Sharp/Git/GitRepository.cs index 71d62e7959..6662992379 100644 --- a/src/GitVersion.LibGit2Sharp/Git/GitRepository.cs +++ b/src/GitVersion.LibGit2Sharp/Git/GitRepository.cs @@ -2,7 +2,7 @@ using GitVersion.Helpers; using LibGit2Sharp; -namespace GitVersion; +namespace GitVersion.Git; internal sealed partial class GitRepository { diff --git a/src/GitVersion.LibGit2Sharp/Git/GitRepository.extended.cs b/src/GitVersion.LibGit2Sharp/Git/GitRepository.extended.cs index e13641eb56..35abc4d410 100644 --- a/src/GitVersion.LibGit2Sharp/Git/GitRepository.extended.cs +++ b/src/GitVersion.LibGit2Sharp/Git/GitRepository.extended.cs @@ -4,7 +4,7 @@ using LibGit2Sharp; using LibGit2Sharp.Handlers; -namespace GitVersion; +namespace GitVersion.Git; internal partial class GitRepository(ILog log) : IMutatingGitRepository { diff --git a/src/GitVersion.LibGit2Sharp/Git/GitRepositoryInfo.cs b/src/GitVersion.LibGit2Sharp/Git/GitRepositoryInfo.cs index 65e8aaead9..a432d51a8e 100644 --- a/src/GitVersion.LibGit2Sharp/Git/GitRepositoryInfo.cs +++ b/src/GitVersion.LibGit2Sharp/Git/GitRepositoryInfo.cs @@ -3,7 +3,7 @@ using LibGit2Sharp; using Microsoft.Extensions.Options; -namespace GitVersion; +namespace GitVersion.Git; internal class GitRepositoryInfo : IGitRepositoryInfo { diff --git a/src/GitVersion.LibGit2Sharp/Git/ObjectId.cs b/src/GitVersion.LibGit2Sharp/Git/ObjectId.cs index 243133eb6b..0d924f59af 100644 --- a/src/GitVersion.LibGit2Sharp/Git/ObjectId.cs +++ b/src/GitVersion.LibGit2Sharp/Git/ObjectId.cs @@ -1,7 +1,7 @@ using GitVersion.Extensions; using GitVersion.Helpers; -namespace GitVersion; +namespace GitVersion.Git; internal sealed class ObjectId : IObjectId { diff --git a/src/GitVersion.LibGit2Sharp/Git/RefSpec.cs b/src/GitVersion.LibGit2Sharp/Git/RefSpec.cs index 16dcca3b95..b32e388e90 100644 --- a/src/GitVersion.LibGit2Sharp/Git/RefSpec.cs +++ b/src/GitVersion.LibGit2Sharp/Git/RefSpec.cs @@ -1,7 +1,7 @@ using GitVersion.Extensions; using GitVersion.Helpers; -namespace GitVersion; +namespace GitVersion.Git; internal class RefSpec : IRefSpec { diff --git a/src/GitVersion.LibGit2Sharp/Git/RefSpecCollection.cs b/src/GitVersion.LibGit2Sharp/Git/RefSpecCollection.cs index e7ca999747..a465fcbd5d 100644 --- a/src/GitVersion.LibGit2Sharp/Git/RefSpecCollection.cs +++ b/src/GitVersion.LibGit2Sharp/Git/RefSpecCollection.cs @@ -1,6 +1,6 @@ using GitVersion.Extensions; -namespace GitVersion; +namespace GitVersion.Git; internal sealed class RefSpecCollection : IRefSpecCollection { diff --git a/src/GitVersion.LibGit2Sharp/Git/Reference.cs b/src/GitVersion.LibGit2Sharp/Git/Reference.cs index cc29b520d5..7afe5a3919 100644 --- a/src/GitVersion.LibGit2Sharp/Git/Reference.cs +++ b/src/GitVersion.LibGit2Sharp/Git/Reference.cs @@ -2,7 +2,7 @@ using GitVersion.Helpers; using LibGit2Sharp; -namespace GitVersion +namespace GitVersion.Git { internal sealed class Reference : IReference { diff --git a/src/GitVersion.LibGit2Sharp/Git/ReferenceCollection.cs b/src/GitVersion.LibGit2Sharp/Git/ReferenceCollection.cs index 2383c33980..1159dfe87a 100644 --- a/src/GitVersion.LibGit2Sharp/Git/ReferenceCollection.cs +++ b/src/GitVersion.LibGit2Sharp/Git/ReferenceCollection.cs @@ -1,6 +1,6 @@ using GitVersion.Extensions; -namespace GitVersion; +namespace GitVersion.Git; internal sealed class ReferenceCollection : IReferenceCollection { diff --git a/src/GitVersion.LibGit2Sharp/Git/Remote.cs b/src/GitVersion.LibGit2Sharp/Git/Remote.cs index 95afdf16a9..a41d7d5e80 100644 --- a/src/GitVersion.LibGit2Sharp/Git/Remote.cs +++ b/src/GitVersion.LibGit2Sharp/Git/Remote.cs @@ -1,7 +1,7 @@ using GitVersion.Extensions; using GitVersion.Helpers; -namespace GitVersion; +namespace GitVersion.Git; internal sealed class Remote : IRemote { diff --git a/src/GitVersion.LibGit2Sharp/Git/RemoteCollection.cs b/src/GitVersion.LibGit2Sharp/Git/RemoteCollection.cs index aad80d1f22..5fc8433621 100644 --- a/src/GitVersion.LibGit2Sharp/Git/RemoteCollection.cs +++ b/src/GitVersion.LibGit2Sharp/Git/RemoteCollection.cs @@ -1,6 +1,6 @@ using GitVersion.Extensions; -namespace GitVersion; +namespace GitVersion.Git; internal sealed class RemoteCollection : IRemoteCollection { diff --git a/src/GitVersion.LibGit2Sharp/Git/RepositoryExtensions.cs b/src/GitVersion.LibGit2Sharp/Git/RepositoryExtensions.cs index 2325ee1e8f..fc32d6e072 100644 --- a/src/GitVersion.LibGit2Sharp/Git/RepositoryExtensions.cs +++ b/src/GitVersion.LibGit2Sharp/Git/RepositoryExtensions.cs @@ -1,4 +1,4 @@ -namespace GitVersion; +namespace GitVersion.Git; internal static class RepositoryExtensions { diff --git a/src/GitVersion.LibGit2Sharp/Git/Tag.cs b/src/GitVersion.LibGit2Sharp/Git/Tag.cs index 477b5ad0d3..71d41570dc 100644 --- a/src/GitVersion.LibGit2Sharp/Git/Tag.cs +++ b/src/GitVersion.LibGit2Sharp/Git/Tag.cs @@ -2,27 +2,27 @@ using GitVersion.Helpers; using LibGit2Sharp; -namespace GitVersion; +namespace GitVersion.Git; internal sealed class Tag : ITag { private static readonly LambdaEqualityHelper equalityHelper = new(x => x.Name.Canonical); private static readonly LambdaKeyComparer comparerHelper = new(x => x.Name.Canonical); private readonly LibGit2Sharp.Tag innerTag; - private readonly Lazy _commitLazy; + private readonly Lazy commitLazy; internal Tag(LibGit2Sharp.Tag tag) { this.innerTag = tag.NotNull(); + this.commitLazy = new(PeeledTargetCommit); Name = new(this.innerTag.CanonicalName); - _commitLazy = new(PeeledTargetCommit); } public ReferenceName Name { get; } public int CompareTo(ITag? other) => comparerHelper.Compare(this, other); public bool Equals(ITag? other) => equalityHelper.Equals(this, other); public string TargetSha => this.innerTag.Target.Sha; - public ICommit Commit => _commitLazy.Value.NotNull(); + public ICommit Commit => this.commitLazy.Value.NotNull(); private ICommit? PeeledTargetCommit() { diff --git a/src/GitVersion.LibGit2Sharp/Git/TagCollection.cs b/src/GitVersion.LibGit2Sharp/Git/TagCollection.cs index ca81e4077f..65f5637cda 100644 --- a/src/GitVersion.LibGit2Sharp/Git/TagCollection.cs +++ b/src/GitVersion.LibGit2Sharp/Git/TagCollection.cs @@ -1,6 +1,6 @@ using GitVersion.Extensions; -namespace GitVersion; +namespace GitVersion.Git; internal sealed class TagCollection : ITagCollection { diff --git a/src/GitVersion.LibGit2Sharp/GitVersionLibGit2SharpModule.cs b/src/GitVersion.LibGit2Sharp/GitVersionLibGit2SharpModule.cs index cdb00d381f..942d60e719 100644 --- a/src/GitVersion.LibGit2Sharp/GitVersionLibGit2SharpModule.cs +++ b/src/GitVersion.LibGit2Sharp/GitVersionLibGit2SharpModule.cs @@ -1,3 +1,4 @@ +using GitVersion.Git; using GitVersion.Logging; using Microsoft.Extensions.DependencyInjection; From 6d61efad13d8a9ab43fa31f41b01476f756940ee Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 21 Mar 2024 15:49:03 +0100 Subject: [PATCH 053/544] cleanup --- .../Helpers/ProgramFixture.cs | 2 +- .../OverrideConfigurationOptionParser.cs | 2 +- .../Agents/BuildServerBaseTests.cs | 2 +- .../Agents/BuildKite.cs | 2 +- .../BranchConfiguration.cs | 4 +- .../ConfigurationBuilderBase.cs | 8 +-- .../ConfigurationHelper.cs | 2 +- .../ConfigurationSerializer.cs | 34 +++++------ .../GitVersionCacheKeyFactory.cs | 2 +- .../GitVersionConfiguration.cs | 4 +- .../IgnoreConfiguration.cs | 2 +- src/GitVersion.Core/Agents/BuildAgentBase.cs | 4 +- src/GitVersion.Core/Core/GitPreparer.cs | 40 ++++++------- .../Core/GitVersionCalculateTool.cs | 45 ++++++-------- .../Core/GitVersionContextFactory.cs | 24 ++++---- .../Core/MainlineBranchFinder.cs | 59 ++++++------------- src/GitVersion.Core/Core/MergeBaseFinder.cs | 17 ++---- src/GitVersion.Core/Core/MergeCommitFinder.cs | 20 ++----- .../Core/SourceBranchFinder.cs | 12 +--- .../Logging/ConsoleAppender.cs | 10 +--- src/GitVersion.Core/MergeMessage.cs | 8 +-- .../Options/ConfigurationInfo.cs | 2 +- src/GitVersion.Core/Options/FileWriteInfo.cs | 7 +-- src/GitVersion.Core/Options/RepositoryInfo.cs | 2 +- src/GitVersion.Core/Options/Settings.cs | 2 +- src/GitVersion.Core/Options/WixInfo.cs | 2 +- src/GitVersion.Core/PublicAPI.Unshipped.txt | 13 ++-- .../EffectiveBranchConfigurationFinder.cs | 2 +- .../IncrementStrategyFinder.cs | 2 +- .../TrunkBased/NonTrunk/CommitOnNonTrunk.cs | 2 +- .../CommitOnNonTrunkWithPreReleaseTagBase.cs | 4 +- .../NonTrunk/MergeCommitOnNonTrunkBase.cs | 2 +- .../TrunkBased/TrunkBasedCommit.cs | 2 +- .../TrunkBased/TrunkBasedContext.cs | 2 +- .../TrunkBased/TrunkBasedIteration.cs | 2 +- .../VersionSearchStrategies/BaseVersion.cs | 6 +- .../BaseVersionOperand.cs | 16 ++--- .../TrunkBasedVersionStrategy.cs | 14 ++--- .../AssemblyInfo/AssemblyInfoContext.cs | 9 +-- .../GitVersionInfo/GitVersionInfoContext.cs | 14 ++--- .../OutputGenerator/OutputContext.cs | 8 +-- .../WixUpdater/WixVersionContext.cs | 5 +- 42 files changed, 163 insertions(+), 258 deletions(-) diff --git a/src/GitVersion.App.Tests/Helpers/ProgramFixture.cs b/src/GitVersion.App.Tests/Helpers/ProgramFixture.cs index f4518a777f..1fa2d6268c 100644 --- a/src/GitVersion.App.Tests/Helpers/ProgramFixture.cs +++ b/src/GitVersion.App.Tests/Helpers/ProgramFixture.cs @@ -8,7 +8,7 @@ namespace GitVersion.App.Tests; public sealed class ProgramFixture { private readonly IEnvironment environment; - private List> Overrides { get; } = new(); + private List> Overrides { get; } = []; private readonly Lazy logger; private readonly Lazy output; diff --git a/src/GitVersion.App/OverrideConfigurationOptionParser.cs b/src/GitVersion.App/OverrideConfigurationOptionParser.cs index c258fd93d3..9b85428f71 100644 --- a/src/GitVersion.App/OverrideConfigurationOptionParser.cs +++ b/src/GitVersion.App/OverrideConfigurationOptionParser.cs @@ -4,7 +4,7 @@ namespace GitVersion; internal class OverrideConfigurationOptionParser { - private readonly Dictionary overrideConfiguration = new(); + private readonly Dictionary overrideConfiguration = []; private static readonly Lazy> _lazySupportedProperties = new(GetSupportedProperties, true); diff --git a/src/GitVersion.BuildAgents.Tests/Agents/BuildServerBaseTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/BuildServerBaseTests.cs index 1e5c220baf..9666ef0e79 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/BuildServerBaseTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/BuildServerBaseTests.cs @@ -43,7 +43,7 @@ public void BuildNumberIsFullSemVer() writes[1].ShouldBe("1.2.3-beta.1+5"); - writes = new List(); + writes = []; buildAgent.WriteIntegration(writes.Add, variables, false); writes.ShouldNotContain(x => x != null && x.StartsWith("Executing GenerateSetVersionMessage for ")); } diff --git a/src/GitVersion.BuildAgents/Agents/BuildKite.cs b/src/GitVersion.BuildAgents/Agents/BuildKite.cs index 87bc2dbc85..2b5a1bf12d 100644 --- a/src/GitVersion.BuildAgents/Agents/BuildKite.cs +++ b/src/GitVersion.BuildAgents/Agents/BuildKite.cs @@ -27,7 +27,7 @@ public override string[] GenerateSetParameterMessage(string name, string? value) // For pull requests BUILDKITE_BRANCH refers to the head, so adjust the // branch name for pull request versioning to function as expected - return string.Format("refs/pull/{0}/head", pullRequest); + return $"refs/pull/{pullRequest}/head"; } public override bool PreventFetch() => true; diff --git a/src/GitVersion.Configuration/BranchConfiguration.cs b/src/GitVersion.Configuration/BranchConfiguration.cs index a323c42e1b..a17755a3f7 100644 --- a/src/GitVersion.Configuration/BranchConfiguration.cs +++ b/src/GitVersion.Configuration/BranchConfiguration.cs @@ -53,14 +53,14 @@ internal record BranchConfiguration : IBranchConfiguration [JsonPropertyName("source-branches")] [JsonPropertyDescription("The source branches for this branch.")] - public HashSet SourceBranches { get; internal set; } = new(); + public HashSet SourceBranches { get; internal set; } = []; [JsonIgnore] IReadOnlyCollection IBranchConfiguration.SourceBranches => SourceBranches; [JsonPropertyName("is-source-branch-for")] [JsonPropertyDescription("The branches that this branch is a source branch.")] - public HashSet IsSourceBranchFor { get; internal set; } = new(); + public HashSet IsSourceBranchFor { get; internal set; } = []; [JsonIgnore] IReadOnlyCollection IBranchConfiguration.IsSourceBranchFor => IsSourceBranchFor; diff --git a/src/GitVersion.Configuration/ConfigurationBuilderBase.cs b/src/GitVersion.Configuration/ConfigurationBuilderBase.cs index 6503ce0991..bef65714d7 100644 --- a/src/GitVersion.Configuration/ConfigurationBuilderBase.cs +++ b/src/GitVersion.Configuration/ConfigurationBuilderBase.cs @@ -25,9 +25,9 @@ internal abstract class ConfigurationBuilderBase : IConfi private bool updateBuildNumber; private SemanticVersionFormat semanticVersionFormat; private VersionStrategies[] versionStrategies; - private Dictionary mergeMessageFormats = new(); - private readonly List> overrides = new(); - private readonly Dictionary branchConfigurationBuilders = new(); + private Dictionary mergeMessageFormats = []; + private readonly List> overrides = []; + private readonly Dictionary branchConfigurationBuilders = []; private DeploymentMode? versioningMode; private string? label; private IncrementStrategy increment = IncrementStrategy.Inherit; @@ -384,7 +384,7 @@ public void AddOverride(IReadOnlyDictionary value) public virtual IGitVersionConfiguration Build() { - Dictionary branches = new(); + Dictionary branches = []; foreach (var (name, branchConfigurationBuilder) in this.branchConfigurationBuilders) { branches.Add(name, (BranchConfiguration)branchConfigurationBuilder.Build()); diff --git a/src/GitVersion.Configuration/ConfigurationHelper.cs b/src/GitVersion.Configuration/ConfigurationHelper.cs index a7a82f4536..4354e2907c 100644 --- a/src/GitVersion.Configuration/ConfigurationHelper.cs +++ b/src/GitVersion.Configuration/ConfigurationHelper.cs @@ -72,7 +72,7 @@ private static void Merge(IDictionary dictionary, IReadOnlyDict { if (!dictionary.ContainsKey(item.Key)) { - Dictionary anotherDictionaryValue = new(); + Dictionary anotherDictionaryValue = []; Merge(anotherDictionaryValue, dictionaryValue); dictionary.Add(item.Key, anotherDictionaryValue); } diff --git a/src/GitVersion.Configuration/ConfigurationSerializer.cs b/src/GitVersion.Configuration/ConfigurationSerializer.cs index bec88eac52..bd7db25834 100644 --- a/src/GitVersion.Configuration/ConfigurationSerializer.cs +++ b/src/GitVersion.Configuration/ConfigurationSerializer.cs @@ -28,23 +28,23 @@ public static IGitVersionConfiguration Read(TextReader reader) public static void Write(IGitVersionConfiguration configuration, TextWriter writer) => Serializer.Serialize(writer, configuration); -} -internal sealed class JsonPropertyNameInspector(ITypeInspector innerTypeDescriptor) : TypeInspectorSkeleton -{ - public override IEnumerable GetProperties(Type type, object? container) => - innerTypeDescriptor.GetProperties(type, container) - .Where(p => p.GetCustomAttribute() == null) - .Select(p => - { - var descriptor = new PropertyDescriptor(p); - var member = p.GetCustomAttribute(); - if (member is { Name: not null }) + private sealed class JsonPropertyNameInspector(ITypeInspector innerTypeDescriptor) : TypeInspectorSkeleton + { + public override IEnumerable GetProperties(Type type, object? container) => + innerTypeDescriptor.GetProperties(type, container) + .Where(p => p.GetCustomAttribute() == null) + .Select(p => { - descriptor.Name = member.Name; - } - - return (IPropertyDescriptor)descriptor; - }) - .OrderBy(p => p.Order); + var descriptor = new PropertyDescriptor(p); + var member = p.GetCustomAttribute(); + if (member is { Name: not null }) + { + descriptor.Name = member.Name; + } + + return (IPropertyDescriptor)descriptor; + }) + .OrderBy(p => p.Order); + } } diff --git a/src/GitVersion.Configuration/GitVersionCacheKeyFactory.cs b/src/GitVersion.Configuration/GitVersionCacheKeyFactory.cs index 4bce1c1c2f..a8848e3271 100644 --- a/src/GitVersion.Configuration/GitVersionCacheKeyFactory.cs +++ b/src/GitVersion.Configuration/GitVersionCacheKeyFactory.cs @@ -32,7 +32,7 @@ public GitVersionCacheKey Create(IReadOnlyDictionary? overrideC var overrideConfigHash = GetOverrideConfigHash(overrideConfiguration); var compositeHash = GetHash(gitSystemHash, configFileHash, repositorySnapshotHash, overrideConfigHash); - return new GitVersionCacheKey(compositeHash); + return new(compositeHash); } private string GetGitSystemHash() diff --git a/src/GitVersion.Configuration/GitVersionConfiguration.cs b/src/GitVersion.Configuration/GitVersionConfiguration.cs index 2ab0c5f57d..7c1bd59179 100644 --- a/src/GitVersion.Configuration/GitVersionConfiguration.cs +++ b/src/GitVersion.Configuration/GitVersionConfiguration.cs @@ -109,7 +109,7 @@ public string? NextVersion [JsonPropertyName("merge-message-formats")] [JsonPropertyDescription("Custom merge message formats to enable identification of merge messages that do not follow the built-in conventions.")] - public Dictionary MergeMessageFormats { get; internal set; } = new(); + public Dictionary MergeMessageFormats { get; internal set; } = []; [JsonIgnore] IReadOnlyDictionary IGitVersionConfiguration.MergeMessageFormats => MergeMessageFormats; @@ -138,7 +138,7 @@ IReadOnlyDictionary IGitVersionConfiguration.Branc [JsonPropertyName("branches")] [JsonPropertyDescription("The header for all the individual branch configuration.")] - public Dictionary Branches { get; internal set; } = new(); + public Dictionary Branches { get; internal set; } = []; [JsonIgnore] IIgnoreConfiguration IGitVersionConfiguration.Ignore => Ignore; diff --git a/src/GitVersion.Configuration/IgnoreConfiguration.cs b/src/GitVersion.Configuration/IgnoreConfiguration.cs index 00d4df88ec..35ba62adc7 100644 --- a/src/GitVersion.Configuration/IgnoreConfiguration.cs +++ b/src/GitVersion.Configuration/IgnoreConfiguration.cs @@ -21,5 +21,5 @@ public string? BeforeString [JsonPropertyName("sha")] [JsonPropertyDescription("A sequence of SHAs to be excluded from the version calculations.")] - public HashSet Shas { get; init; } = new(); + public HashSet Shas { get; init; } = []; } diff --git a/src/GitVersion.Core/Agents/BuildAgentBase.cs b/src/GitVersion.Core/Agents/BuildAgentBase.cs index fdd38d0cc8..29840605bb 100644 --- a/src/GitVersion.Core/Agents/BuildAgentBase.cs +++ b/src/GitVersion.Core/Agents/BuildAgentBase.cs @@ -6,8 +6,8 @@ namespace GitVersion.Agents; internal abstract class BuildAgentBase(IEnvironment environment, ILog log) : ICurrentBuildAgent { - protected readonly ILog Log = log; - protected IEnvironment Environment { get; } = environment; + protected readonly ILog Log = log.NotNull(); + protected IEnvironment Environment { get; } = environment.NotNull(); protected abstract string EnvironmentVariable { get; } public virtual bool IsDefault => false; diff --git a/src/GitVersion.Core/Core/GitPreparer.cs b/src/GitVersion.Core/Core/GitPreparer.cs index c761c1518b..e33d236d4d 100644 --- a/src/GitVersion.Core/Core/GitPreparer.cs +++ b/src/GitVersion.Core/Core/GitPreparer.cs @@ -8,30 +8,26 @@ namespace GitVersion; -internal class GitPreparer : IGitPreparer +internal class GitPreparer( + ILog log, + IEnvironment environment, + ICurrentBuildAgent buildAgent, + IOptions options, + IMutatingGitRepository repository, + IGitRepositoryInfo repositoryInfo, + Lazy versionContext) + : IGitPreparer { - private readonly ILog log; - private readonly IEnvironment environment; - private readonly IMutatingGitRepository repository; - private readonly IOptions options; - private readonly IGitRepositoryInfo repositoryInfo; - private readonly ICurrentBuildAgent buildAgent; - private readonly RetryAction retryAction; - private readonly Lazy versionContext; - private const string DefaultRemoteName = "origin"; + private readonly ILog log = log.NotNull(); + private readonly IEnvironment environment = environment.NotNull(); + private readonly IMutatingGitRepository repository = repository.NotNull(); + private readonly IOptions options = options.NotNull(); + private readonly IGitRepositoryInfo repositoryInfo = repositoryInfo.NotNull(); + private readonly ICurrentBuildAgent buildAgent = buildAgent.NotNull(); + private readonly RetryAction retryAction = new(); + private readonly Lazy versionContext = versionContext.NotNull(); - public GitPreparer(ILog log, IEnvironment environment, ICurrentBuildAgent buildAgent, IOptions options, - IMutatingGitRepository repository, IGitRepositoryInfo repositoryInfo, Lazy versionContext) - { - this.log = log.NotNull(); - this.environment = environment.NotNull(); - this.repository = repository.NotNull(); - this.options = options.NotNull(); - this.repositoryInfo = repositoryInfo.NotNull(); - this.buildAgent = buildAgent.NotNull(); - this.retryAction = new(); - this.versionContext = versionContext.NotNull(); - } + private const string DefaultRemoteName = "origin"; public void Prepare() { diff --git a/src/GitVersion.Core/Core/GitVersionCalculateTool.cs b/src/GitVersion.Core/Core/GitVersionCalculateTool.cs index 53331f05ae..b999bdf379 100644 --- a/src/GitVersion.Core/Core/GitVersionCalculateTool.cs +++ b/src/GitVersion.Core/Core/GitVersionCalculateTool.cs @@ -9,38 +9,29 @@ namespace GitVersion; -internal class GitVersionCalculateTool : IGitVersionCalculateTool +internal class GitVersionCalculateTool( + ILog log, + INextVersionCalculator nextVersionCalculator, + IVariableProvider variableProvider, + IGitPreparer gitPreparer, + IGitVersionCache gitVersionCache, + IGitVersionCacheKeyFactory cacheKeyFactory, + IOptions options, + Lazy versionContext) + : IGitVersionCalculateTool { - private readonly ILog log; - private readonly IGitVersionCache gitVersionCache; - private readonly INextVersionCalculator nextVersionCalculator; - private readonly IVariableProvider variableProvider; - private readonly IGitPreparer gitPreparer; - private readonly IGitVersionCacheKeyFactory cacheKeyFactory; + private readonly ILog log = log.NotNull(); + private readonly IGitVersionCache gitVersionCache = gitVersionCache.NotNull(); + private readonly INextVersionCalculator nextVersionCalculator = nextVersionCalculator.NotNull(); + private readonly IVariableProvider variableProvider = variableProvider.NotNull(); + private readonly IGitPreparer gitPreparer = gitPreparer.NotNull(); + private readonly IGitVersionCacheKeyFactory cacheKeyFactory = cacheKeyFactory.NotNull(); - private readonly IOptions options; - private readonly Lazy versionContext; + private readonly IOptions options = options.NotNull(); + private readonly Lazy versionContext = versionContext.NotNull(); private GitVersionContext Context => this.versionContext.Value; - public GitVersionCalculateTool(ILog log, INextVersionCalculator nextVersionCalculator, - IVariableProvider variableProvider, IGitPreparer gitPreparer, - IGitVersionCache gitVersionCache, IGitVersionCacheKeyFactory cacheKeyFactory, - IOptions options, Lazy versionContext) - { - this.log = log.NotNull(); - - this.nextVersionCalculator = nextVersionCalculator.NotNull(); - this.variableProvider = variableProvider.NotNull(); - this.gitPreparer = gitPreparer.NotNull(); - - this.cacheKeyFactory = cacheKeyFactory.NotNull(); - this.gitVersionCache = gitVersionCache.NotNull(); - - this.options = options.NotNull(); - this.versionContext = versionContext.NotNull(); - } - public GitVersionVariables CalculateVersionVariables() { this.gitPreparer.Prepare(); //we need to prepare the repository before using it for version calculation diff --git a/src/GitVersion.Core/Core/GitVersionContextFactory.cs b/src/GitVersion.Core/Core/GitVersionContextFactory.cs index 46a60faf7c..b4a17d25d1 100644 --- a/src/GitVersion.Core/Core/GitVersionContextFactory.cs +++ b/src/GitVersion.Core/Core/GitVersionContextFactory.cs @@ -6,21 +6,17 @@ namespace GitVersion; -internal class GitVersionContextFactory : IGitVersionContextFactory +internal class GitVersionContextFactory( + IConfigurationProvider configurationProvider, + IRepositoryStore repositoryStore, + ITaggedSemanticVersionRepository taggedSemanticVersionRepository, + IOptions options) + : IGitVersionContextFactory { - private readonly IConfigurationProvider configurationProvider; - private readonly IRepositoryStore repositoryStore; - private readonly ITaggedSemanticVersionRepository taggedSemanticVersionRepository; - private readonly IOptions options; - - public GitVersionContextFactory(IConfigurationProvider configurationProvider, IRepositoryStore repositoryStore, - ITaggedSemanticVersionRepository taggedSemanticVersionRepository, IOptions options) - { - this.configurationProvider = configurationProvider.NotNull(); - this.repositoryStore = repositoryStore.NotNull(); - this.taggedSemanticVersionRepository = taggedSemanticVersionRepository.NotNull(); - this.options = options.NotNull(); - } + private readonly IConfigurationProvider configurationProvider = configurationProvider.NotNull(); + private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); + private readonly ITaggedSemanticVersionRepository taggedSemanticVersionRepository = taggedSemanticVersionRepository.NotNull(); + private readonly IOptions options = options.NotNull(); public GitVersionContext Create(GitVersionOptions gitVersionOptions) { diff --git a/src/GitVersion.Core/Core/MainlineBranchFinder.cs b/src/GitVersion.Core/Core/MainlineBranchFinder.cs index 31d4f3ad89..7d7521e0e2 100644 --- a/src/GitVersion.Core/Core/MainlineBranchFinder.cs +++ b/src/GitVersion.Core/Core/MainlineBranchFinder.cs @@ -7,25 +7,18 @@ namespace GitVersion; -internal class MainlineBranchFinder +internal class MainlineBranchFinder( + IRepositoryStore repositoryStore, + IGitRepository repository, + IGitVersionConfiguration configuration, + ILog log) { - private readonly IGitVersionConfiguration configuration; - private readonly ILog log; - private readonly List mainlineBranchConfigurations; - private readonly IGitRepository repository; - private readonly IRepositoryStore repositoryStore; - - public MainlineBranchFinder(IRepositoryStore repositoryStore, - IGitRepository repository, - IGitVersionConfiguration configuration, - ILog log) - { - this.repositoryStore = repositoryStore.NotNull(); - this.repository = repository.NotNull(); - this.configuration = configuration.NotNull(); - mainlineBranchConfigurations = configuration.Branches.Select(e => e.Value).Where(b => b.IsMainBranch == true).ToList(); - this.log = log.NotNull(); - } + private readonly IGitVersionConfiguration configuration = configuration.NotNull(); + private readonly ILog log = log.NotNull(); + private readonly IGitRepository repository = repository.NotNull(); + private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); + private readonly List mainlineBranchConfigurations = + configuration.Branches.Select(e => e.Value).Where(b => b.IsMainBranch == true).ToList(); public IDictionary> FindMainlineBranches(ICommit commit) { @@ -44,16 +37,10 @@ private bool IsMainBranch(INamedReference branch) return this.mainlineBranchConfigurations.Any(matcher.IsMainBranch); } - private class MainlineConfigBranchMatcher + private class MainlineConfigBranchMatcher(INamedReference branch, ILog log) { - private readonly INamedReference branch; - private readonly ILog log; - - public MainlineConfigBranchMatcher(INamedReference branch, ILog log) - { - this.branch = branch; - this.log = log; - } + private readonly INamedReference branch = branch.NotNull(); + private readonly ILog log = log.NotNull(); public bool IsMainBranch(IBranchConfiguration value) { @@ -68,20 +55,12 @@ public bool IsMainBranch(IBranchConfiguration value) } } - private class BranchOriginFinder + private class BranchOriginFinder(ICommit commit, IRepositoryStore repositoryStore, IGitVersionConfiguration configuration, ILog log) { - private readonly ICommit commit; - private readonly IGitVersionConfiguration configuration; - private readonly ILog log; - private readonly IRepositoryStore repositoryStore; - - public BranchOriginFinder(ICommit commit, IRepositoryStore repositoryStore, IGitVersionConfiguration configuration, ILog log) - { - this.repositoryStore = repositoryStore; - this.commit = commit; - this.configuration = configuration; - this.log = log; - } + private readonly ICommit commit = commit.NotNull(); + private readonly IGitVersionConfiguration configuration = configuration.NotNull(); + private readonly ILog log = log.NotNull(); + private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); public BranchCommit BranchOrigin(IBranch branch) { diff --git a/src/GitVersion.Core/Core/MergeBaseFinder.cs b/src/GitVersion.Core/Core/MergeBaseFinder.cs index ceedd5e5d9..36f0ca1329 100644 --- a/src/GitVersion.Core/Core/MergeBaseFinder.cs +++ b/src/GitVersion.Core/Core/MergeBaseFinder.cs @@ -5,19 +5,12 @@ namespace GitVersion; -internal class MergeBaseFinder +internal class MergeBaseFinder(IRepositoryStore repositoryStore, IGitRepository gitRepository, ILog log) { - private readonly ILog log; - private readonly Dictionary, ICommit> mergeBaseCache = new(); - private readonly IGitRepository repository; - private readonly IRepositoryStore repositoryStore; - - public MergeBaseFinder(IRepositoryStore repositoryStore, IGitRepository gitRepository, ILog log) - { - this.repositoryStore = repositoryStore.NotNull(); - this.repository = gitRepository.NotNull(); - this.log = log.NotNull(); - } + private readonly ILog log = log.NotNull(); + private readonly IGitRepository repository = gitRepository.NotNull(); + private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); + private readonly Dictionary, ICommit> mergeBaseCache = []; public ICommit? FindMergeBaseOf(IBranch? first, IBranch? second) { diff --git a/src/GitVersion.Core/Core/MergeCommitFinder.cs b/src/GitVersion.Core/Core/MergeCommitFinder.cs index d3940d63fd..1a5a42e3c8 100644 --- a/src/GitVersion.Core/Core/MergeCommitFinder.cs +++ b/src/GitVersion.Core/Core/MergeCommitFinder.cs @@ -5,21 +5,13 @@ namespace GitVersion; -internal class MergeCommitFinder +internal class MergeCommitFinder(RepositoryStore repositoryStore, IGitVersionConfiguration configuration, IEnumerable excludedBranches, ILog log) { - private readonly IEnumerable branches; - private readonly ILog log; - private readonly Dictionary> mergeBaseCommitsCache = new(); - private readonly RepositoryStore repositoryStore; - private readonly IGitVersionConfiguration configuration; - - public MergeCommitFinder(RepositoryStore repositoryStore, IGitVersionConfiguration configuration, IEnumerable excludedBranches, ILog log) - { - this.repositoryStore = repositoryStore.NotNull(); - this.configuration = configuration.NotNull(); - this.branches = repositoryStore.ExcludingBranches(excludedBranches.NotNull()); - this.log = log.NotNull(); - } + private readonly ILog log = log.NotNull(); + private readonly IEnumerable branches = repositoryStore.ExcludingBranches(excludedBranches.NotNull()); + private readonly RepositoryStore repositoryStore = repositoryStore.NotNull(); + private readonly IGitVersionConfiguration configuration = configuration.NotNull(); + private readonly Dictionary> mergeBaseCommitsCache = []; public IEnumerable FindMergeCommitsFor(IBranch branch) { diff --git a/src/GitVersion.Core/Core/SourceBranchFinder.cs b/src/GitVersion.Core/Core/SourceBranchFinder.cs index 3dfcaf3625..98dc0491c0 100644 --- a/src/GitVersion.Core/Core/SourceBranchFinder.cs +++ b/src/GitVersion.Core/Core/SourceBranchFinder.cs @@ -5,16 +5,10 @@ namespace GitVersion; -internal class SourceBranchFinder +internal class SourceBranchFinder(IEnumerable excludedBranches, IGitVersionConfiguration configuration) { - private readonly IGitVersionConfiguration configuration; - private readonly IEnumerable excludedBranches; - - public SourceBranchFinder(IEnumerable excludedBranches, IGitVersionConfiguration configuration) - { - this.excludedBranches = excludedBranches.NotNull(); - this.configuration = configuration.NotNull(); - } + private readonly IGitVersionConfiguration configuration = configuration.NotNull(); + private readonly IEnumerable excludedBranches = excludedBranches.NotNull(); public IEnumerable FindSourceBranchesOf(IBranch branch) { diff --git a/src/GitVersion.Core/Logging/ConsoleAppender.cs b/src/GitVersion.Core/Logging/ConsoleAppender.cs index 1a3f8f6190..13d424ae07 100644 --- a/src/GitVersion.Core/Logging/ConsoleAppender.cs +++ b/src/GitVersion.Core/Logging/ConsoleAppender.cs @@ -2,13 +2,9 @@ namespace GitVersion.Logging; internal class ConsoleAppender : ILogAppender { - private readonly object locker; - private readonly IDictionary palettes; - public ConsoleAppender() - { - this.locker = new(); - this.palettes = CreatePalette(); - } + private readonly object locker = new(); + private readonly IDictionary palettes = CreatePalette(); + public void WriteTo(LogLevel level, string message) { lock (this.locker) diff --git a/src/GitVersion.Core/MergeMessage.cs b/src/GitVersion.Core/MergeMessage.cs index 43a4a66c75..d1d808ce6c 100644 --- a/src/GitVersion.Core/MergeMessage.cs +++ b/src/GitVersion.Core/MergeMessage.cs @@ -8,17 +8,17 @@ namespace GitVersion; public class MergeMessage { - private static readonly IList DefaultFormats = new List - { + private static readonly IList DefaultFormats = + [ new("Default", @"^Merge (branch|tag) '(?[^']*)'(?: into (?[^\s]*))*"), - new("SmartGit", @"^Finish (?[^\s]*)(?: into (?[^\s]*))*"), + new("SmartGit", @"^Finish (?[^\s]*)(?: into (?[^\s]*))*"), new("BitBucketPull", @"^Merge pull request #(?\d+) (from|in) (?.*) from (?[^\s]*) to (?[^\s]*)"), new("BitBucketPullv7", @"^Pull request #(?\d+).*\r?\n\r?\nMerge in (?.*) from (?[^\s]*) to (?[^\s]*)"), new("BitBucketCloudPull", @"^Merged in (?[^\s]*) \(pull request #(?\d+)\)"), new("GitHubPull", @"^Merge pull request #(?\d+) (from|in) (?:[^\s\/]+\/)?(?[^\s]*)(?: into (?[^\s]*))*"), new("RemoteTracking", @"^Merge remote-tracking branch '(?[^\s]*)'(?: into (?[^\s]*))*"), new("AzureDevOpsPull", @"^Merge pull request (?\d+) from (?[^\s]*) into (?[^\s]*)") - }; + ]; public MergeMessage(string mergeMessage, IGitVersionConfiguration configuration) { diff --git a/src/GitVersion.Core/Options/ConfigurationInfo.cs b/src/GitVersion.Core/Options/ConfigurationInfo.cs index 10e667f265..a7e19756de 100644 --- a/src/GitVersion.Core/Options/ConfigurationInfo.cs +++ b/src/GitVersion.Core/Options/ConfigurationInfo.cs @@ -1,6 +1,6 @@ namespace GitVersion; -public class ConfigurationInfo +public record ConfigurationInfo { public string? ConfigurationFile; public bool ShowConfiguration; diff --git a/src/GitVersion.Core/Options/FileWriteInfo.cs b/src/GitVersion.Core/Options/FileWriteInfo.cs index 0c2a9fbcbf..7a81b8b411 100644 --- a/src/GitVersion.Core/Options/FileWriteInfo.cs +++ b/src/GitVersion.Core/Options/FileWriteInfo.cs @@ -1,8 +1,3 @@ namespace GitVersion; -public sealed class FileWriteInfo(string workingDirectory, string fileName, string fileExtension) -{ - public string WorkingDirectory { get; } = workingDirectory; - public string FileName { get; } = fileName; - public string FileExtension { get; } = fileExtension; -} +public sealed record FileWriteInfo(string WorkingDirectory, string FileName, string FileExtension); diff --git a/src/GitVersion.Core/Options/RepositoryInfo.cs b/src/GitVersion.Core/Options/RepositoryInfo.cs index bc0991236e..4551ff8e11 100644 --- a/src/GitVersion.Core/Options/RepositoryInfo.cs +++ b/src/GitVersion.Core/Options/RepositoryInfo.cs @@ -1,6 +1,6 @@ namespace GitVersion; -public class RepositoryInfo +public record RepositoryInfo { public string? TargetUrl; public string? TargetBranch; diff --git a/src/GitVersion.Core/Options/Settings.cs b/src/GitVersion.Core/Options/Settings.cs index 22b198edc3..58ded50c19 100644 --- a/src/GitVersion.Core/Options/Settings.cs +++ b/src/GitVersion.Core/Options/Settings.cs @@ -1,6 +1,6 @@ namespace GitVersion; -public class Settings +public record Settings { public bool NoFetch; public bool NoCache; diff --git a/src/GitVersion.Core/Options/WixInfo.cs b/src/GitVersion.Core/Options/WixInfo.cs index 8680dca39a..8fa95b2851 100644 --- a/src/GitVersion.Core/Options/WixInfo.cs +++ b/src/GitVersion.Core/Options/WixInfo.cs @@ -1,6 +1,6 @@ namespace GitVersion; -public class WixInfo +public record WixInfo { public bool UpdateWixVersionFile; } diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 7f4fcd4129..c59705e026 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -184,7 +184,6 @@ GitVersion.Configuration.IPreventIncrementConfiguration.WhenBranchMerged.get -> GitVersion.Configuration.IPreventIncrementConfiguration.WhenCurrentCommitTagged.get -> bool? GitVersion.ConfigurationInfo GitVersion.ConfigurationInfo.ConfigurationFile -> string? -GitVersion.ConfigurationInfo.ConfigurationInfo() -> void GitVersion.ConfigurationInfo.OverrideConfiguration -> System.Collections.Generic.IReadOnlyDictionary? GitVersion.ConfigurationInfo.ShowConfiguration -> bool GitVersion.Extensions.AssemblyVersionsGeneratorExtensions @@ -198,9 +197,12 @@ GitVersion.Extensions.ServiceCollectionExtensions GitVersion.Extensions.StringExtensions GitVersion.FileWriteInfo GitVersion.FileWriteInfo.FileExtension.get -> string! +GitVersion.FileWriteInfo.FileExtension.init -> void GitVersion.FileWriteInfo.FileName.get -> string! -GitVersion.FileWriteInfo.FileWriteInfo(string! workingDirectory, string! fileName, string! fileExtension) -> void +GitVersion.FileWriteInfo.FileName.init -> void +GitVersion.FileWriteInfo.FileWriteInfo(string! WorkingDirectory, string! FileName, string! FileExtension) -> void GitVersion.FileWriteInfo.WorkingDirectory.get -> string! +GitVersion.FileWriteInfo.WorkingDirectory.init -> void GitVersion.Git.AuthenticationInfo GitVersion.Git.AuthenticationInfo.Password.get -> string? GitVersion.Git.AuthenticationInfo.Password.set -> void @@ -531,7 +533,6 @@ GitVersion.OutputVariables.IVersionVariableSerializer.ToJson(GitVersion.OutputVa GitVersion.RepositoryInfo GitVersion.RepositoryInfo.ClonePath -> string? GitVersion.RepositoryInfo.CommitId -> string? -GitVersion.RepositoryInfo.RepositoryInfo() -> void GitVersion.RepositoryInfo.TargetBranch -> string? GitVersion.RepositoryInfo.TargetUrl -> string? GitVersion.SemanticVersion @@ -650,10 +651,9 @@ GitVersion.Settings.NoCache -> bool GitVersion.Settings.NoFetch -> bool GitVersion.Settings.NoNormalize -> bool GitVersion.Settings.OnlyTrackedBranches -> bool -GitVersion.Settings.Settings() -> void GitVersion.VersionCalculation.BaseVersion GitVersion.VersionCalculation.BaseVersion.BaseVersion() -> void -GitVersion.VersionCalculation.BaseVersion.BaseVersion(GitVersion.VersionCalculation.BaseVersionOperand! baseVersionOperand) -> void +GitVersion.VersionCalculation.BaseVersion.BaseVersion(GitVersion.VersionCalculation.BaseVersionOperand! Operand) -> void GitVersion.VersionCalculation.BaseVersion.BaseVersion(string! source, GitVersion.SemanticVersion! semanticVersion, GitVersion.Git.ICommit? baseVersionSource = null) -> void GitVersion.VersionCalculation.BaseVersion.BaseVersionSource.get -> GitVersion.Git.ICommit? GitVersion.VersionCalculation.BaseVersion.GetIncrementedVersion() -> GitVersion.SemanticVersion! @@ -666,7 +666,7 @@ GitVersion.VersionCalculation.BaseVersion.ShouldIncrement.get -> bool GitVersion.VersionCalculation.BaseVersion.Source.get -> string! GitVersion.VersionCalculation.BaseVersionOperand GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionOperand() -> void -GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionOperand(string! source, GitVersion.SemanticVersion! semanticVersion, GitVersion.Git.ICommit? baseVersionSource = null) -> void +GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionOperand(string! Source, GitVersion.SemanticVersion! SemanticVersion, GitVersion.Git.ICommit? BaseVersionSource = null) -> void GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionSource.get -> GitVersion.Git.ICommit? GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionSource.init -> void GitVersion.VersionCalculation.BaseVersionOperand.SemanticVersion.get -> GitVersion.SemanticVersion! @@ -757,7 +757,6 @@ GitVersion.WarningException.WarningException(string! message) -> void GitVersion.WarningException.WarningException(string? message, System.Exception? innerException) -> void GitVersion.WixInfo GitVersion.WixInfo.UpdateWixVersionFile -> bool -GitVersion.WixInfo.WixInfo() -> void override GitVersion.Git.BranchCommit.Equals(object? obj) -> bool override GitVersion.Git.BranchCommit.GetHashCode() -> int override GitVersion.Git.ReferenceName.Equals(object? obj) -> bool diff --git a/src/GitVersion.Core/VersionCalculation/EffectiveBranchConfigurationFinder.cs b/src/GitVersion.Core/VersionCalculation/EffectiveBranchConfigurationFinder.cs index a8307b06b1..561ddf7b80 100644 --- a/src/GitVersion.Core/VersionCalculation/EffectiveBranchConfigurationFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/EffectiveBranchConfigurationFinder.cs @@ -16,7 +16,7 @@ public virtual IEnumerable GetConfigurations(IBran branch.NotNull(); configuration.NotNull(); - return GetEffectiveConfigurationsRecursive(branch, configuration, null, new()); + return GetEffectiveConfigurationsRecursive(branch, configuration, null, []); } private IEnumerable GetEffectiveConfigurationsRecursive( diff --git a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs index 89860d8827..c22d218a5f 100644 --- a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs @@ -132,7 +132,7 @@ private IReadOnlyCollection GetCommitHistory(string? tagPrefix, Semanti var parentCommits = intermediateCommit.Parents.ToList(); while (parentCommits.Count != 0) { - List temporaryList = new(); + List temporaryList = []; foreach (var parentCommit in parentCommits) { if (commitLog.Remove(parentCommit.Sha)) diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs index 3cef15ea2d..ea937bec17 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs @@ -11,7 +11,7 @@ internal sealed class CommitOnNonTrunk : ITrunkBasedIncrementer // A 58 minutes ago public bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => !commit.HasChildIteration && !commit.Configuration.IsMainBranch && context.SemanticVersion is null; + => commit is { HasChildIteration: false, Configuration.IsMainBranch: false } && context.SemanticVersion is null; public IEnumerable GetIncrements( TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs index 221ab555eb..ed39b3c745 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs @@ -6,8 +6,8 @@ namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; internal abstract class CommitOnNonTrunkWithPreReleaseTagBase : ITrunkBasedIncrementer { public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => !commit.HasChildIteration && !commit.Configuration.IsMainBranch - && context.SemanticVersion?.IsPreRelease == true; + => commit is { HasChildIteration: false, Configuration.IsMainBranch: false } + && context.SemanticVersion?.IsPreRelease == true; public virtual IEnumerable GetIncrements( TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs index d0458f98e3..e09a8308f0 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs @@ -5,7 +5,7 @@ namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; internal abstract class MergeCommitOnNonTrunkBase : ITrunkBasedIncrementer { public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => commit.HasChildIteration && !commit.Configuration.IsMainBranch && context.SemanticVersion is null; + => commit is { HasChildIteration: true, Configuration.IsMainBranch: false } && context.SemanticVersion is null; public virtual IEnumerable GetIncrements( TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs index 02c370fb0d..31d139af01 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs @@ -9,7 +9,7 @@ namespace GitVersion.VersionCalculation.TrunkBased; "HasSuccessor = {" + nameof(HasSuccessor) + "}, HasPredecessor = {" + nameof(HasPredecessor) + "}, " + "HasChildIteration = {" + nameof(HasChildIteration) + "}, Message = {" + nameof(Message) + @"} \}" )] -internal record class TrunkBasedCommit(TrunkBasedIteration Iteration, ICommit Value, ReferenceName BranchName, EffectiveConfiguration Configuration, VersionField Increment) +internal record TrunkBasedCommit(TrunkBasedIteration Iteration, ICommit Value, ReferenceName BranchName, EffectiveConfiguration Configuration, VersionField Increment) { public bool IsPredecessorTheLastCommitOnTrunk => !Configuration.IsMainBranch && Predecessor?.Configuration.IsMainBranch == true; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedContext.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedContext.cs index cb075db486..8386762d05 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedContext.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedContext.cs @@ -2,7 +2,7 @@ namespace GitVersion.VersionCalculation.TrunkBased; -internal record class TrunkBasedContext +internal record TrunkBasedContext { public string? TargetLabel { get; init; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs index 6e49eba5b3..b8ec6f9673 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs @@ -7,7 +7,7 @@ namespace GitVersion.VersionCalculation.TrunkBased; [DebuggerDisplay( @"\{ Id = {" + nameof(Id) + "}, BranchName = {" + nameof(BranchName) + "}, Depth = {" + nameof(Depth) + "}, NumberOfCommits = {" + nameof(NumberOfCommits) + "}" + @"} \}" )] -internal record class TrunkBasedIteration +internal record TrunkBasedIteration { public EffectiveConfiguration Configuration { get; } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs index 55446f7ab3..0d32d3dd48 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs @@ -4,7 +4,7 @@ namespace GitVersion.VersionCalculation; -public sealed record class BaseVersion : IBaseVersion +public sealed record BaseVersion(BaseVersionOperand Operand) : IBaseVersion { public BaseVersion() : this(new BaseVersionOperand()) { @@ -15,8 +15,6 @@ public BaseVersion(string source, SemanticVersion semanticVersion, ICommit? base { } - public BaseVersion(BaseVersionOperand baseVersionOperand) => Operand = baseVersionOperand.NotNull(); - public string Source => (Operator?.Source).IsNullOrEmpty() ? Operand.Source : Operator.Source; public SemanticVersion SemanticVersion => Operand.SemanticVersion; @@ -26,7 +24,7 @@ public BaseVersion(string source, SemanticVersion semanticVersion, ICommit? base [MemberNotNullWhen(true, nameof(Operator))] public bool ShouldIncrement => Operator is not null; - public BaseVersionOperand Operand { get; init; } + public BaseVersionOperand Operand { get; init; } = Operand.NotNull(); public BaseVersionOperator? Operator { get; init; } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs index 055fbe4d7b..0a963bb947 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs @@ -3,22 +3,14 @@ namespace GitVersion.VersionCalculation; -public sealed record class BaseVersionOperand : IBaseVersionIncrement +public sealed record BaseVersionOperand(string Source, SemanticVersion SemanticVersion, ICommit? BaseVersionSource = null) + : IBaseVersionIncrement { public BaseVersionOperand() : this(string.Empty, SemanticVersion.Empty) { } - public BaseVersionOperand(string source, SemanticVersion semanticVersion, ICommit? baseVersionSource = null) - { - Source = source.NotNull(); - SemanticVersion = semanticVersion.NotNull(); - BaseVersionSource = baseVersionSource; - } - - public string Source { get; init; } - - public SemanticVersion SemanticVersion { get; init; } + public string Source { get; init; } = Source.NotNull(); - public ICommit? BaseVersionSource { get; init; } + public SemanticVersion SemanticVersion { get; init; } = SemanticVersion.NotNull(); } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs index 59c69cb29c..f5f4397775 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs @@ -17,7 +17,11 @@ internal sealed class TrunkBasedVersionStrategy( IIncrementStrategyFinder incrementStrategyFinder) : IVersionStrategy { + private volatile int iterationCounter; private readonly Lazy contextLazy = contextLazy.NotNull(); + private readonly ITaggedSemanticVersionRepository taggedSemanticVersionRepository = taggedSemanticVersionRepository.NotNull(); + private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); + private readonly IIncrementStrategyFinder incrementStrategyFinder = incrementStrategyFinder.NotNull(); private GitVersionContext Context => contextLazy.Value; @@ -63,12 +67,6 @@ internal sealed class TrunkBasedVersionStrategy( new CommitOnNonTrunkBranchedToNonTrunk() ]; - private volatile int iterationCounter; - - private readonly ITaggedSemanticVersionRepository taggedSemanticVersionRepository = taggedSemanticVersionRepository.NotNull(); - private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); - private readonly IIncrementStrategyFinder incrementStrategyFinder = incrementStrategyFinder.NotNull(); - public IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) { configuration.NotNull(); @@ -111,7 +109,7 @@ private bool IterateOverCommitsRecursive( IEnumerable commitsInReverseOrder, TrunkBasedIteration iteration, string? targetLabel, ILookup taggedSemanticVersions, HashSet? traversedCommits = null) { - traversedCommits ??= new(); + traversedCommits ??= []; Lazy> commitsWasBranchedFromLazy = new( () => GetCommitsWasBranchedFrom(branchName: iteration.BranchName) @@ -220,7 +218,7 @@ private VersionField GetIncrementForcedByCommit(ICommit commit, EffectiveConfigu private IReadOnlyDictionary GetCommitsWasBranchedFrom(ReferenceName branchName) { - Dictionary result = new(); + Dictionary result = []; var branch = repositoryStore.FindBranch(branchName); if (branch is null) return result; diff --git a/src/GitVersion.Output/AssemblyInfo/AssemblyInfoContext.cs b/src/GitVersion.Output/AssemblyInfo/AssemblyInfoContext.cs index 44dfeb79c0..c8e51572dd 100644 --- a/src/GitVersion.Output/AssemblyInfo/AssemblyInfoContext.cs +++ b/src/GitVersion.Output/AssemblyInfo/AssemblyInfoContext.cs @@ -1,9 +1,4 @@ namespace GitVersion.Output.AssemblyInfo; -internal readonly struct AssemblyInfoContext(string workingDirectory, bool ensureAssemblyInfo, params string[] assemblyInfoFiles) - : IConverterContext -{ - public string WorkingDirectory { get; } = workingDirectory; - public bool EnsureAssemblyInfo { get; } = ensureAssemblyInfo; - public string[] AssemblyInfoFiles { get; } = assemblyInfoFiles; -} +internal readonly record struct AssemblyInfoContext(string WorkingDirectory, bool EnsureAssemblyInfo, params string[] AssemblyInfoFiles) + : IConverterContext; diff --git a/src/GitVersion.Output/GitVersionInfo/GitVersionInfoContext.cs b/src/GitVersion.Output/GitVersionInfo/GitVersionInfoContext.cs index 13f2840da7..27217adf90 100644 --- a/src/GitVersion.Output/GitVersionInfo/GitVersionInfoContext.cs +++ b/src/GitVersion.Output/GitVersionInfo/GitVersionInfoContext.cs @@ -1,14 +1,14 @@ namespace GitVersion.Output.GitVersionInfo; -internal readonly struct GitVersionInfoContext(string workingDirectory, string fileName, string fileExtension, string? targetNamespace = null) +internal readonly record struct GitVersionInfoContext( + string WorkingDirectory, + string FileName, + string FileExtension, + string? TargetNamespace = null) : IConverterContext { - public GitVersionInfoContext(string workingDirectory, string fileName, string fileExtension) : this(workingDirectory, fileName, fileExtension, null) + public GitVersionInfoContext(string workingDirectory, string fileName, string fileExtension) + : this(workingDirectory, fileName, fileExtension, null) { } - - public string WorkingDirectory { get; } = workingDirectory; - public string FileName { get; } = fileName; - public string FileExtension { get; } = fileExtension; - public string? TargetNamespace { get; } = targetNamespace; } diff --git a/src/GitVersion.Output/OutputGenerator/OutputContext.cs b/src/GitVersion.Output/OutputGenerator/OutputContext.cs index e001ba8cc3..98ad1474ff 100644 --- a/src/GitVersion.Output/OutputGenerator/OutputContext.cs +++ b/src/GitVersion.Output/OutputGenerator/OutputContext.cs @@ -1,9 +1,3 @@ namespace GitVersion.Output.OutputGenerator; -internal readonly struct OutputContext(string workingDirectory, string? outputFile, bool? updateBuildNumber) - : IConverterContext -{ - public string WorkingDirectory { get; } = workingDirectory; - public string? OutputFile { get; } = outputFile; - public bool? UpdateBuildNumber { get; } = updateBuildNumber; -} +internal readonly record struct OutputContext(string WorkingDirectory, string? OutputFile, bool? UpdateBuildNumber) : IConverterContext; diff --git a/src/GitVersion.Output/WixUpdater/WixVersionContext.cs b/src/GitVersion.Output/WixUpdater/WixVersionContext.cs index f802f4e6ef..391beaf11d 100644 --- a/src/GitVersion.Output/WixUpdater/WixVersionContext.cs +++ b/src/GitVersion.Output/WixUpdater/WixVersionContext.cs @@ -1,6 +1,3 @@ namespace GitVersion.Output.WixUpdater; -internal readonly struct WixVersionContext(string workingDirectory) : IConverterContext -{ - public string WorkingDirectory { get; } = workingDirectory; -} +internal readonly record struct WixVersionContext(string WorkingDirectory) : IConverterContext; From dacd364f43bb3aaebed4d8cd9a07a04a1123b894 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 21 Mar 2024 17:22:53 +0100 Subject: [PATCH 054/544] changed ConfigurationSerializer to implement IConfigurationSerializer --- src/GitVersion.App/GitVersionExecutor.cs | 6 +- .../ConfigurationProviderTests.cs | 2 +- .../Configuration/IgnoreConfigurationTests.cs | 58 ++++++++++--------- .../ConfigurationFileLocator.cs | 8 ++- .../ConfigurationHelper.cs | 33 ++++++----- .../ConfigurationSerializer.cs | 17 ++---- .../GitVersionConfiguration.cs | 11 +--- .../GitVersionConfigurationModule.cs | 1 + .../SupportedWorkflows/WorkflowManager.cs | 3 +- .../Core/GitVersionExecutorTests.cs | 17 +++--- .../Configuration/IConfigurationSerializer.cs | 8 +++ .../Configuration/IGitVersionConfiguration.cs | 2 - .../Core/GitVersionCalculateTool.cs | 13 ++--- src/GitVersion.Core/GitVersionCoreModule.cs | 2 +- src/GitVersion.Core/PublicAPI.Unshipped.txt | 7 +-- .../Caching/GitVersionCacheKey.cs | 3 - .../Caching}/GitVersionCacheKeyFactory.cs | 6 +- ...ionCache.cs => GitVersionCacheProvider.cs} | 28 +++++++-- .../Caching/IGitVersionCache.cs | 9 --- .../Caching/IGitVersionCacheKeyFactory.cs | 1 + .../Caching/IGitVersionCacheProvider.cs | 9 +++ 21 files changed, 130 insertions(+), 114 deletions(-) create mode 100644 src/GitVersion.Core/Configuration/IConfigurationSerializer.cs delete mode 100644 src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKey.cs rename src/{GitVersion.Configuration => GitVersion.Core/VersionCalculation/Caching}/GitVersionCacheKeyFactory.cs (95%) rename src/GitVersion.Core/VersionCalculation/Caching/{GitVersionCache.cs => GitVersionCacheProvider.cs} (77%) delete mode 100644 src/GitVersion.Core/VersionCalculation/Caching/IGitVersionCache.cs create mode 100644 src/GitVersion.Core/VersionCalculation/Caching/IGitVersionCacheProvider.cs diff --git a/src/GitVersion.App/GitVersionExecutor.cs b/src/GitVersion.App/GitVersionExecutor.cs index 192c35801b..0d07fc82bc 100644 --- a/src/GitVersion.App/GitVersionExecutor.cs +++ b/src/GitVersion.App/GitVersionExecutor.cs @@ -11,6 +11,7 @@ internal class GitVersionExecutor( IConsole console, IConfigurationFileLocator configurationFileLocator, IConfigurationProvider configurationProvider, + IConfigurationSerializer configurationSerializer, IGitVersionCalculateTool gitVersionCalculateTool, IGitVersionOutputTool gitVersionOutputTool, IVersionWriter versionWriter, @@ -22,6 +23,8 @@ internal class GitVersionExecutor( private readonly IConsole console = console.NotNull(); private readonly IConfigurationFileLocator configurationFileLocator = configurationFileLocator.NotNull(); private readonly IConfigurationProvider configurationProvider = configurationProvider.NotNull(); + private readonly IConfigurationSerializer configurationSerializer = configurationSerializer.NotNull(); + private readonly IGitVersionCalculateTool gitVersionCalculateTool = gitVersionCalculateTool.NotNull(); private readonly IGitVersionOutputTool gitVersionOutputTool = gitVersionOutputTool.NotNull(); private readonly IVersionWriter versionWriter = versionWriter.NotNull(); @@ -144,7 +147,8 @@ private bool HandleNonMainCommand(GitVersionOptions gitVersionOptions, out int e this.configurationFileLocator.Verify(workingDirectory, this.repositoryInfo.ProjectRootDirectory); } var configuration = this.configurationProvider.Provide(); - this.console.WriteLine(configuration.ToJsonString()); + var configurationString = configurationSerializer.Serialize(configuration); + this.console.WriteLine(configurationString); exitCode = 0; return true; } diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs index 0792e5b4cc..7ea7a66aff 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs @@ -182,7 +182,7 @@ public void CanWriteOutEffectiveConfiguration() { var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); - configuration.ToJsonString().ShouldMatchApproved(); + new ConfigurationSerializer().Serialize(configuration).ShouldMatchApproved(); } [Test] diff --git a/src/GitVersion.Configuration.Tests/Configuration/IgnoreConfigurationTests.cs b/src/GitVersion.Configuration.Tests/Configuration/IgnoreConfigurationTests.cs index 68a3160ae7..3cc5e9d43c 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/IgnoreConfigurationTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/IgnoreConfigurationTests.cs @@ -7,52 +7,54 @@ namespace GitVersion.Core.Tests.Configuration; [TestFixture] public class IgnoreConfigurationTests : TestBase { + private readonly ConfigurationSerializer serializer = new(); + [Test] public void CanDeserialize() { - const string yaml = @" -ignore: - sha: [b6c0c9fda88830ebcd563e500a5a7da5a1658e98] - commits-before: 2015-10-23T12:23:15 -"; + const string yaml = + """ + ignore: + sha: [b6c0c9fda88830ebcd563e500a5a7da5a1658e98] + commits-before: 2015-10-23T12:23:15 + """; - using var reader = new StringReader(yaml); - var configuration = ConfigurationSerializer.Read(reader); + var configuration = serializer.ReadConfiguration(yaml); + configuration.ShouldNotBeNull(); configuration.Ignore.ShouldNotBeNull(); configuration.Ignore.Shas.ShouldNotBeEmpty(); - configuration.Ignore.Shas.ShouldBe(new[] { "b6c0c9fda88830ebcd563e500a5a7da5a1658e98" }); + configuration.Ignore.Shas.ShouldBe(["b6c0c9fda88830ebcd563e500a5a7da5a1658e98"]); configuration.Ignore.Before.ShouldBe(DateTimeOffset.Parse("2015-10-23T12:23:15")); } [Test] public void ShouldSupportsOtherSequenceFormat() { - const string yaml = @" -ignore: - sha: - - b6c0c9fda88830ebcd563e500a5a7da5a1658e98 - - 6c19c7c219ecf8dbc468042baefa73a1b213e8b1 -"; + const string yaml = + """ + ignore: + sha: + - b6c0c9fda88830ebcd563e500a5a7da5a1658e98 + - 6c19c7c219ecf8dbc468042baefa73a1b213e8b1 + """; - using var reader = new StringReader(yaml); - var configuration = ConfigurationSerializer.Read(reader); + var configuration = serializer.ReadConfiguration(yaml); + configuration.ShouldNotBeNull(); configuration.Ignore.ShouldNotBeNull(); configuration.Ignore.Shas.ShouldNotBeEmpty(); - configuration.Ignore.Shas.ShouldBe(new[] { "b6c0c9fda88830ebcd563e500a5a7da5a1658e98", "6c19c7c219ecf8dbc468042baefa73a1b213e8b1" }); + configuration.Ignore.Shas.ShouldBe(["b6c0c9fda88830ebcd563e500a5a7da5a1658e98", "6c19c7c219ecf8dbc468042baefa73a1b213e8b1"]); } [Test] public void WhenNotInConfigShouldHaveDefaults() { - const string yaml = @" -next-version: 1.0 -"; + const string yaml = "next-version: 1.0"; - using var reader = new StringReader(yaml); - var configuration = ConfigurationSerializer.Read(reader); + var configuration = serializer.ReadConfiguration(yaml); + configuration.ShouldNotBeNull(); configuration.Ignore.ShouldNotBeNull(); configuration.Ignore.Shas.ShouldBeEmpty(); configuration.Ignore.Before.ShouldBe(null); @@ -61,13 +63,13 @@ public void WhenNotInConfigShouldHaveDefaults() [Test] public void WhenBadDateFormatShouldFail() { - const string yaml = @" -ignore: - commits-before: bad format date -"; + const string yaml = + """ + ignore: + commits-before: bad format date + """; - using var reader = new StringReader(yaml); - Should.Throw(() => ConfigurationSerializer.Read(reader)); + Should.Throw(() => serializer.ReadConfiguration(yaml)); } [Test] diff --git a/src/GitVersion.Configuration/ConfigurationFileLocator.cs b/src/GitVersion.Configuration/ConfigurationFileLocator.cs index 478de79755..374c6efa1a 100644 --- a/src/GitVersion.Configuration/ConfigurationFileLocator.cs +++ b/src/GitVersion.Configuration/ConfigurationFileLocator.cs @@ -4,7 +4,7 @@ namespace GitVersion.Configuration; -internal class ConfigurationFileLocator(IFileSystem fileSystem, IOptions options) +internal class ConfigurationFileLocator(IFileSystem fileSystem, IConfigurationSerializer configurationSerializer, IOptions options) : IConfigurationFileLocator { public const string DefaultFileName = "GitVersion.yml"; @@ -29,7 +29,9 @@ public IGitVersionConfiguration ReadConfiguration(string? configFilePath) if (configFilePath == null || !fileSystem.Exists(configFilePath)) return GitHubFlowConfigurationBuilder.New.Build(); var readAllText = fileSystem.ReadAllText(configFilePath); - return ConfigurationSerializer.Read(new StringReader(readAllText)); + var configuration = configurationSerializer.ReadConfiguration(readAllText) + ?? GitHubFlowConfigurationBuilder.New.Build(); + return configuration; } public IReadOnlyDictionary? ReadOverrideConfiguration(string? configFilePath) @@ -38,7 +40,7 @@ public IGitVersionConfiguration ReadConfiguration(string? configFilePath) var readAllText = fileSystem.ReadAllText(configFilePath); - return ConfigurationSerializer.Deserialize>(readAllText); + return configurationSerializer.Deserialize>(readAllText); } private bool HasConfigurationFile(string? workingDirectory, out string? path) diff --git a/src/GitVersion.Configuration/ConfigurationHelper.cs b/src/GitVersion.Configuration/ConfigurationHelper.cs index 4354e2907c..66e2bd5bea 100644 --- a/src/GitVersion.Configuration/ConfigurationHelper.cs +++ b/src/GitVersion.Configuration/ConfigurationHelper.cs @@ -4,31 +4,32 @@ namespace GitVersion.Configuration; internal class ConfigurationHelper { - private string Yaml => this._yaml ??= this._dictionary == null - ? ConfigurationSerializer.Serialize(this.configuration!) - : ConfigurationSerializer.Serialize(this._dictionary); - private string? _yaml; + private static ConfigurationSerializer Serializer => new(); + private string Yaml => this.yaml ??= this.dictionary == null + ? Serializer.Serialize(this.configuration!) + : Serializer.Serialize(this.dictionary); + private string? yaml; internal IReadOnlyDictionary Dictionary { get { - if (this._dictionary == null) + if (this.dictionary == null) { - this._yaml ??= ConfigurationSerializer.Serialize(this.configuration!); - this._dictionary = ConfigurationSerializer.Deserialize>(this._yaml); + this.yaml ??= Serializer.Serialize(this.configuration!); + this.dictionary = Serializer.Deserialize>(this.yaml); } - return this._dictionary; + return this.dictionary; } } - private IReadOnlyDictionary? _dictionary; + private IReadOnlyDictionary? dictionary; - public IGitVersionConfiguration Configuration => this.configuration ??= ConfigurationSerializer.Deserialize(Yaml); + public IGitVersionConfiguration Configuration => this.configuration ??= Serializer.Deserialize(Yaml); private IGitVersionConfiguration? configuration; - internal ConfigurationHelper(string yaml) => this._yaml = yaml.NotNull(); + internal ConfigurationHelper(string yaml) => this.yaml = yaml.NotNull(); - internal ConfigurationHelper(IReadOnlyDictionary dictionary) => this._dictionary = dictionary.NotNull(); + internal ConfigurationHelper(IReadOnlyDictionary dictionary) => this.dictionary = dictionary.NotNull(); public ConfigurationHelper(IGitVersionConfiguration configuration) => this.configuration = configuration.NotNull(); @@ -38,10 +39,10 @@ public void Override(IReadOnlyDictionary value) if (value.Any()) { - var dictionary = Dictionary.ToDictionary(element => element.Key, element => element.Value); - Merge(dictionary, value); - this._dictionary = dictionary; - this._yaml = null; + var map = Dictionary.ToDictionary(element => element.Key, element => element.Value); + Merge(map, value); + this.dictionary = map; + this.yaml = null; this.configuration = null; } } diff --git a/src/GitVersion.Configuration/ConfigurationSerializer.cs b/src/GitVersion.Configuration/ConfigurationSerializer.cs index bd7db25834..75b30caddd 100644 --- a/src/GitVersion.Configuration/ConfigurationSerializer.cs +++ b/src/GitVersion.Configuration/ConfigurationSerializer.cs @@ -4,7 +4,7 @@ namespace GitVersion.Configuration; -internal static class ConfigurationSerializer +internal class ConfigurationSerializer : IConfigurationSerializer { private static IDeserializer Deserializer => new DeserializerBuilder() .WithNamingConvention(HyphenatedNamingConvention.Instance) @@ -16,18 +16,9 @@ internal static class ConfigurationSerializer .WithTypeInspector(inspector => new JsonPropertyNameInspector(inspector)) .WithNamingConvention(HyphenatedNamingConvention.Instance).Build(); - public static T Deserialize(string input) => Deserializer.Deserialize(input); - - public static string Serialize(object graph) => Serializer.Serialize(graph); - - public static IGitVersionConfiguration Read(TextReader reader) - { - var configuration = Deserializer.Deserialize(reader); - return configuration ?? GitHubFlowConfigurationBuilder.New.Build(); - } - - public static void Write(IGitVersionConfiguration configuration, TextWriter writer) - => Serializer.Serialize(writer, configuration); + public T Deserialize(string input) => Deserializer.Deserialize(input); + public string Serialize(object graph) => Serializer.Serialize(graph); + public IGitVersionConfiguration? ReadConfiguration(string input) => Deserialize(input); private sealed class JsonPropertyNameInspector(ITypeInspector innerTypeDescriptor) : TypeInspectorSkeleton { diff --git a/src/GitVersion.Configuration/GitVersionConfiguration.cs b/src/GitVersion.Configuration/GitVersionConfiguration.cs index 7c1bd59179..a89f960811 100644 --- a/src/GitVersion.Configuration/GitVersionConfiguration.cs +++ b/src/GitVersion.Configuration/GitVersionConfiguration.cs @@ -149,19 +149,10 @@ IReadOnlyDictionary IGitVersionConfiguration.Branc public override IBranchConfiguration Inherit(IBranchConfiguration configuration) => throw new NotSupportedException(); - public string ToJsonString() - { - var stringBuilder = new StringBuilder(); - using var stream = new StringWriter(stringBuilder); - ConfigurationSerializer.Write(this, stream); - stream.Flush(); - return stringBuilder.ToString(); - } - public IBranchConfiguration GetEmptyBranchConfiguration() => new BranchConfiguration { RegularExpression = string.Empty, - Label = ConfigurationConstants.BranchNamePlaceholder, + Label = BranchNamePlaceholder, Increment = IncrementStrategy.Inherit }; } diff --git a/src/GitVersion.Configuration/GitVersionConfigurationModule.cs b/src/GitVersion.Configuration/GitVersionConfigurationModule.cs index b8c8cae713..684b0a8b78 100644 --- a/src/GitVersion.Configuration/GitVersionConfigurationModule.cs +++ b/src/GitVersion.Configuration/GitVersionConfigurationModule.cs @@ -8,6 +8,7 @@ public class GitVersionConfigurationModule : IGitVersionModule public void RegisterTypes(IServiceCollection services) { services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); } diff --git a/src/GitVersion.Configuration/SupportedWorkflows/WorkflowManager.cs b/src/GitVersion.Configuration/SupportedWorkflows/WorkflowManager.cs index 51a9cd3fe0..7df0d8e219 100644 --- a/src/GitVersion.Configuration/SupportedWorkflows/WorkflowManager.cs +++ b/src/GitVersion.Configuration/SupportedWorkflows/WorkflowManager.cs @@ -5,6 +5,7 @@ namespace GitVersion.Configuration.SupportedWorkflows; internal static class WorkflowManager { private static readonly string ResourceNameTemplate = DetermineResourceNameTemplate(); + private static ConfigurationSerializer Serializer => new(); private static string DetermineResourceNameTemplate() { @@ -19,7 +20,7 @@ private static string DetermineResourceNameTemplate() var resourceName = GetResourceName(workflow); var embeddedResource = resourceName.ReadAsStringFromEmbeddedResource(typeof(WorkflowManager).Assembly); - return ConfigurationSerializer.Deserialize>(embeddedResource); + return Serializer.Deserialize>(embeddedResource); } private static string GetResourceName(string workflow) diff --git a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs index 043ed1c9ea..e1e52ae9e6 100644 --- a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs +++ b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs @@ -17,7 +17,7 @@ public class GitVersionExecutorTests : TestBase { private IFileSystem fileSystem; private ILog log; - private GitVersionCache gitVersionCache; + private GitVersionCacheProvider gitVersionCacheProvider; private IServiceProvider sp; [Test] @@ -80,7 +80,8 @@ public void CacheKeyForWorktree() var preparer = this.sp.GetRequiredService(); preparer.Prepare(); - var cacheKey = this.sp.GetRequiredService().Create(null); + var cacheKeyFactory = this.sp.GetRequiredService(); + var cacheKey = cacheKeyFactory.Create(null); cacheKey.Value.ShouldNotBeEmpty(); } finally @@ -140,7 +141,7 @@ public void CacheFileExistsOnDisk() var cacheKeyFactory = this.sp.GetRequiredService(); var cacheKey = cacheKeyFactory.Create(null); - var cacheFileName = this.gitVersionCache.GetCacheFileName(cacheKey); + var cacheFileName = this.gitVersionCacheProvider.GetCacheFileName(cacheKey); this.fileSystem.WriteAllText(cacheFileName, versionCacheFileContent); versionVariables = gitVersionCalculator.CalculateVersionVariables(); @@ -193,10 +194,10 @@ public void CacheFileExistsOnDiskWhenOverrideConfigIsSpecifiedVersionShouldBeDyn var cacheKeyFactory = this.sp.GetRequiredService(); var cacheKey = cacheKeyFactory.Create(null); - var cacheFileName = this.gitVersionCache.GetCacheFileName(cacheKey); + var cacheFileName = this.gitVersionCacheProvider.GetCacheFileName(cacheKey); this.fileSystem.WriteAllText(cacheFileName, versionCacheFileContent); - var cacheDirectory = this.gitVersionCache.GetCacheDirectory(); + var cacheDirectory = this.gitVersionCacheProvider.GetCacheDirectory(); var cacheDirectoryTimestamp = this.fileSystem.GetLastDirectoryWrite(cacheDirectory); @@ -283,7 +284,7 @@ public void ConfigChangeInvalidatesCache(string configFileName) var cacheKeyFactory = this.sp.GetRequiredService(); var cacheKey = cacheKeyFactory.Create(null); - var cacheFileName = this.gitVersionCache.GetCacheFileName(cacheKey); + var cacheFileName = this.gitVersionCacheProvider.GetCacheFileName(cacheKey); this.fileSystem.WriteAllText(cacheFileName, versionCacheFileContent); @@ -345,7 +346,7 @@ public void NoCacheBypassesCache() var cacheKeyFactory = this.sp.GetRequiredService(); var cacheKey = cacheKeyFactory.Create(null); - var cacheFileName = this.gitVersionCache.GetCacheFileName(cacheKey); + var cacheFileName = this.gitVersionCacheProvider.GetCacheFileName(cacheKey); this.fileSystem.WriteAllText(cacheFileName, versionCacheFileContent); versionVariables = gitVersionCalculator.CalculateVersionVariables(); @@ -580,7 +581,7 @@ private IGitVersionCalculateTool GetGitVersionCalculator(GitVersionOptions gitVe this.fileSystem = this.sp.GetRequiredService(); this.log = this.sp.GetRequiredService(); - this.gitVersionCache = (GitVersionCache)this.sp.GetRequiredService(); + this.gitVersionCacheProvider = (GitVersionCacheProvider)this.sp.GetRequiredService(); return this.sp.GetRequiredService(); } diff --git a/src/GitVersion.Core/Configuration/IConfigurationSerializer.cs b/src/GitVersion.Core/Configuration/IConfigurationSerializer.cs new file mode 100644 index 0000000000..312e0e3feb --- /dev/null +++ b/src/GitVersion.Core/Configuration/IConfigurationSerializer.cs @@ -0,0 +1,8 @@ +namespace GitVersion.Configuration; + +internal interface IConfigurationSerializer +{ + public T Deserialize(string input); + string Serialize(object graph); + public IGitVersionConfiguration? ReadConfiguration(string input); +} diff --git a/src/GitVersion.Core/Configuration/IGitVersionConfiguration.cs b/src/GitVersion.Core/Configuration/IGitVersionConfiguration.cs index 1ef7b7971b..60307b3cd1 100644 --- a/src/GitVersion.Core/Configuration/IGitVersionConfiguration.cs +++ b/src/GitVersion.Core/Configuration/IGitVersionConfiguration.cs @@ -49,7 +49,5 @@ public interface IGitVersionConfiguration : IBranchConfiguration IIgnoreConfiguration Ignore { get; } - string ToJsonString(); - IBranchConfiguration GetEmptyBranchConfiguration(); } diff --git a/src/GitVersion.Core/Core/GitVersionCalculateTool.cs b/src/GitVersion.Core/Core/GitVersionCalculateTool.cs index b999bdf379..92c48bd78b 100644 --- a/src/GitVersion.Core/Core/GitVersionCalculateTool.cs +++ b/src/GitVersion.Core/Core/GitVersionCalculateTool.cs @@ -14,18 +14,16 @@ internal class GitVersionCalculateTool( INextVersionCalculator nextVersionCalculator, IVariableProvider variableProvider, IGitPreparer gitPreparer, - IGitVersionCache gitVersionCache, - IGitVersionCacheKeyFactory cacheKeyFactory, + IGitVersionCacheProvider gitVersionCacheProvider, IOptions options, Lazy versionContext) : IGitVersionCalculateTool { private readonly ILog log = log.NotNull(); - private readonly IGitVersionCache gitVersionCache = gitVersionCache.NotNull(); + private readonly IGitVersionCacheProvider gitVersionCacheProvider = gitVersionCacheProvider.NotNull(); private readonly INextVersionCalculator nextVersionCalculator = nextVersionCalculator.NotNull(); private readonly IVariableProvider variableProvider = variableProvider.NotNull(); private readonly IGitPreparer gitPreparer = gitPreparer.NotNull(); - private readonly IGitVersionCacheKeyFactory cacheKeyFactory = cacheKeyFactory.NotNull(); private readonly IOptions options = options.NotNull(); private readonly Lazy versionContext = versionContext.NotNull(); @@ -38,8 +36,9 @@ public GitVersionVariables CalculateVersionVariables() var gitVersionOptions = this.options.Value; - var cacheKey = this.cacheKeyFactory.Create(gitVersionOptions.ConfigurationInfo.OverrideConfiguration); - var versionVariables = gitVersionOptions.Settings.NoCache ? default : this.gitVersionCache.LoadVersionVariablesFromDiskCache(cacheKey); + var versionVariables = !gitVersionOptions.Settings.NoCache + ? this.gitVersionCacheProvider.LoadVersionVariablesFromDiskCache() + : default; if (versionVariables != null) return versionVariables; @@ -53,7 +52,7 @@ public GitVersionVariables CalculateVersionVariables() if (gitVersionOptions.Settings.NoCache) return versionVariables; try { - this.gitVersionCache.WriteVariablesToDiskCache(cacheKey, versionVariables); + this.gitVersionCacheProvider.WriteVariablesToDiskCache(versionVariables); } catch (AggregateException e) { diff --git a/src/GitVersion.Core/GitVersionCoreModule.cs b/src/GitVersion.Core/GitVersionCoreModule.cs index c996abb27c..573e91f141 100644 --- a/src/GitVersion.Core/GitVersionCoreModule.cs +++ b/src/GitVersion.Core/GitVersionCoreModule.cs @@ -12,7 +12,7 @@ public class GitVersionCoreModule : IGitVersionModule { public void RegisterTypes(IServiceCollection services) { - services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index c59705e026..9e22460bd6 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -168,7 +168,6 @@ GitVersion.Configuration.IGitVersionConfiguration.NextVersion.get -> string? GitVersion.Configuration.IGitVersionConfiguration.NoBumpMessage.get -> string? GitVersion.Configuration.IGitVersionConfiguration.PatchVersionBumpMessage.get -> string? GitVersion.Configuration.IGitVersionConfiguration.SemanticVersionFormat.get -> GitVersion.SemanticVersionFormat -GitVersion.Configuration.IGitVersionConfiguration.ToJsonString() -> string! GitVersion.Configuration.IGitVersionConfiguration.UpdateBuildNumber.get -> bool GitVersion.Configuration.IGitVersionConfiguration.VersionInBranchPattern.get -> string? GitVersion.Configuration.IGitVersionConfiguration.VersionInBranchRegex.get -> System.Text.RegularExpressions.Regex! @@ -690,9 +689,9 @@ GitVersion.VersionCalculation.Caching.GitVersionCacheKey GitVersion.VersionCalculation.Caching.GitVersionCacheKey.GitVersionCacheKey(string! Value) -> void GitVersion.VersionCalculation.Caching.GitVersionCacheKey.Value.get -> string! GitVersion.VersionCalculation.Caching.GitVersionCacheKey.Value.init -> void -GitVersion.VersionCalculation.Caching.IGitVersionCache -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! versionVariables) -> void +GitVersion.VersionCalculation.Caching.IGitVersionCacheProvider +GitVersion.VersionCalculation.Caching.IGitVersionCacheProvider.LoadVersionVariablesFromDiskCache() -> GitVersion.OutputVariables.GitVersionVariables? +GitVersion.VersionCalculation.Caching.IGitVersionCacheProvider.WriteVariablesToDiskCache(GitVersion.OutputVariables.GitVersionVariables! versionVariables) -> void GitVersion.VersionCalculation.CommitMessageIncrementMode GitVersion.VersionCalculation.CommitMessageIncrementMode.Disabled = 1 -> GitVersion.VersionCalculation.CommitMessageIncrementMode GitVersion.VersionCalculation.CommitMessageIncrementMode.Enabled = 0 -> GitVersion.VersionCalculation.CommitMessageIncrementMode diff --git a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKey.cs b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKey.cs deleted file mode 100644 index baf9e3e090..0000000000 --- a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKey.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace GitVersion.VersionCalculation.Caching; - -public record GitVersionCacheKey(string Value); diff --git a/src/GitVersion.Configuration/GitVersionCacheKeyFactory.cs b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs similarity index 95% rename from src/GitVersion.Configuration/GitVersionCacheKeyFactory.cs rename to src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs index a8848e3271..e0fa826ae2 100644 --- a/src/GitVersion.Configuration/GitVersionCacheKeyFactory.cs +++ b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs @@ -13,6 +13,7 @@ internal class GitVersionCacheKeyFactory( ILog log, IOptions options, IConfigurationFileLocator configFileLocator, + IConfigurationSerializer configurationSerializer, IGitRepository gitRepository, IGitRepositoryInfo repositoryInfo) : IGitVersionCacheKeyFactory @@ -21,6 +22,7 @@ internal class GitVersionCacheKeyFactory( private readonly ILog log = log.NotNull(); private readonly IOptions options = options.NotNull(); private readonly IConfigurationFileLocator configFileLocator = configFileLocator.NotNull(); + private readonly IConfigurationSerializer configurationSerializer = configurationSerializer.NotNull(); private readonly IGitRepository gitRepository = gitRepository.NotNull(); private readonly IGitRepositoryInfo repositoryInfo = repositoryInfo.NotNull(); @@ -147,7 +149,7 @@ private string GetRepositorySnapshotHash() return GetHash(hash); } - private static string GetOverrideConfigHash(IReadOnlyDictionary? overrideConfiguration) + private string GetOverrideConfigHash(IReadOnlyDictionary? overrideConfiguration) { if (overrideConfiguration?.Any() != true) { @@ -156,7 +158,7 @@ private static string GetOverrideConfigHash(IReadOnlyDictionary // Doesn't depend on command line representation and // includes possible changes in default values of Config per se. - var configContent = ConfigurationSerializer.Serialize(overrideConfiguration); + var configContent = configurationSerializer.Serialize(overrideConfiguration); return GetHash(configContent); } diff --git a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheProvider.cs similarity index 77% rename from src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs rename to src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheProvider.cs index 61bb245cd6..63a67e6afb 100644 --- a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs +++ b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheProvider.cs @@ -3,19 +3,29 @@ using GitVersion.Helpers; using GitVersion.Logging; using GitVersion.OutputVariables; +using Microsoft.Extensions.Options; namespace GitVersion.VersionCalculation.Caching; -internal class GitVersionCache(IFileSystem fileSystem, IVersionVariableSerializer serializer, ILog log, IGitRepositoryInfo repositoryInfo) - : IGitVersionCache +internal class GitVersionCacheProvider( + IFileSystem fileSystem, + ILog log, + IOptions options, + IVersionVariableSerializer serializer, + IGitVersionCacheKeyFactory cacheKeyFactory, + IGitRepositoryInfo repositoryInfo) + : IGitVersionCacheProvider { private readonly IFileSystem fileSystem = fileSystem.NotNull(); - private readonly IVersionVariableSerializer serializer = serializer.NotNull(); private readonly ILog log = log.NotNull(); + private readonly IOptions options = options.NotNull(); + private readonly IVersionVariableSerializer serializer = serializer.NotNull(); + private readonly IGitVersionCacheKeyFactory cacheKeyFactory = cacheKeyFactory.NotNull(); private readonly IGitRepositoryInfo repositoryInfo = repositoryInfo.NotNull(); - public void WriteVariablesToDiskCache(GitVersionCacheKey cacheKey, GitVersionVariables versionVariables) + public void WriteVariablesToDiskCache(GitVersionVariables versionVariables) { + var cacheKey = GetCacheKey(); var cacheFileName = GetCacheFileName(cacheKey); using (this.log.IndentLog($"Write version variables to cache file {cacheFileName}")) { @@ -30,8 +40,9 @@ public void WriteVariablesToDiskCache(GitVersionCacheKey cacheKey, GitVersionVar } } - public GitVersionVariables? LoadVersionVariablesFromDiskCache(GitVersionCacheKey cacheKey) + public GitVersionVariables? LoadVersionVariablesFromDiskCache() { + var cacheKey = GetCacheKey(); var cacheFileName = GetCacheFileName(cacheKey); using (this.log.IndentLog($"Loading version variables from disk cache file {cacheFileName}")) { @@ -40,6 +51,7 @@ public void WriteVariablesToDiskCache(GitVersionCacheKey cacheKey, GitVersionVar this.log.Info($"Cache file {cacheFileName} not found."); return null; } + try { var loadedVariables = serializer.FromFile(cacheFileName); @@ -85,5 +97,11 @@ private string PrepareCacheDirectory() return cacheDir; } + private GitVersionCacheKey GetCacheKey() + { + var cacheKey = this.cacheKeyFactory.Create(options.Value.ConfigurationInfo.OverrideConfiguration); + return cacheKey; + } + private static string GetCacheFileName(GitVersionCacheKey key, string cacheDir) => PathHelper.Combine(cacheDir, key.Value); } diff --git a/src/GitVersion.Core/VersionCalculation/Caching/IGitVersionCache.cs b/src/GitVersion.Core/VersionCalculation/Caching/IGitVersionCache.cs deleted file mode 100644 index c70aee78b0..0000000000 --- a/src/GitVersion.Core/VersionCalculation/Caching/IGitVersionCache.cs +++ /dev/null @@ -1,9 +0,0 @@ -using GitVersion.OutputVariables; - -namespace GitVersion.VersionCalculation.Caching; - -public interface IGitVersionCache -{ - void WriteVariablesToDiskCache(GitVersionCacheKey cacheKey, GitVersionVariables versionVariables); - GitVersionVariables? LoadVersionVariablesFromDiskCache(GitVersionCacheKey cacheKey); -} diff --git a/src/GitVersion.Core/VersionCalculation/Caching/IGitVersionCacheKeyFactory.cs b/src/GitVersion.Core/VersionCalculation/Caching/IGitVersionCacheKeyFactory.cs index 55edf3c8fe..29ae72d8b4 100644 --- a/src/GitVersion.Core/VersionCalculation/Caching/IGitVersionCacheKeyFactory.cs +++ b/src/GitVersion.Core/VersionCalculation/Caching/IGitVersionCacheKeyFactory.cs @@ -1,5 +1,6 @@ namespace GitVersion.VersionCalculation.Caching; +public record GitVersionCacheKey(string Value); internal interface IGitVersionCacheKeyFactory { GitVersionCacheKey Create(IReadOnlyDictionary? overrideConfiguration); diff --git a/src/GitVersion.Core/VersionCalculation/Caching/IGitVersionCacheProvider.cs b/src/GitVersion.Core/VersionCalculation/Caching/IGitVersionCacheProvider.cs new file mode 100644 index 0000000000..a25909892e --- /dev/null +++ b/src/GitVersion.Core/VersionCalculation/Caching/IGitVersionCacheProvider.cs @@ -0,0 +1,9 @@ +using GitVersion.OutputVariables; + +namespace GitVersion.VersionCalculation.Caching; + +public interface IGitVersionCacheProvider +{ + void WriteVariablesToDiskCache(GitVersionVariables versionVariables); + GitVersionVariables? LoadVersionVariablesFromDiskCache(); +} From e88f431c068751a8cf6c16e85facd7d98a89b9c4 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 21 Mar 2024 21:05:45 +0100 Subject: [PATCH 055/544] remove System.Text.Json from GitVersion.Core --- schemas/6.0/GitVersion.configuration.json | 32 +++++++++++------ src/Directory.Build.props | 1 - .../JsonPropertyDefaultAttribute.cs | 4 +-- .../JsonPropertyDescriptionAttribute.cs | 14 ++++++++ .../Attributes/JsonPropertyFormatAttribute.cs | 12 ++----- .../BranchConfiguration.cs | 2 +- .../BranchConfigurationBuilder.cs | 0 .../{ => Builders}/ConfigurationBuilder.cs | 0 .../ConfigurationBuilderBase.cs | 0 .../EmptyConfigurationBuilder.cs | 0 .../GitFlowConfigurationBuilder.cs | 0 .../GitHubFlowConfigurationBuilder.cs | 0 .../IgnoreConfigurationBuilder.cs | 0 .../TrunkBasedConfigurationBuilder.cs | 0 .../ConfigurationProvider.cs | 2 +- .../GitVersion.Configuration.csproj | 12 +++++-- .../GitVersionConfiguration.cs | 2 +- .../IgnoreConfiguration.cs | 2 +- .../PreventIncrementConfiguration.cs | 2 +- .../PublicAPI.Unshipped.txt | 34 +++++++++++++++++++ .../GitFlow/v1.yml | 0 .../GitHubFlow/v1.yml | 0 .../TrunkBased/v1.yml | 0 .../WorkflowManager.cs | 2 +- .../JsonPropertyDescriptionAttribute.cs | 16 --------- src/GitVersion.Core/PublicAPI.Unshipped.txt | 34 ------------------- .../GitVersion.Output.csproj | 13 +++++++ src/GitVersion.Output/PublicAPI.Unshipped.txt | 3 ++ .../Serializer/VersionVariablesJsonModel.cs | 2 +- .../DefaultAttributeHandler.cs | 2 +- .../DescriptionAttributeHandler.cs | 19 +++++++++-- .../FormatAttributeHandler.cs | 8 ++--- src/GitVersion.Schema/Program.cs | 5 +-- 33 files changed, 129 insertions(+), 94 deletions(-) rename src/{GitVersion.Core/Core => GitVersion.Configuration}/Attributes/JsonPropertyDefaultAttribute.cs (97%) create mode 100644 src/GitVersion.Configuration/Attributes/JsonPropertyDescriptionAttribute.cs rename src/{GitVersion.Core/Core => GitVersion.Configuration}/Attributes/JsonPropertyFormatAttribute.cs (68%) rename src/GitVersion.Configuration/{ => Builders}/BranchConfigurationBuilder.cs (100%) rename src/GitVersion.Configuration/{ => Builders}/ConfigurationBuilder.cs (100%) rename src/GitVersion.Configuration/{ => Builders}/ConfigurationBuilderBase.cs (100%) rename src/GitVersion.Configuration/{ => Builders}/EmptyConfigurationBuilder.cs (100%) rename src/GitVersion.Configuration/{ => Builders}/GitFlowConfigurationBuilder.cs (100%) rename src/GitVersion.Configuration/{ => Builders}/GitHubFlowConfigurationBuilder.cs (100%) rename src/GitVersion.Configuration/{ => Builders}/IgnoreConfigurationBuilder.cs (100%) rename src/GitVersion.Configuration/{ => Builders}/TrunkBasedConfigurationBuilder.cs (100%) rename src/GitVersion.Configuration/{SupportedWorkflows => Workflows}/GitFlow/v1.yml (100%) rename src/GitVersion.Configuration/{SupportedWorkflows => Workflows}/GitHubFlow/v1.yml (100%) rename src/GitVersion.Configuration/{SupportedWorkflows => Workflows}/TrunkBased/v1.yml (100%) rename src/GitVersion.Configuration/{SupportedWorkflows => Workflows}/WorkflowManager.cs (95%) delete mode 100644 src/GitVersion.Core/Core/Attributes/JsonPropertyDescriptionAttribute.cs diff --git a/schemas/6.0/GitVersion.configuration.json b/schemas/6.0/GitVersion.configuration.json index c0ccdb4e88..ea2cc03003 100644 --- a/schemas/6.0/GitVersion.configuration.json +++ b/schemas/6.0/GitVersion.configuration.json @@ -126,11 +126,8 @@ "pre-release-weight": { "$ref": "#/$defs/nullableOfInt32" }, - "prevent-increment-of-merged-branch-version": { - "$ref": "#/$defs/nullableOfBoolean2" - }, - "prevent-increment-when-current-commit-tagged": { - "$ref": "#/$defs/nullableOfBoolean3" + "prevent-increment": { + "$ref": "#/$defs/preventIncrementConfiguration" }, "regex": { "$ref": "#/$defs/string2" @@ -186,6 +183,7 @@ "description": "Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfiguredNextVersion', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'TrunkBased'.", "enum": [ "None", + "Fallback", "ConfiguredNextVersion", "MergeMessage", "TaggedCommit", @@ -231,11 +229,8 @@ "pre-release-weight": { "$ref": "#/$defs/nullableOfInt32" }, - "prevent-increment-of-merged-branch-version": { - "$ref": "#/$defs/nullableOfBoolean2" - }, - "prevent-increment-when-current-commit-tagged": { - "$ref": "#/$defs/nullableOfBoolean3" + "prevent-increment": { + "$ref": "#/$defs/preventIncrementConfiguration" }, "regex": { "$ref": "#/$defs/string2" @@ -319,8 +314,23 @@ "null" ] }, + "preventIncrementConfiguration": { + "description": "The prevent increment configuration section.", + "type": "object", + "properties": { + "of-merged-branch": { + "$ref": "#/$defs/nullableOfBoolean2" + }, + "when-branch-merged": { + "$ref": "#/$defs/nullableOfBoolean2" + }, + "when-current-commit-tagged": { + "$ref": "#/$defs/nullableOfBoolean3" + } + } + }, "nullableOfBoolean2": { - "description": "Prevent increment of merged branch version.", + "description": "Prevent increment when branch merged.", "type": [ "boolean", "null" diff --git a/src/Directory.Build.props b/src/Directory.Build.props index be54e7ba0a..ef2ef736ca 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -41,7 +41,6 @@ - all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/GitVersion.Core/Core/Attributes/JsonPropertyDefaultAttribute.cs b/src/GitVersion.Configuration/Attributes/JsonPropertyDefaultAttribute.cs similarity index 97% rename from src/GitVersion.Core/Core/Attributes/JsonPropertyDefaultAttribute.cs rename to src/GitVersion.Configuration/Attributes/JsonPropertyDefaultAttribute.cs index e8fd5f3f56..375a8ca093 100644 --- a/src/GitVersion.Core/Core/Attributes/JsonPropertyDefaultAttribute.cs +++ b/src/GitVersion.Configuration/Attributes/JsonPropertyDefaultAttribute.cs @@ -1,6 +1,4 @@ -using GitVersion.Configuration; - -namespace GitVersion.Attributes; +namespace GitVersion.Configuration.Attributes; [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] public sealed class JsonPropertyDefaultAttribute : JsonAttribute diff --git a/src/GitVersion.Configuration/Attributes/JsonPropertyDescriptionAttribute.cs b/src/GitVersion.Configuration/Attributes/JsonPropertyDescriptionAttribute.cs new file mode 100644 index 0000000000..5fdc9de548 --- /dev/null +++ b/src/GitVersion.Configuration/Attributes/JsonPropertyDescriptionAttribute.cs @@ -0,0 +1,14 @@ +#if GITVERSION_CONFIGURATION +namespace GitVersion.Configuration.Attributes; +#elif GITVERSION_OUTPUT +namespace GitVersion.Output.Attributes; +#endif + +[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] +public sealed class JsonPropertyDescriptionAttribute(string description) : JsonAttribute +{ + /// + /// The description of the property. + /// + public string Description { get; } = description; +} diff --git a/src/GitVersion.Core/Core/Attributes/JsonPropertyFormatAttribute.cs b/src/GitVersion.Configuration/Attributes/JsonPropertyFormatAttribute.cs similarity index 68% rename from src/GitVersion.Core/Core/Attributes/JsonPropertyFormatAttribute.cs rename to src/GitVersion.Configuration/Attributes/JsonPropertyFormatAttribute.cs index 9ce8825a39..d8307d1754 100644 --- a/src/GitVersion.Core/Core/Attributes/JsonPropertyFormatAttribute.cs +++ b/src/GitVersion.Configuration/Attributes/JsonPropertyFormatAttribute.cs @@ -1,4 +1,4 @@ -namespace GitVersion.Attributes; +namespace GitVersion.Configuration.Attributes; /// /// The format keyword allows for basic semantic identification of certain kinds of string values that are commonly used. For example, because JSON doesn't have a "DateTime" type, dates need to be encoded as strings. format allows the schema author to indicate that the string value should be interpreted as a date. By default, format is just an annotation and does not effect validation. @@ -6,18 +6,12 @@ namespace GitVersion.Attributes; /// /// [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] -public sealed class JsonPropertyFormatAttribute : JsonAttribute +public sealed class JsonPropertyFormatAttribute(Format format) : JsonAttribute { - /// - /// Initializes a new instance of with the specified format for string-encoded property values. JSON validators may use this annotation to constrain properties to certain pre-define, string-encoded types. - /// - /// The string format. - public JsonPropertyFormatAttribute(Format format) => Format = format; - /// /// The format of the string. /// - public Format Format { get; } + public Format Format { get; } = format; } /// diff --git a/src/GitVersion.Configuration/BranchConfiguration.cs b/src/GitVersion.Configuration/BranchConfiguration.cs index a17755a3f7..4a55cf7e4b 100644 --- a/src/GitVersion.Configuration/BranchConfiguration.cs +++ b/src/GitVersion.Configuration/BranchConfiguration.cs @@ -1,4 +1,4 @@ -using GitVersion.Attributes; +using GitVersion.Configuration.Attributes; using GitVersion.Extensions; using GitVersion.VersionCalculation; diff --git a/src/GitVersion.Configuration/BranchConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/BranchConfigurationBuilder.cs similarity index 100% rename from src/GitVersion.Configuration/BranchConfigurationBuilder.cs rename to src/GitVersion.Configuration/Builders/BranchConfigurationBuilder.cs diff --git a/src/GitVersion.Configuration/ConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/ConfigurationBuilder.cs similarity index 100% rename from src/GitVersion.Configuration/ConfigurationBuilder.cs rename to src/GitVersion.Configuration/Builders/ConfigurationBuilder.cs diff --git a/src/GitVersion.Configuration/ConfigurationBuilderBase.cs b/src/GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs similarity index 100% rename from src/GitVersion.Configuration/ConfigurationBuilderBase.cs rename to src/GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs diff --git a/src/GitVersion.Configuration/EmptyConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/EmptyConfigurationBuilder.cs similarity index 100% rename from src/GitVersion.Configuration/EmptyConfigurationBuilder.cs rename to src/GitVersion.Configuration/Builders/EmptyConfigurationBuilder.cs diff --git a/src/GitVersion.Configuration/GitFlowConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs similarity index 100% rename from src/GitVersion.Configuration/GitFlowConfigurationBuilder.cs rename to src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs diff --git a/src/GitVersion.Configuration/GitHubFlowConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/GitHubFlowConfigurationBuilder.cs similarity index 100% rename from src/GitVersion.Configuration/GitHubFlowConfigurationBuilder.cs rename to src/GitVersion.Configuration/Builders/GitHubFlowConfigurationBuilder.cs diff --git a/src/GitVersion.Configuration/IgnoreConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/IgnoreConfigurationBuilder.cs similarity index 100% rename from src/GitVersion.Configuration/IgnoreConfigurationBuilder.cs rename to src/GitVersion.Configuration/Builders/IgnoreConfigurationBuilder.cs diff --git a/src/GitVersion.Configuration/TrunkBasedConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs similarity index 100% rename from src/GitVersion.Configuration/TrunkBasedConfigurationBuilder.cs rename to src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs diff --git a/src/GitVersion.Configuration/ConfigurationProvider.cs b/src/GitVersion.Configuration/ConfigurationProvider.cs index 6481e72304..c00b15ddcc 100644 --- a/src/GitVersion.Configuration/ConfigurationProvider.cs +++ b/src/GitVersion.Configuration/ConfigurationProvider.cs @@ -1,4 +1,4 @@ -using GitVersion.Configuration.SupportedWorkflows; +using GitVersion.Configuration.Workflows; using GitVersion.Extensions; using Microsoft.Extensions.Options; using YamlDotNet.Core; diff --git a/src/GitVersion.Configuration/GitVersion.Configuration.csproj b/src/GitVersion.Configuration/GitVersion.Configuration.csproj index e8d05c7f3a..9047c953a2 100644 --- a/src/GitVersion.Configuration/GitVersion.Configuration.csproj +++ b/src/GitVersion.Configuration/GitVersion.Configuration.csproj @@ -1,16 +1,22 @@ + + + GITVERSION_CONFIGURATION + + + - - - + + + diff --git a/src/GitVersion.Configuration/GitVersionConfiguration.cs b/src/GitVersion.Configuration/GitVersionConfiguration.cs index a89f960811..079fd14b11 100644 --- a/src/GitVersion.Configuration/GitVersionConfiguration.cs +++ b/src/GitVersion.Configuration/GitVersionConfiguration.cs @@ -1,6 +1,6 @@ using System.Globalization; using System.Text.RegularExpressions; -using GitVersion.Attributes; +using GitVersion.Configuration.Attributes; using GitVersion.Extensions; using GitVersion.VersionCalculation; using static GitVersion.Configuration.ConfigurationConstants; diff --git a/src/GitVersion.Configuration/IgnoreConfiguration.cs b/src/GitVersion.Configuration/IgnoreConfiguration.cs index 35ba62adc7..9ec97e2b0a 100644 --- a/src/GitVersion.Configuration/IgnoreConfiguration.cs +++ b/src/GitVersion.Configuration/IgnoreConfiguration.cs @@ -1,4 +1,4 @@ -using GitVersion.Attributes; +using GitVersion.Configuration.Attributes; namespace GitVersion.Configuration; diff --git a/src/GitVersion.Configuration/PreventIncrementConfiguration.cs b/src/GitVersion.Configuration/PreventIncrementConfiguration.cs index a2d2b919fb..45c187ae55 100644 --- a/src/GitVersion.Configuration/PreventIncrementConfiguration.cs +++ b/src/GitVersion.Configuration/PreventIncrementConfiguration.cs @@ -1,4 +1,4 @@ -using GitVersion.Attributes; +using GitVersion.Configuration.Attributes; namespace GitVersion.Configuration; diff --git a/src/GitVersion.Configuration/PublicAPI.Unshipped.txt b/src/GitVersion.Configuration/PublicAPI.Unshipped.txt index 22844134c1..66f6115d77 100644 --- a/src/GitVersion.Configuration/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Configuration/PublicAPI.Unshipped.txt @@ -1,4 +1,38 @@ #nullable enable +GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Date = 0 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.DateTime = 1 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Duration = 2 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Email = 3 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Hostname = 4 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.IdnEmail = 5 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.IdnHostname = 6 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Ipv4 = 7 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Ipv6 = 8 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Iri = 9 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.IriReference = 10 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.JsonPointer = 11 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Regex = 12 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.RelativeJsonPointer = 13 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Time = 14 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Uri = 15 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.UriReference = 16 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.UriTemplate = 17 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Uuid = 18 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute +GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(bool value) -> void +GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(GitVersion.Configuration.AssemblyFileVersioningScheme value) -> void +GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(GitVersion.Configuration.AssemblyVersioningScheme value) -> void +GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(GitVersion.SemanticVersionFormat value) -> void +GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(object? boxedValue) -> void +GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(string? value) -> void +GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.Value.get -> string! +GitVersion.Configuration.Attributes.JsonPropertyDescriptionAttribute +GitVersion.Configuration.Attributes.JsonPropertyDescriptionAttribute.Description.get -> string! +GitVersion.Configuration.Attributes.JsonPropertyDescriptionAttribute.JsonPropertyDescriptionAttribute(string! description) -> void +GitVersion.Configuration.Attributes.JsonPropertyFormatAttribute +GitVersion.Configuration.Attributes.JsonPropertyFormatAttribute.Format.get -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.JsonPropertyFormatAttribute.JsonPropertyFormatAttribute(GitVersion.Configuration.Attributes.Format format) -> void GitVersion.Configuration.ConfigurationException GitVersion.Configuration.ConfigurationException.ConfigurationException() -> void GitVersion.Configuration.ConfigurationException.ConfigurationException(string! message, System.Exception! innerException) -> void diff --git a/src/GitVersion.Configuration/SupportedWorkflows/GitFlow/v1.yml b/src/GitVersion.Configuration/Workflows/GitFlow/v1.yml similarity index 100% rename from src/GitVersion.Configuration/SupportedWorkflows/GitFlow/v1.yml rename to src/GitVersion.Configuration/Workflows/GitFlow/v1.yml diff --git a/src/GitVersion.Configuration/SupportedWorkflows/GitHubFlow/v1.yml b/src/GitVersion.Configuration/Workflows/GitHubFlow/v1.yml similarity index 100% rename from src/GitVersion.Configuration/SupportedWorkflows/GitHubFlow/v1.yml rename to src/GitVersion.Configuration/Workflows/GitHubFlow/v1.yml diff --git a/src/GitVersion.Configuration/SupportedWorkflows/TrunkBased/v1.yml b/src/GitVersion.Configuration/Workflows/TrunkBased/v1.yml similarity index 100% rename from src/GitVersion.Configuration/SupportedWorkflows/TrunkBased/v1.yml rename to src/GitVersion.Configuration/Workflows/TrunkBased/v1.yml diff --git a/src/GitVersion.Configuration/SupportedWorkflows/WorkflowManager.cs b/src/GitVersion.Configuration/Workflows/WorkflowManager.cs similarity index 95% rename from src/GitVersion.Configuration/SupportedWorkflows/WorkflowManager.cs rename to src/GitVersion.Configuration/Workflows/WorkflowManager.cs index 7df0d8e219..b22a9222b1 100644 --- a/src/GitVersion.Configuration/SupportedWorkflows/WorkflowManager.cs +++ b/src/GitVersion.Configuration/Workflows/WorkflowManager.cs @@ -1,6 +1,6 @@ using GitVersion.Extensions; -namespace GitVersion.Configuration.SupportedWorkflows; +namespace GitVersion.Configuration.Workflows; internal static class WorkflowManager { diff --git a/src/GitVersion.Core/Core/Attributes/JsonPropertyDescriptionAttribute.cs b/src/GitVersion.Core/Core/Attributes/JsonPropertyDescriptionAttribute.cs deleted file mode 100644 index b64b79c2f3..0000000000 --- a/src/GitVersion.Core/Core/Attributes/JsonPropertyDescriptionAttribute.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace GitVersion.Attributes; - -[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] -public sealed class JsonPropertyDescriptionAttribute : JsonAttribute -{ - /// - /// Initializes a new instance of with the specified property description. - /// - /// The description of the property. - public JsonPropertyDescriptionAttribute(string description) => Description = description; - - /// - /// The description of the property. - /// - public string Description { get; } -} diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 9e22460bd6..4c3a508afc 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -17,40 +17,6 @@ GitVersion.AssemblySettingsInfo.EnsureAssemblyInfo -> bool GitVersion.AssemblySettingsInfo.Files -> System.Collections.Generic.ISet! GitVersion.AssemblySettingsInfo.UpdateAssemblyInfo -> bool GitVersion.AssemblySettingsInfo.UpdateProjectFiles -> bool -GitVersion.Attributes.Format -GitVersion.Attributes.Format.Date = 0 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.DateTime = 1 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.Duration = 2 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.Email = 3 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.Hostname = 4 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.IdnEmail = 5 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.IdnHostname = 6 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.Ipv4 = 7 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.Ipv6 = 8 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.Iri = 9 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.IriReference = 10 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.JsonPointer = 11 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.Regex = 12 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.RelativeJsonPointer = 13 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.Time = 14 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.Uri = 15 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.UriReference = 16 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.UriTemplate = 17 -> GitVersion.Attributes.Format -GitVersion.Attributes.Format.Uuid = 18 -> GitVersion.Attributes.Format -GitVersion.Attributes.JsonPropertyDefaultAttribute -GitVersion.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(GitVersion.Configuration.AssemblyFileVersioningScheme value) -> void -GitVersion.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(GitVersion.Configuration.AssemblyVersioningScheme value) -> void -GitVersion.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(object? boxedValue) -> void -GitVersion.Attributes.JsonPropertyDefaultAttribute.Value.get -> string! -GitVersion.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(bool value) -> void -GitVersion.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(string? value) -> void -GitVersion.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(GitVersion.SemanticVersionFormat value) -> void -GitVersion.Attributes.JsonPropertyDescriptionAttribute -GitVersion.Attributes.JsonPropertyDescriptionAttribute.Description.get -> string! -GitVersion.Attributes.JsonPropertyDescriptionAttribute.JsonPropertyDescriptionAttribute(string! description) -> void -GitVersion.Attributes.JsonPropertyFormatAttribute -GitVersion.Attributes.JsonPropertyFormatAttribute.Format.get -> GitVersion.Attributes.Format -GitVersion.Attributes.JsonPropertyFormatAttribute.JsonPropertyFormatAttribute(GitVersion.Attributes.Format format) -> void GitVersion.BugException GitVersion.BugException.BugException() -> void GitVersion.BugException.BugException(string! message) -> void diff --git a/src/GitVersion.Output/GitVersion.Output.csproj b/src/GitVersion.Output/GitVersion.Output.csproj index 9de104e061..8b771aa5b5 100644 --- a/src/GitVersion.Output/GitVersion.Output.csproj +++ b/src/GitVersion.Output/GitVersion.Output.csproj @@ -1,10 +1,23 @@ + + + GITVERSION_OUTPUT + + + + + + + + + Attributes\JsonPropertyDescriptionAttribute.cs + diff --git a/src/GitVersion.Output/PublicAPI.Unshipped.txt b/src/GitVersion.Output/PublicAPI.Unshipped.txt index e2d0bb6407..a3558a8293 100644 --- a/src/GitVersion.Output/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Output/PublicAPI.Unshipped.txt @@ -4,6 +4,9 @@ GitVersion.IGitVersionOutputTool.GenerateGitVersionInformation(GitVersion.Output GitVersion.IGitVersionOutputTool.OutputVariables(GitVersion.OutputVariables.GitVersionVariables! variables, bool updateBuildNumber) -> void GitVersion.IGitVersionOutputTool.UpdateAssemblyInfo(GitVersion.OutputVariables.GitVersionVariables! variables) -> void GitVersion.IGitVersionOutputTool.UpdateWixVersionFile(GitVersion.OutputVariables.GitVersionVariables! variables) -> void +GitVersion.Output.Attributes.JsonPropertyDescriptionAttribute +GitVersion.Output.Attributes.JsonPropertyDescriptionAttribute.Description.get -> string! +GitVersion.Output.Attributes.JsonPropertyDescriptionAttribute.JsonPropertyDescriptionAttribute(string! description) -> void GitVersion.Output.GitVersionOutputModule GitVersion.Output.GitVersionOutputModule.GitVersionOutputModule() -> void GitVersion.Output.GitVersionOutputModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void \ No newline at end of file diff --git a/src/GitVersion.Output/Serializer/VersionVariablesJsonModel.cs b/src/GitVersion.Output/Serializer/VersionVariablesJsonModel.cs index 2aaec108be..89d32b254b 100644 --- a/src/GitVersion.Output/Serializer/VersionVariablesJsonModel.cs +++ b/src/GitVersion.Output/Serializer/VersionVariablesJsonModel.cs @@ -1,4 +1,4 @@ -using GitVersion.Attributes; +using GitVersion.Output.Attributes; namespace GitVersion.OutputVariables; diff --git a/src/GitVersion.Schema/DefaultAttributeHandler.cs b/src/GitVersion.Schema/DefaultAttributeHandler.cs index 8ffa5c5b5a..3d80690d21 100644 --- a/src/GitVersion.Schema/DefaultAttributeHandler.cs +++ b/src/GitVersion.Schema/DefaultAttributeHandler.cs @@ -1,4 +1,4 @@ -using GitVersion.Attributes; +using GitVersion.Configuration.Attributes; using Json.Schema.Generation; using Json.Schema.Generation.Intents; diff --git a/src/GitVersion.Schema/DescriptionAttributeHandler.cs b/src/GitVersion.Schema/DescriptionAttributeHandler.cs index f87bd157a5..2ebfd69302 100644 --- a/src/GitVersion.Schema/DescriptionAttributeHandler.cs +++ b/src/GitVersion.Schema/DescriptionAttributeHandler.cs @@ -1,14 +1,27 @@ -using GitVersion.Attributes; using Json.Schema.Generation; using Json.Schema.Generation.Intents; +using ConfigurationDescriptionAttribute = GitVersion.Configuration.Attributes.JsonPropertyDescriptionAttribute; +using OutputDescriptionAttribute = GitVersion.Output.Attributes.JsonPropertyDescriptionAttribute; + namespace GitVersion.Schema; -internal class DescriptionAttributeHandler : IAttributeHandler +internal class DescriptionAttributeHandler1 : IAttributeHandler +{ + void IAttributeHandler.AddConstraints(SchemaGenerationContextBase context, Attribute attribute) + { + if (attribute is ConfigurationDescriptionAttribute descriptionAttribute) + { + context.Intents.Insert(0, new DescriptionIntent(descriptionAttribute.Description)); + } + } +} + +internal class DescriptionAttributeHandler2 : IAttributeHandler { void IAttributeHandler.AddConstraints(SchemaGenerationContextBase context, Attribute attribute) { - if (attribute is JsonPropertyDescriptionAttribute descriptionAttribute) + if (attribute is OutputDescriptionAttribute descriptionAttribute) { context.Intents.Insert(0, new DescriptionIntent(descriptionAttribute.Description)); } diff --git a/src/GitVersion.Schema/FormatAttributeHandler.cs b/src/GitVersion.Schema/FormatAttributeHandler.cs index bd49aa4bba..1c3bd5a8d1 100644 --- a/src/GitVersion.Schema/FormatAttributeHandler.cs +++ b/src/GitVersion.Schema/FormatAttributeHandler.cs @@ -1,15 +1,15 @@ -using GitVersion.Attributes; using Json.Schema; using Json.Schema.Generation; using Json.Schema.Generation.Intents; -using Format = GitVersion.Attributes.Format; +using Format = GitVersion.Configuration.Attributes.Format; +using FormatAttribute = GitVersion.Configuration.Attributes.JsonPropertyFormatAttribute; namespace GitVersion.Schema; -internal class FormatAttributeHandler : IAttributeHandler +internal class FormatAttributeHandler : IAttributeHandler { void IAttributeHandler.AddConstraints(SchemaGenerationContextBase context, Attribute attribute) { - if (attribute is JsonPropertyFormatAttribute formatAttribute) + if (attribute is FormatAttribute formatAttribute) { Json.Schema.Format? format = formatAttribute.Format switch { diff --git a/src/GitVersion.Schema/Program.cs b/src/GitVersion.Schema/Program.cs index 25e30bbfac..3bed198c98 100644 --- a/src/GitVersion.Schema/Program.cs +++ b/src/GitVersion.Schema/Program.cs @@ -17,7 +17,8 @@ }; AttributeHandler.AddHandler(); -AttributeHandler.AddHandler(); +AttributeHandler.AddHandler(); +AttributeHandler.AddHandler(); AttributeHandler.AddHandler(); var builder = new JsonSchemaBuilder(); @@ -33,7 +34,7 @@ configuration.PropertyNameResolver = PropertyNameResolvers.AsDeclared; -builder = new JsonSchemaBuilder(); +builder = new(); builder.Schema("http://json-schema.org/draft-07/schema#"); builder.Id($"https://gitversion.net/schemas/{schemaVersion}/GitVersion.json"); builder.Title("GitVersion version variables output"); From 268f8ff54023e9613d852917269c78ec5708009c Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 21 Mar 2024 21:51:25 +0100 Subject: [PATCH 056/544] cleanup --- .../Core/Exceptions/GitToolsException.cs | 23 ------------------- .../Core/Exceptions/GitVersionException.cs | 12 +++++----- src/GitVersion.Core/PublicAPI.Unshipped.txt | 5 ---- 3 files changed, 6 insertions(+), 34 deletions(-) delete mode 100644 src/GitVersion.Core/Core/Exceptions/GitToolsException.cs diff --git a/src/GitVersion.Core/Core/Exceptions/GitToolsException.cs b/src/GitVersion.Core/Core/Exceptions/GitToolsException.cs deleted file mode 100644 index 1a91dae6a2..0000000000 --- a/src/GitVersion.Core/Core/Exceptions/GitToolsException.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace GitVersion; - -[Serializable] -public class GitToolsException : Exception -{ - public GitToolsException(string messageFormat, params object[] args) - : base(string.Format(messageFormat, args)) - { - } - - public GitToolsException(string message, Exception innerException) - : base(message, innerException) - { - } - - public GitToolsException() - { - } - - public GitToolsException(string? message) : base(message) - { - } -} diff --git a/src/GitVersion.Core/Core/Exceptions/GitVersionException.cs b/src/GitVersion.Core/Core/Exceptions/GitVersionException.cs index 75ca19e2c4..3fc07f140b 100644 --- a/src/GitVersion.Core/Core/Exceptions/GitVersionException.cs +++ b/src/GitVersion.Core/Core/Exceptions/GitVersionException.cs @@ -1,8 +1,12 @@ namespace GitVersion; [Serializable] -public class GitVersionException : GitToolsException +public class GitVersionException : Exception { + public GitVersionException() + { + } + public GitVersionException(string message) : base(message) { @@ -13,11 +17,7 @@ public GitVersionException(string message, Exception innerException) { } - public GitVersionException(string messageFormat, params object[] args) : base(messageFormat, args) - { - } - - public GitVersionException() + public GitVersionException(string messageFormat, params object[] args) : base(string.Format(messageFormat, args)) { } } diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 4c3a508afc..c87153c025 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -291,11 +291,6 @@ GitVersion.Git.ReferenceName.WithoutOrigin.get -> string! GitVersion.Git.RefSpecDirection GitVersion.Git.RefSpecDirection.Fetch = 0 -> GitVersion.Git.RefSpecDirection GitVersion.Git.RefSpecDirection.Push = 1 -> GitVersion.Git.RefSpecDirection -GitVersion.GitToolsException -GitVersion.GitToolsException.GitToolsException() -> void -GitVersion.GitToolsException.GitToolsException(string! message, System.Exception! innerException) -> void -GitVersion.GitToolsException.GitToolsException(string! messageFormat, params object![]! args) -> void -GitVersion.GitToolsException.GitToolsException(string? message) -> void GitVersion.GitVersionCommonModule GitVersion.GitVersionCommonModule.GitVersionCommonModule() -> void GitVersion.GitVersionCommonModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void From 0dcab41800f6856432075b051e1a190d109c51c3 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Fri, 22 Mar 2024 20:00:40 +0100 Subject: [PATCH 057/544] #3937 - adapt docs to point to gittools/actions for GitHub Actions and Azure Pipelines --- .../reference/build-servers/azure-devops.md | 169 +----------------- .../build-servers/bitbucket-pipelines.md | 2 +- .../docs/reference/build-servers/buildkite.md | 2 +- .../docs/reference/build-servers/continua.md | 2 +- .../reference/build-servers/github-actions.md | 18 ++ .../docs/reference/build-servers/gitlab.md | 2 +- .../docs/reference/build-servers/jenkins.md | 2 +- .../docs/reference/build-servers/myget.md | 2 +- .../reference/build-servers/octopus-deploy.md | 2 +- .../docs/reference/build-servers/teamcity.md | 2 +- 10 files changed, 30 insertions(+), 173 deletions(-) create mode 100644 docs/input/docs/reference/build-servers/github-actions.md diff --git a/docs/input/docs/reference/build-servers/azure-devops.md b/docs/input/docs/reference/build-servers/azure-devops.md index b48840fbb1..8439d978d6 100644 --- a/docs/input/docs/reference/build-servers/azure-devops.md +++ b/docs/input/docs/reference/build-servers/azure-devops.md @@ -2,17 +2,12 @@ Order: 20 Title: Azure DevOps Description: | - Details on the Azure DevOps or Team Foundation Server Build Pipeline support - in GitVersion + Details on the Azure DevOps Build Pipeline support in GitVersion RedirectFrom: docs/build-server-support/build-server/azure-devops --- +## Installation and usage -## Basic Usage - -In Azure DevOps Pipeline (the web based build system) you can call GitVersion -either using the Command Line build step or install an extension / custom build -step. The custom build step requires a one-time setup to import the GitVersion -task into your TFS or Azure DevOps Pipeline instance. +For Azure DevOps Services or Azure DevOps Server you can install the [GitTools Bundle](https://marketplace.visualstudio.com/items?itemName=gittools.gittools). :::{.alert .alert-danger} **Important** @@ -22,160 +17,4 @@ without it, Azure DevOps Pipelines will perform a shallow clone, which will caus See [the Azure DevOps documentation](https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/steps-checkout?view=azure-pipelines#shallow-fetch) for more information. ::: -## Executing GitVersion - -### Using GitVersion with the MSBuild Task NuGet Package - -1. Add the [GitVersionTask](https://www.nuget.org/packages/GitVersionTask/) - NuGet package to your projects. - -See [MSBuild Task](/docs/usage/msbuild) for further instructions how to use -the MS Build Task. - -### Using GitVersion with the Command Line build step - -1. Make sure to have GitVersion.exe under version control. There exists also a - [Chocolatey package](https://chocolatey.org/packages/GitVersion.Portable) for - installing GitVersion.exe on build agents. -2. Add a Command Line build step to your build definition. You'll probably want - to drag the task to be at or near the top to ensure it executes before your - other build steps. -3. Set the Tool parameter to `\GitVersion.exe`. -4. Set the Arguments parameter to `/output buildserver /nofetch`. -5. If you want the GitVersionTask to update AssemblyInfo files add - `updateAssemblyInfo true` to the Arguments parameter. -6. If you want to update the build number you need to send a - [logging command](https://github.com/microsoft/azure-pipelines-tasks/blob/main/docs/authoring/commands.md) - to TFS. - -### Using the custom GitVersion build step - -#### Installing - -##### Installing the extension - -For Visual Studio Team Service or TFS 2015 Update 2 or higher it is recommended -to install the GitVersion extension: - -1. Install the - [GitVersion Extension](https://marketplace.visualstudio.com/items?itemName=gittools.usegitversion). - -##### Manually installing/updating the custom build step - -If you run TFS 2015 RTM or Update 1 or don't want to install the GitVersion -extension you can install the build task manually: - -1. Install the `tfx` command line tool as shown [here](https://github.com/microsoft/tfs-cli/blob/master/README.md#setup). -2. For TFS 2015 On-Prem configure Basic Authentication in TFS as shown [here](https://github.com/microsoft/tfs-cli/blob/master/docs/configureBasicAuth.md). -3. Download the GitVersion TFS build task from the latest release on the - [GitVersion releases page](https://github.com/GitTools/GitVersion/releases) and - unzip. -4. Run `tfx login` as shown [here](https://github.com/microsoft/tfs-cli/blob/master/README.md#login). -5. From the directory outside of where you unzipped the task, run - `tfx build tasks upload --task-path .\GitVersionVsixTask --overwrite` where - GitVersionVsixTask is the directory containing the files. -6. It should successfully install. - -#### Using the GitVersion custom build step - -From a TFS build definition, select "Add a Step" and then in the Build category, -choose GitVersion and click Add. You'll probably want to drag the task to be at -or near the top to ensure it executes before your other build steps. - -If you want the GitVersionTask to update AssemblyInfo files, check the box in -the task configuration. For advanced usage, you can pass additional options to -the GitVersion exe in the Additional arguments section. - -The Azure DevOps Pipeline build step can update your build number with -GitVersion variables. See below for details. - -#### Using Pipelines yaml - -Add the following yaml task and variable to your `azure-pipelines.yml` file: - -```yml -variables: - GitVersion.SemVer: '' - -steps: -- task: UseGitVersion@5 - displayName: gitversion - inputs: - versionSpec: '5.x' - updateAssemblyInfo: true -``` - -You can now use the `GitVersion.SemVer` environment variable in any subsequent -tasks to refer to the semantic version number for your build. For example, you -can build your dotnet core application with a semantic version number like so: - -```yml -- task: DotNetCoreCLI@2 - displayName: Build - inputs: - command: build - projects: '$(solution)' - configuration: '$(buildConfiguration)' - versioningScheme: byEnvVar - versionEnvVar: 'GitVersion.SemVer' - -``` - -## Running inside TFS - -### Using the GitVersion Variables - -GitVersion passes variables in the form of `GitVersion.*` (Eg: -`GitVersion.Major`) to TFS Build and also writes `GITVERSION.*` -(Eg: `GITVERSION.MAJOR`) environment variables that are available for any -subsequent build step. - -To use these variables you can just refer to them using the standard variable -syntax. For instance `$(GitVersion.NuGetVersion)` in your nuget pack task to set -the version number. Since update 1 there are no known limitations. - -See [Variables](/docs/reference/variables) for an overview of available variables. - -#### Using GitVersion variables in build name - -To use GitVersion's variables in the build name, just add them in the form -`$(GITVERSION_FullSemVer)` into the Build definition's build number string. Then -just ensure GitVersion is called with `/output buildserver` and it will replace -those variables with the calculated version. The TFS GitVersion Build Step -(above) handles this too, so if you're already using that, there's nothing extra -to configure. - -If GitVersion does not find any substitutions it will just default to using `FullSemVer` - -:::{.alert .alert-danger} -**Important** - -If you currently use `$(rev:.r)` in your build number, that won't -work correctly if you -use GitVersion variables as well due to the delayed expansion of the GitVersion -vars. Instead, you might be able to use `$(GitVersion_BuildMetaData)` to achieve -a similar result. See [Variables](/docs/reference/variables) for more info on the -variables. -::: - -#### Known limitations - -* If you are using on premises TFS, make sure you are using at least - **TFS 2015 Update 1**, otherwise a few things will not work. -* Installing the extension on an on premise TFS requires at least TFS 2015 - Update 2. -* You need to make sure that all tags are fetched for the Git repository, - otherwise you may end with wrong versions (e.g. `FullSemVer` like `1.2.0+5` - instead of `1.2.0` for tagged releases) Just checking the `Clean Repository` - check box in the build definition settings might not be enough since this will - run a `git clean -fdx/reset --hard` without fetching all tags later. You can - force deletion of the whole folder and a re-clone containing all tags by - settings the variable `Build.Clean` to `all`. This will take more time during - build but makes sure that all tags are fetched. In the future it is planned to - allow using `git.exe` instead of current `libgit2sharp` for syncing the repos - which might allow other possibilities to solve this issue. For details see this - [GitHub issue](https://github.com/microsoft/azure-pipelines-tasks/issues/1218). -* If running a build for a certain commit (through passing the commit SHA while - queueing the build) all tags from the repository will be fetched, even the ones - newer than the commit. This can lead to different version numbers while - re-running historical builds. +More information can be found at [gittools/actions](https://github.com/GitTools/actions/blob/main/docs/examples/azure/gitversion/index.md). \ No newline at end of file diff --git a/docs/input/docs/reference/build-servers/bitbucket-pipelines.md b/docs/input/docs/reference/build-servers/bitbucket-pipelines.md index c06e5b3d9e..b809cee247 100644 --- a/docs/input/docs/reference/build-servers/bitbucket-pipelines.md +++ b/docs/input/docs/reference/build-servers/bitbucket-pipelines.md @@ -1,5 +1,5 @@ --- -Order: 35 +Order: 40 Title: BitBucket Pipelines Description: Details on the Atlassian BitBucket Pipelines support in GitVersion --- diff --git a/docs/input/docs/reference/build-servers/buildkite.md b/docs/input/docs/reference/build-servers/buildkite.md index 5531690ef1..d06e9d4aad 100644 --- a/docs/input/docs/reference/build-servers/buildkite.md +++ b/docs/input/docs/reference/build-servers/buildkite.md @@ -1,5 +1,5 @@ --- -Order: 40 +Order: 50 Title: Buildkite Description: Details on the Buildkite support in GitVersion RedirectFrom: docs/build-server-support/build-server/buildkite diff --git a/docs/input/docs/reference/build-servers/continua.md b/docs/input/docs/reference/build-servers/continua.md index 3605084d18..18f035eb04 100644 --- a/docs/input/docs/reference/build-servers/continua.md +++ b/docs/input/docs/reference/build-servers/continua.md @@ -1,5 +1,5 @@ --- -Order: 50 +Order: 60 Title: Continua CI Description: Details on the Continua CI support in GitVersion RedirectFrom: docs/build-server-support/build-server/continua diff --git a/docs/input/docs/reference/build-servers/github-actions.md b/docs/input/docs/reference/build-servers/github-actions.md new file mode 100644 index 0000000000..160498235a --- /dev/null +++ b/docs/input/docs/reference/build-servers/github-actions.md @@ -0,0 +1,18 @@ +--- +Order: 70 +Title: GitHunb Actions +Description: | + Details on the GitHunb Actions Workflow support in GitVersion +--- +## Installation and usage + +For GitHub Actions you can install the action from [GitTools Bundle](https://github.com/marketplace/actions/gittools). + +:::{.alert .alert-danger} +**Important** + +You must disable shallow fetch by setting `fetch-depth: 0` in your `checkout` step; +without it, GitHunb Actions might perform a shallow clone, which will cause GitVersion to display an error message. +::: + +More information can be found at [gittools/actions](https://github.com/GitTools/actions/blob/main/docs/examples/github/gitversion/index.md). \ No newline at end of file diff --git a/docs/input/docs/reference/build-servers/gitlab.md b/docs/input/docs/reference/build-servers/gitlab.md index b9495856e7..a3f9acde28 100755 --- a/docs/input/docs/reference/build-servers/gitlab.md +++ b/docs/input/docs/reference/build-servers/gitlab.md @@ -1,5 +1,5 @@ --- -Order: 60 +Order: 80 Title: GitLab CI Description: Details on the GitLab CI support in GitVersion RedirectFrom: docs/build-server-support/build-server/gitlab diff --git a/docs/input/docs/reference/build-servers/jenkins.md b/docs/input/docs/reference/build-servers/jenkins.md index 46b6355a29..70f376e8f1 100644 --- a/docs/input/docs/reference/build-servers/jenkins.md +++ b/docs/input/docs/reference/build-servers/jenkins.md @@ -1,5 +1,5 @@ --- -Order: 70 +Order: 90 Title: Jenkins Description: Details on the Jenkins support in GitVersion RedirectFrom: docs/build-server-support/build-server/jenkins diff --git a/docs/input/docs/reference/build-servers/myget.md b/docs/input/docs/reference/build-servers/myget.md index 383d61408a..fd9166aa52 100644 --- a/docs/input/docs/reference/build-servers/myget.md +++ b/docs/input/docs/reference/build-servers/myget.md @@ -1,5 +1,5 @@ --- -Order: 80 +Order: 100 Title: MyGet Description: Details on the MyGet support in GitVersion RedirectFrom: docs/build-server-support/build-server/myget diff --git a/docs/input/docs/reference/build-servers/octopus-deploy.md b/docs/input/docs/reference/build-servers/octopus-deploy.md index 79ce4035cd..d802be9e62 100644 --- a/docs/input/docs/reference/build-servers/octopus-deploy.md +++ b/docs/input/docs/reference/build-servers/octopus-deploy.md @@ -1,5 +1,5 @@ --- -Order: 90 +Order: 110 Title: Octopus Deploy Description: Details on the Octopus Deploy support in GitVersion RedirectFrom: docs/build-server-support/build-server/octopus-deploy diff --git a/docs/input/docs/reference/build-servers/teamcity.md b/docs/input/docs/reference/build-servers/teamcity.md index 55d663cc8d..da4e7aad01 100644 --- a/docs/input/docs/reference/build-servers/teamcity.md +++ b/docs/input/docs/reference/build-servers/teamcity.md @@ -1,5 +1,5 @@ --- -Order: 100 +Order: 120 Title: TeamCity Description: Details on the TeamCity support in GitVersion RedirectFrom: docs/build-server-support/build-server/teamcity From e531621b21b872fdd4e1c16922a184125b48a4c4 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Fri, 22 Mar 2024 20:54:59 +0100 Subject: [PATCH 058/544] #3937 - adapt docs to point to gittools/actions for GitHub Actions and Azure Pipelines --- docs/input/docs/reference/build-servers/github-actions.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/input/docs/reference/build-servers/github-actions.md b/docs/input/docs/reference/build-servers/github-actions.md index 160498235a..0e92cff8e6 100644 --- a/docs/input/docs/reference/build-servers/github-actions.md +++ b/docs/input/docs/reference/build-servers/github-actions.md @@ -1,8 +1,8 @@ --- Order: 70 -Title: GitHunb Actions +Title: GitHub Actions Description: | - Details on the GitHunb Actions Workflow support in GitVersion + Details on the GitHub Actions Workflow support in GitVersion --- ## Installation and usage @@ -12,7 +12,7 @@ For GitHub Actions you can install the action from [GitTools Bundle](https://git **Important** You must disable shallow fetch by setting `fetch-depth: 0` in your `checkout` step; -without it, GitHunb Actions might perform a shallow clone, which will cause GitVersion to display an error message. +without it, GitHub Actions might perform a shallow clone, which will cause GitVersion to display an error message. ::: More information can be found at [gittools/actions](https://github.com/GitTools/actions/blob/main/docs/examples/github/gitversion/index.md). \ No newline at end of file From b6eea77d60d7e9ef8473dc1703a64f357719140d Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 26 Mar 2024 11:19:53 +0100 Subject: [PATCH 059/544] minor refactoring in ConfigurationFileLocator --- .../ConfigurationProviderTests.cs | 48 +++++------ .../ConfigurationFileLocator.cs | 80 ++++++++----------- .../ConfigurationProvider.cs | 28 +++++-- .../Workflows/WorkflowManager.cs | 2 +- .../IConfigurationFileLocator.cs | 4 +- src/GitVersion.Core/PublicAPI.Unshipped.txt | 4 +- .../Caching/GitVersionCacheKeyFactory.cs | 4 +- 7 files changed, 84 insertions(+), 86 deletions(-) diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs index 7ea7a66aff..49c102d700 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs @@ -363,31 +363,31 @@ public void ShouldNotOverrideAnythingWhenOverrideConfigIsEmpty() .WithNextVersion("1.2.3") .WithTagPrefix("custom-tag-prefix-from-yml") .Build(); - var overridenConfig = this.configurationProvider.ProvideForDirectory(this.repoPath); - - overridenConfig.AssemblyVersioningScheme.ShouldBe(expectedConfig.AssemblyVersioningScheme); - overridenConfig.AssemblyFileVersioningScheme.ShouldBe(expectedConfig.AssemblyFileVersioningScheme); - overridenConfig.AssemblyInformationalFormat.ShouldBe(expectedConfig.AssemblyInformationalFormat); - overridenConfig.AssemblyVersioningFormat.ShouldBe(expectedConfig.AssemblyVersioningFormat); - overridenConfig.AssemblyFileVersioningFormat.ShouldBe(expectedConfig.AssemblyFileVersioningFormat); - overridenConfig.TagPrefix.ShouldBe(expectedConfig.TagPrefix); - overridenConfig.NextVersion.ShouldBe(expectedConfig.NextVersion); - overridenConfig.MajorVersionBumpMessage.ShouldBe(expectedConfig.MajorVersionBumpMessage); - overridenConfig.MinorVersionBumpMessage.ShouldBe(expectedConfig.MinorVersionBumpMessage); - overridenConfig.PatchVersionBumpMessage.ShouldBe(expectedConfig.PatchVersionBumpMessage); - overridenConfig.NoBumpMessage.ShouldBe(expectedConfig.NoBumpMessage); - overridenConfig.TagPreReleaseWeight.ShouldBe(expectedConfig.TagPreReleaseWeight); - overridenConfig.CommitDateFormat.ShouldBe(expectedConfig.CommitDateFormat); - overridenConfig.MergeMessageFormats.ShouldBe(expectedConfig.MergeMessageFormats); - overridenConfig.UpdateBuildNumber.ShouldBe(expectedConfig.UpdateBuildNumber); - - overridenConfig.Ignore.ShouldBeEquivalentTo(expectedConfig.Ignore); - - overridenConfig.Branches.Keys.ShouldBe(expectedConfig.Branches.Keys); - - foreach (var branch in overridenConfig.Branches.Keys) + var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); + + configuration.AssemblyVersioningScheme.ShouldBe(expectedConfig.AssemblyVersioningScheme); + configuration.AssemblyFileVersioningScheme.ShouldBe(expectedConfig.AssemblyFileVersioningScheme); + configuration.AssemblyInformationalFormat.ShouldBe(expectedConfig.AssemblyInformationalFormat); + configuration.AssemblyVersioningFormat.ShouldBe(expectedConfig.AssemblyVersioningFormat); + configuration.AssemblyFileVersioningFormat.ShouldBe(expectedConfig.AssemblyFileVersioningFormat); + configuration.TagPrefix.ShouldBe(expectedConfig.TagPrefix); + configuration.NextVersion.ShouldBe(expectedConfig.NextVersion); + configuration.MajorVersionBumpMessage.ShouldBe(expectedConfig.MajorVersionBumpMessage); + configuration.MinorVersionBumpMessage.ShouldBe(expectedConfig.MinorVersionBumpMessage); + configuration.PatchVersionBumpMessage.ShouldBe(expectedConfig.PatchVersionBumpMessage); + configuration.NoBumpMessage.ShouldBe(expectedConfig.NoBumpMessage); + configuration.TagPreReleaseWeight.ShouldBe(expectedConfig.TagPreReleaseWeight); + configuration.CommitDateFormat.ShouldBe(expectedConfig.CommitDateFormat); + configuration.MergeMessageFormats.ShouldBe(expectedConfig.MergeMessageFormats); + configuration.UpdateBuildNumber.ShouldBe(expectedConfig.UpdateBuildNumber); + + configuration.Ignore.ShouldBeEquivalentTo(expectedConfig.Ignore); + + configuration.Branches.Keys.ShouldBe(expectedConfig.Branches.Keys); + + foreach (var branch in configuration.Branches.Keys) { - overridenConfig.Branches[branch].ShouldBeEquivalentTo(expectedConfig.Branches[branch]); + configuration.Branches[branch].ShouldBeEquivalentTo(expectedConfig.Branches[branch]); } } diff --git a/src/GitVersion.Configuration/ConfigurationFileLocator.cs b/src/GitVersion.Configuration/ConfigurationFileLocator.cs index 374c6efa1a..6d23ac35c5 100644 --- a/src/GitVersion.Configuration/ConfigurationFileLocator.cs +++ b/src/GitVersion.Configuration/ConfigurationFileLocator.cs @@ -1,74 +1,62 @@ using GitVersion.Extensions; using GitVersion.Helpers; +using GitVersion.Logging; using Microsoft.Extensions.Options; namespace GitVersion.Configuration; -internal class ConfigurationFileLocator(IFileSystem fileSystem, IConfigurationSerializer configurationSerializer, IOptions options) +internal class ConfigurationFileLocator( + IFileSystem fileSystem, + ILog log, + IOptions options) : IConfigurationFileLocator { public const string DefaultFileName = "GitVersion.yml"; public const string DefaultAlternativeFileName = "GitVersion.yaml"; - private readonly string? configurationFile = options.Value.ConfigurationInfo.ConfigurationFile; + private readonly IFileSystem fileSystem = fileSystem.NotNull(); + private readonly ILog log = log.NotNull(); + private readonly IOptions options = options.NotNull(); - public bool TryGetConfigurationFile(string? workingDirectory, string? projectRootDirectory, out string? configFilePath) - => - HasConfigurationFile(workingDirectory, out configFilePath) - || HasConfigurationFile(projectRootDirectory, out configFilePath); + private string? ConfigurationFile => options.Value.ConfigurationInfo.ConfigurationFile; public void Verify(string? workingDirectory, string? projectRootDirectory) { - if (Path.IsPathRooted(this.configurationFile)) return; + if (Path.IsPathRooted(this.ConfigurationFile)) return; if (PathHelper.Equal(workingDirectory, projectRootDirectory)) return; WarnAboutAmbiguousConfigFileSelection(workingDirectory, projectRootDirectory); } - public IGitVersionConfiguration ReadConfiguration(string? configFilePath) + public string? GetConfigurationFile(string? directory) { - if (configFilePath == null || !fileSystem.Exists(configFilePath)) return GitHubFlowConfigurationBuilder.New.Build(); - - var readAllText = fileSystem.ReadAllText(configFilePath); - var configuration = configurationSerializer.ReadConfiguration(readAllText) - ?? GitHubFlowConfigurationBuilder.New.Build(); - return configuration; - } - - public IReadOnlyDictionary? ReadOverrideConfiguration(string? configFilePath) - { - if (configFilePath == null || !fileSystem.Exists(configFilePath)) return null; - - var readAllText = fileSystem.ReadAllText(configFilePath); - - return configurationSerializer.Deserialize>(readAllText); - } - - private bool HasConfigurationFile(string? workingDirectory, out string? path) - { - bool HasConfigurationFileAt(string fileName, out string? configFile) + if (directory is null) return null; + string?[] candidates = [this.ConfigurationFile, DefaultFileName, DefaultAlternativeFileName]; + var candidatePaths = + from candidate in candidates + where !candidate.IsNullOrWhiteSpace() + select PathHelper.Combine(directory, candidate); + + foreach (var candidatePath in candidatePaths) { - configFile = null; - if (!fileSystem.Exists(PathHelper.Combine(workingDirectory, fileName))) return false; - - configFile = PathHelper.Combine(workingDirectory, fileName); - return true; + this.log.Debug($"Trying to find configuration file at '{candidatePath}'"); + if (fileSystem.Exists(candidatePath)) + { + this.log.Info($"Found configuration file at '{candidatePath}'"); + return candidatePath; + } + this.log.Debug($"Configuration file not found at '{candidatePath}'"); } - path = null; - if (workingDirectory is null) return false; - return !this.configurationFile.IsNullOrWhiteSpace() - ? HasConfigurationFileAt(this.configurationFile, out path) - : HasConfigurationFileAt(DefaultFileName, out path) - || HasConfigurationFileAt(DefaultAlternativeFileName, out path); + return null; } private void WarnAboutAmbiguousConfigFileSelection(string? workingDirectory, string? projectRootDirectory) { - TryGetConfigurationFile(workingDirectory, null, out var workingConfigFile); - TryGetConfigurationFile(null, projectRootDirectory, out var projectRootConfigFile); + var workingConfigFile = GetConfigurationFile(workingDirectory); + var projectRootConfigFile = GetConfigurationFile(projectRootDirectory); - var hasConfigInWorkingDirectory = workingConfigFile != null && fileSystem.Exists(workingConfigFile); - var hasConfigInProjectRootDirectory = projectRootConfigFile != null && fileSystem.Exists(projectRootConfigFile); + var hasConfigInWorkingDirectory = workingConfigFile != null; + var hasConfigInProjectRootDirectory = projectRootConfigFile != null; if (hasConfigInProjectRootDirectory && hasConfigInWorkingDirectory) { @@ -77,10 +65,10 @@ private void WarnAboutAmbiguousConfigFileSelection(string? workingDirectory, str if (!hasConfigInProjectRootDirectory && !hasConfigInWorkingDirectory) { - if (this.configurationFile != DefaultFileName && this.configurationFile != DefaultAlternativeFileName) + if (this.ConfigurationFile is not (DefaultFileName or DefaultAlternativeFileName)) { - workingConfigFile = PathHelper.Combine(workingDirectory, this.configurationFile); - projectRootConfigFile = PathHelper.Combine(projectRootDirectory, this.configurationFile); + workingConfigFile = PathHelper.Combine(workingDirectory, this.ConfigurationFile); + projectRootConfigFile = PathHelper.Combine(projectRootDirectory, this.ConfigurationFile); throw new WarningException($"The configuration file was not found at '{workingConfigFile}' or '{projectRootConfigFile}'"); } } diff --git a/src/GitVersion.Configuration/ConfigurationProvider.cs b/src/GitVersion.Configuration/ConfigurationProvider.cs index c00b15ddcc..daf2fc1a28 100644 --- a/src/GitVersion.Configuration/ConfigurationProvider.cs +++ b/src/GitVersion.Configuration/ConfigurationProvider.cs @@ -7,10 +7,14 @@ namespace GitVersion.Configuration; internal class ConfigurationProvider( IConfigurationFileLocator configFileLocator, + IFileSystem fileSystem, + IConfigurationSerializer configurationSerializer, IOptions options) : IConfigurationProvider { private readonly IConfigurationFileLocator configFileLocator = configFileLocator.NotNull(); + private readonly IFileSystem fileSystem = fileSystem.NotNull(); + private readonly IConfigurationSerializer configurationSerializer = configurationSerializer.NotNull(); private readonly IOptions options = options.NotNull(); public IGitVersionConfiguration Provide(IReadOnlyDictionary? overrideConfiguration) @@ -19,22 +23,25 @@ public IGitVersionConfiguration Provide(IReadOnlyDictionary? ov var workingDirectory = gitVersionOptions.WorkingDirectory; var projectRootDirectory = workingDirectory.FindGitDir()?.WorkingTreeDirectory; - return this.configFileLocator.TryGetConfigurationFile(workingDirectory, projectRootDirectory, out var configFilePath) - ? ProvideConfiguration(configFilePath, overrideConfiguration) + var configurationFile = this.configFileLocator.GetConfigurationFile(workingDirectory) + ?? this.configFileLocator.GetConfigurationFile(projectRootDirectory); + + return configurationFile is not null + ? ProvideConfiguration(configurationFile, overrideConfiguration) : ProvideForDirectory(null, overrideConfiguration); } internal IGitVersionConfiguration ProvideForDirectory(string? workingDirectory, - IReadOnlyDictionary? overrideConfiguration = null) + IReadOnlyDictionary? overrideConfiguration = null) { - this.configFileLocator.TryGetConfigurationFile(workingDirectory, null, out var configFilePath); + var configFilePath = this.configFileLocator.GetConfigurationFile(workingDirectory); return ProvideConfiguration(configFilePath, overrideConfiguration); } private IGitVersionConfiguration ProvideConfiguration(string? configFile, - IReadOnlyDictionary? overrideConfiguration = null) + IReadOnlyDictionary? overrideConfiguration = null) { - var overrideConfigurationFromFile = this.configFileLocator.ReadOverrideConfiguration(configFile); + var overrideConfigurationFromFile = ReadOverrideConfiguration(configFile); var workflow = GetWorkflow(overrideConfiguration, overrideConfigurationFromFile); @@ -45,7 +52,7 @@ private IGitVersionConfiguration ProvideConfiguration(string? configFile, var overrideConfigurationFromWorkflow = WorkflowManager.GetOverrideConfiguration(workflow); foreach (var item in new[] { overrideConfigurationFromWorkflow, overrideConfigurationFromFile, overrideConfiguration }) { - if (item != null) configurationBuilder.AddOverride(item); + if (item is not null) configurationBuilder.AddOverride(item); } try @@ -62,6 +69,13 @@ private IGitVersionConfiguration ProvideConfiguration(string? configFile, } } + private IReadOnlyDictionary? ReadOverrideConfiguration(string? configFilePath) + { + if (configFilePath == null || !fileSystem.Exists(configFilePath)) return null; + var content = fileSystem.ReadAllText(configFilePath); + return configurationSerializer.Deserialize>(content); + } + private static string? GetWorkflow(IReadOnlyDictionary? overrideConfiguration, IReadOnlyDictionary? overrideConfigurationFromFile) { string? workflow = null; diff --git a/src/GitVersion.Configuration/Workflows/WorkflowManager.cs b/src/GitVersion.Configuration/Workflows/WorkflowManager.cs index b22a9222b1..a9f42ff5d5 100644 --- a/src/GitVersion.Configuration/Workflows/WorkflowManager.cs +++ b/src/GitVersion.Configuration/Workflows/WorkflowManager.cs @@ -14,7 +14,7 @@ private static string DetermineResourceNameTemplate() return $"{resourceNamePrefix}.{{0}}.yml"; } - public static Dictionary? GetOverrideConfiguration(string? workflow) + public static IReadOnlyDictionary? GetOverrideConfiguration(string? workflow) { if (string.IsNullOrEmpty(workflow)) return null; diff --git a/src/GitVersion.Core/Configuration/IConfigurationFileLocator.cs b/src/GitVersion.Core/Configuration/IConfigurationFileLocator.cs index 17e5c17a07..2ab64908cd 100644 --- a/src/GitVersion.Core/Configuration/IConfigurationFileLocator.cs +++ b/src/GitVersion.Core/Configuration/IConfigurationFileLocator.cs @@ -2,8 +2,6 @@ namespace GitVersion.Configuration; public interface IConfigurationFileLocator { - bool TryGetConfigurationFile(string? workingDirectory, string? projectRootDirectory, out string? configFilePath); - IGitVersionConfiguration ReadConfiguration(string? configFilePath); - IReadOnlyDictionary? ReadOverrideConfiguration(string? configFilePath); void Verify(string? workingDirectory, string? projectRootDirectory); + string? GetConfigurationFile(string? directory); } diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index c87153c025..2f06472163 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -109,9 +109,7 @@ GitVersion.Configuration.IBranchConfiguration.TrackMergeMessage.get -> bool? GitVersion.Configuration.IBranchConfiguration.TrackMergeTarget.get -> bool? GitVersion.Configuration.IBranchConfiguration.TracksReleaseBranches.get -> bool? GitVersion.Configuration.IConfigurationFileLocator -GitVersion.Configuration.IConfigurationFileLocator.ReadConfiguration(string? configFilePath) -> GitVersion.Configuration.IGitVersionConfiguration! -GitVersion.Configuration.IConfigurationFileLocator.ReadOverrideConfiguration(string? configFilePath) -> System.Collections.Generic.IReadOnlyDictionary? -GitVersion.Configuration.IConfigurationFileLocator.TryGetConfigurationFile(string? workingDirectory, string? projectRootDirectory, out string? configFilePath) -> bool +GitVersion.Configuration.IConfigurationFileLocator.GetConfigurationFile(string? directory) -> string? GitVersion.Configuration.IConfigurationFileLocator.Verify(string? workingDirectory, string? projectRootDirectory) -> void GitVersion.Configuration.IConfigurationProvider GitVersion.Configuration.IConfigurationProvider.Provide(System.Collections.Generic.IReadOnlyDictionary? overrideConfiguration = null) -> GitVersion.Configuration.IGitVersionConfiguration! diff --git a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs index e0fa826ae2..429071f0bd 100644 --- a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs +++ b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs @@ -170,8 +170,8 @@ private string GetConfigFileHash() var workingDirectory = this.options.Value.WorkingDirectory; var projectRootDirectory = this.repositoryInfo.ProjectRootDirectory; - if (!this.configFileLocator.TryGetConfigurationFile(workingDirectory, projectRootDirectory, out var configFilePath)) - return string.Empty; + var configFilePath = this.configFileLocator.GetConfigurationFile(workingDirectory) + ?? this.configFileLocator.GetConfigurationFile(projectRootDirectory); if (configFilePath == null) return string.Empty; if (!this.fileSystem.Exists(configFilePath)) return string.Empty; From 7477ac3c3194c5fa2899b42484c4f61186051b46 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:36:43 +0000 Subject: [PATCH 060/544] (deps): Bump JsonSchema.Net.Generation from 4.1.1 to 4.2.0 Bumps [JsonSchema.Net.Generation](https://github.com/gregsdennis/json-everything) from 4.1.1 to 4.2.0. - [Commits](https://github.com/gregsdennis/json-everything/compare/schema-v4.1.1...schema-gen-v4.2.0) --- updated-dependencies: - dependency-name: JsonSchema.Net.Generation dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index e29230fb0f..fb81aee5c2 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -16,7 +16,7 @@ - + From 98a155c4e2f2f6adc2ad442be96d8c97ccf87571 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 26 Mar 2024 17:19:23 +0100 Subject: [PATCH 061/544] cleanup --- src/GitVersion.App/ArgumentParser.cs | 2 +- .../Configuration/ConfigurationProviderTests.cs | 2 +- src/GitVersion.Core/Extensions/ConfigurationExtensions.cs | 5 +++-- src/GitVersion.Core/Helpers/PathHelper.cs | 2 +- .../Tasks/GenerateGitVersionInformationTest.cs | 8 ++++---- .../Tasks/UpdateAssemblyInfoTaskTest.cs | 4 ++-- .../Fixtures/BaseGitFlowRepositoryFixture.cs | 3 ++- src/GitVersion.Testing/GitTestExtensions.cs | 2 +- src/GitVersion.Testing/Helpers/DirectoryHelper.cs | 4 +++- 9 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/GitVersion.App/ArgumentParser.cs b/src/GitVersion.App/ArgumentParser.cs index 2f9e53197c..dc16d9d7ca 100644 --- a/src/GitVersion.App/ArgumentParser.cs +++ b/src/GitVersion.App/ArgumentParser.cs @@ -108,7 +108,7 @@ private static void ValidateConfigurationFile(Arguments arguments) } else { - var configFilePath = Path.GetFullPath(Path.Combine(arguments.TargetPath!, arguments.ConfigurationFile)); + var configFilePath = Path.GetFullPath(PathHelper.Combine(arguments.TargetPath, arguments.ConfigurationFile)); if (!File.Exists(configFilePath)) throw new WarningException($"Could not find config file at '{configFilePath}'"); arguments.ConfigurationFile = configFilePath; } diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs index 49c102d700..dd5256fbd0 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs @@ -20,7 +20,7 @@ public class ConfigurationProviderTests : TestBase [SetUp] public void Setup() { - this.repoPath = Path.Combine(PathHelper.GetTempPath(), "MyGitRepo"); + this.repoPath = PathHelper.Combine(PathHelper.GetTempPath(), "MyGitRepo"); var options = Options.Create(new GitVersionOptions { WorkingDirectory = repoPath }); var sp = ConfigureServices(services => services.AddSingleton(options)); this.configurationProvider = (ConfigurationProvider)sp.GetRequiredService(); diff --git a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs index 78fb1521b3..9c5bb4ffec 100644 --- a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs +++ b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs @@ -1,6 +1,7 @@ using System.Text.RegularExpressions; using GitVersion.Extensions; using GitVersion.Git; +using GitVersion.Helpers; using GitVersion.VersionCalculation; namespace GitVersion.Configuration; @@ -117,7 +118,7 @@ public static (string GitDirectory, string WorkingTreeDirectory)? FindGitDir(thi string? startingDir = path; while (startingDir is not null) { - var dirOrFilePath = Path.Combine(startingDir, ".git"); + var dirOrFilePath = PathHelper.Combine(startingDir, ".git"); if (Directory.Exists(dirOrFilePath)) { return (dirOrFilePath, Path.GetDirectoryName(dirOrFilePath)!); @@ -128,7 +129,7 @@ public static (string GitDirectory, string WorkingTreeDirectory)? FindGitDir(thi string? relativeGitDirPath = ReadGitDirFromFile(dirOrFilePath); if (!string.IsNullOrWhiteSpace(relativeGitDirPath)) { - var fullGitDirPath = Path.GetFullPath(Path.Combine(startingDir, relativeGitDirPath)); + var fullGitDirPath = Path.GetFullPath(PathHelper.Combine(startingDir, relativeGitDirPath)); if (Directory.Exists(fullGitDirPath)) { return (fullGitDirPath, Path.GetDirectoryName(dirOrFilePath)!); diff --git a/src/GitVersion.Core/Helpers/PathHelper.cs b/src/GitVersion.Core/Helpers/PathHelper.cs index 2ba48e2638..f0521752da 100644 --- a/src/GitVersion.Core/Helpers/PathHelper.cs +++ b/src/GitVersion.Core/Helpers/PathHelper.cs @@ -4,7 +4,7 @@ internal static class PathHelper { public static string NewLine => SysEnv.NewLine; - public static readonly StringComparison OsDependentComparison = SysEnv.OSVersion.Platform switch + private static readonly StringComparison OsDependentComparison = SysEnv.OSVersion.Platform switch { PlatformID.Unix or PlatformID.MacOSX => StringComparison.Ordinal, _ => StringComparison.OrdinalIgnoreCase, diff --git a/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs b/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs index 82faa1483f..cd9a1c7588 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs @@ -169,7 +169,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA var extension = FileHelper.GetFileExtension(language); using var result = ExecuteMsBuildExe(project => { - var intermediateOutputPath = Path.Combine("$(MSBuildProjectDirectory)", randDir); + var intermediateOutputPath = PathHelper.Combine("$(MSBuildProjectDirectory)", randDir); AddGenerateGitVersionInformationTask(project, taskName, taskName, outputProperty, language, intermediateOutputPath); }, language); @@ -200,7 +200,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA var extension = FileHelper.GetFileExtension(language); using var result = ExecuteMsBuildExeInAzurePipeline(project => { - var intermediateOutputPath = Path.Combine("$(MSBuildProjectDirectory)", randDir); + var intermediateOutputPath = PathHelper.Combine("$(MSBuildProjectDirectory)", randDir); AddGenerateGitVersionInformationTask(project, taskName, taskName, outputProperty, language, intermediateOutputPath); }, language); @@ -231,7 +231,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA var extension = FileHelper.GetFileExtension(language); using var result = ExecuteMsBuildExe(project => { - var intermediateOutputPath = Path.Combine("$(MSBuildProjectDirectory)", randDir); + var intermediateOutputPath = PathHelper.Combine("$(MSBuildProjectDirectory)", randDir); AddGenerateGitVersionInformationTask(project, taskName, taskName, outputProperty, language, intermediateOutputPath).Property("UseProjectNamespaceForGitVersionInformation", "True").Property("RootNamespace", "Test.Root"); }, language); @@ -264,7 +264,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA var extension = FileHelper.GetFileExtension(language); using var result = ExecuteMsBuildExeInAzurePipeline(project => { - var intermediateOutputPath = Path.Combine("$(MSBuildProjectDirectory)", randDir); + var intermediateOutputPath = PathHelper.Combine("$(MSBuildProjectDirectory)", randDir); AddGenerateGitVersionInformationTask(project, taskName, taskName, outputProperty, language, intermediateOutputPath).Property("UseProjectNamespaceForGitVersionInformation", "True"); }, language); diff --git a/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs b/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs index 6f5121a2f1..651f9895e5 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs @@ -143,7 +143,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenRunWithMsBuildAndIntermedi var extension = FileHelper.GetFileExtension(language); using var result = ExecuteMsBuildExe(project => { - var intermediateOutputPath = Path.Combine("$(MSBuildProjectDirectory)", randDir); + var intermediateOutputPath = PathHelper.Combine("$(MSBuildProjectDirectory)", randDir); AddUpdateAssemblyInfoTask(project, taskName, taskName, outputProperty, language, intermediateOutputPath); }, language); @@ -170,7 +170,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenRunWithMsBuildAndIntermedi var extension = FileHelper.GetFileExtension(language); using var result = ExecuteMsBuildExeInAzurePipeline(project => { - var intermediateOutputPath = Path.Combine("$(MSBuildProjectDirectory)", randDir); + var intermediateOutputPath = PathHelper.Combine("$(MSBuildProjectDirectory)", randDir); AddUpdateAssemblyInfoTask(project, taskName, taskName, outputProperty, language, intermediateOutputPath); }, language); diff --git a/src/GitVersion.Testing/Fixtures/BaseGitFlowRepositoryFixture.cs b/src/GitVersion.Testing/Fixtures/BaseGitFlowRepositoryFixture.cs index 2775194b88..d241e697e0 100644 --- a/src/GitVersion.Testing/Fixtures/BaseGitFlowRepositoryFixture.cs +++ b/src/GitVersion.Testing/Fixtures/BaseGitFlowRepositoryFixture.cs @@ -1,3 +1,4 @@ +using GitVersion.Helpers; using LibGit2Sharp; namespace GitVersion.Testing; @@ -25,7 +26,7 @@ public BaseGitFlowRepositoryFixture(Action initialMainAction, strin private void SetupRepo(Action initialMainAction) { - var randomFile = Path.Combine(Repository.Info.WorkingDirectory, Guid.NewGuid().ToString()); + var randomFile = PathHelper.Combine(Repository.Info.WorkingDirectory, Guid.NewGuid().ToString()); File.WriteAllText(randomFile, string.Empty); Commands.Stage(Repository, randomFile); diff --git a/src/GitVersion.Testing/GitTestExtensions.cs b/src/GitVersion.Testing/GitTestExtensions.cs index a06cbaa052..ed920fabb0 100644 --- a/src/GitVersion.Testing/GitTestExtensions.cs +++ b/src/GitVersion.Testing/GitTestExtensions.cs @@ -23,7 +23,7 @@ public static Commit[] MakeCommits(this IRepository repository, int numCommitsTo private static Commit CreateFileAndCommit(this IRepository repository, string relativeFileName, string? commitMessage = null) { - var randomFile = Path.Combine(repository.Info.WorkingDirectory, relativeFileName); + var randomFile = PathHelper.Combine(repository.Info.WorkingDirectory, relativeFileName); if (File.Exists(randomFile)) { File.Delete(randomFile); diff --git a/src/GitVersion.Testing/Helpers/DirectoryHelper.cs b/src/GitVersion.Testing/Helpers/DirectoryHelper.cs index d9bfc2fd91..d8137e267d 100644 --- a/src/GitVersion.Testing/Helpers/DirectoryHelper.cs +++ b/src/GitVersion.Testing/Helpers/DirectoryHelper.cs @@ -1,3 +1,5 @@ +using GitVersion.Helpers; + namespace GitVersion.Testing.Internal; internal static class DirectoryHelper @@ -19,7 +21,7 @@ public static void CopyFilesRecursively(DirectoryInfo source, DirectoryInfo targ foreach (var file in source.GetFiles()) { - file.CopyTo(Path.Combine(target.FullName, Rename(file.Name))); + file.CopyTo(PathHelper.Combine(target.FullName, Rename(file.Name))); } } From 2a5422b710af92c6134c0cdaa168a439931f7022 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Mar 2024 15:56:46 +0000 Subject: [PATCH 062/544] (deps): Bump JsonSchema.Net.Generation from 4.2.0 to 4.3.0 Bumps [JsonSchema.Net.Generation](https://github.com/gregsdennis/json-everything) from 4.2.0 to 4.3.0. - [Commits](https://github.com/gregsdennis/json-everything/compare/schema-gen-v4.2.0...schema-gen-v4.3.0) --- updated-dependencies: - dependency-name: JsonSchema.Net.Generation dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index fb81aee5c2..9b4e3ae579 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -16,7 +16,7 @@ - + From 15b0b64b22d57d4083b0f0eccbdf49aba087b62f Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 28 Mar 2024 09:49:39 +0100 Subject: [PATCH 063/544] cleanup --- src/GitVersion.BuildAgents/Agents/GitHubActions.cs | 2 +- src/GitVersion.BuildAgents/Agents/MyGet.cs | 2 +- src/GitVersion.Core/Core/BranchesContainingCommitFinder.cs | 2 +- src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs | 3 ++- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/GitVersion.BuildAgents/Agents/GitHubActions.cs b/src/GitVersion.BuildAgents/Agents/GitHubActions.cs index 29caf5639d..7d5b8a9122 100644 --- a/src/GitVersion.BuildAgents/Agents/GitHubActions.cs +++ b/src/GitVersion.BuildAgents/Agents/GitHubActions.cs @@ -25,7 +25,7 @@ public override void WriteIntegration(Action writer, GitVersionVariable // https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#environment-files // The outgoing environment variables must be written to a temporary file (identified by the $GITHUB_ENV environment - // variable, which changes for every step in a workflow) which is then parsed. That file must also be UTF-8 or it will fail. + // variable, which changes for every step in a workflow) which is then parsed. That file must also be UTF-8, or it will fail. var gitHubSetEnvFilePath = this.Environment.GetEnvironmentVariable(GitHubSetEnvTempFileEnvironmentVariableName); if (gitHubSetEnvFilePath != null) diff --git a/src/GitVersion.BuildAgents/Agents/MyGet.cs b/src/GitVersion.BuildAgents/Agents/MyGet.cs index 2a812fe518..42fc06de29 100644 --- a/src/GitVersion.BuildAgents/Agents/MyGet.cs +++ b/src/GitVersion.BuildAgents/Agents/MyGet.cs @@ -29,7 +29,7 @@ public override string[] GenerateSetParameterMessage(string name, string? value) messages.Add($"##myget[buildNumber '{ServiceMessageEscapeHelper.EscapeValue(value)}']"); } - return messages.ToArray(); + return [.. messages]; } public override string? GenerateSetVersionMessage(GitVersionVariables variables) => null; diff --git a/src/GitVersion.Core/Core/BranchesContainingCommitFinder.cs b/src/GitVersion.Core/Core/BranchesContainingCommitFinder.cs index 4ce67ba6de..bc2934fa2b 100644 --- a/src/GitVersion.Core/Core/BranchesContainingCommitFinder.cs +++ b/src/GitVersion.Core/Core/BranchesContainingCommitFinder.cs @@ -12,7 +12,7 @@ internal class BranchesContainingCommitFinder(IGitRepository repository, ILog lo public IEnumerable GetBranchesContainingCommit(ICommit commit, IEnumerable? branches = null, bool onlyTrackedBranches = false) { commit.NotNull(); - branches ??= this.repository.Branches.ToList(); + branches ??= [.. this.repository.Branches]; // TODO Should we cache this? // Yielding part is split from the main part of the method to avoid having the exception check performed lazily. diff --git a/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs b/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs index 21bad69f3a..3d9df4022c 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs @@ -48,7 +48,7 @@ protected static MsBuildTaskFixtureResult ExecuteMsBuildTaskInAzurePipeline>(env.ToArray()); + var environmentVariables = env.ToList(); if (buildNumber != null) { environmentVariables.Add(new("BUILD_BUILDNUMBER", buildNumber)); @@ -78,6 +78,7 @@ protected static MsBuildTaskFixtureResult ExecuteMsBuildTaskInGitHubActions Date: Thu, 28 Mar 2024 02:46:28 +0100 Subject: [PATCH 064/544] update devcontainer definitions --- .devcontainer/Dockerfile | 6 +-- .devcontainer/devcontainer.json | 71 +++++++++++++++++++-------------- 2 files changed, 43 insertions(+), 34 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index f6b9fc4559..d71522864b 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,8 +1,4 @@ -# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.202.5/containers/dotnet/.devcontainer/base.Dockerfile - -# [Choice] .NET version: 6.0, 5.0, 3.1, 6.0-bullseye, 5.0-bullseye, 3.1-bullseye, 6.0-focal, 5.0-focal, 3.1-focal -ARG VARIANT="6.0-bullseye-slim" -FROM mcr.microsoft.com/vscode/devcontainers/dotnet:0-${VARIANT} +FROM mcr.microsoft.com/devcontainers/dotnet:dev-8.0 # [Optional] Uncomment this section to install additional OS packages. # RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index b181bfaad1..d2569415e2 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,42 +1,55 @@ // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: // https://github.com/microsoft/vscode-dev-containers/tree/v0.202.5/containers/dotnet { - "name": "C# (.NET)", - "runArgs": [ "--init" ], + "name": "GitVersion", "build": { "dockerfile": "Dockerfile", - "args": { - "VARIANT": "7.0", + "context": "." + }, + "features": { + "ghcr.io/devcontainers/features/common-utils:2": { + "installZsh": "true", + "username": "vscode", + "userUid": "1000", + "userGid": "1000", + "upgradePackages": "true" + }, + "ghcr.io/devcontainers/features/git:1": { + "version": "latest", + "ppa": "false" + }, + "ghcr.io/devcontainers/features/powershell:1": { + "version": "latest" + }, + "ghcr.io/devcontainers/features/github-cli:1": { + "version": "latest" + }, + "ghcr.io/devcontainers/features/docker-in-docker:2": { + "version": "latest" } }, - - // Set *default* container specific settings.json values on container create. - "settings": { - "editor.fontFamily": "'Cascadia Code', Consolas, 'Courier New', monospace", - "editor.rulers": [ 90 ], - "cSpell.words": [ - "commiting", - "gittools", - "gitversion" - ], + "customizations": { + "vscode": { + "settings": { + "editor.fontFamily": "'Cascadia Code', Consolas, 'Courier New', monospace", + "editor.rulers": [ 90 ], + "cSpell.words": [ + "commiting", + "gittools", + "gitversion" + ] + }, + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "ms-dotnettools.csharp", + "EditorConfig.EditorConfig", + "streetsidesoftware.code-spell-checker" + ] + } }, - // Add the IDs of extensions you want installed when the container is created. - "extensions": [ - "ms-dotnettools.csharp", - "EditorConfig.EditorConfig", - "streetsidesoftware.code-spell-checker" - ], - "postCreateCommand": "dotnet restore src; dotnet build build", // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. - "remoteUser": "vscode", - "features": { - "docker-in-docker": "latest", - "git": "latest", - "github-cli": "latest", - "sshd": "latest", - "powershell": "latest" - } + "remoteUser": "vscode" } From 104a94202f32a7549a7a19bc41ca5b3a2f718736 Mon Sep 17 00:00:00 2001 From: Wendelin Niesl Date: Fri, 29 Mar 2024 20:24:51 +0100 Subject: [PATCH 065/544] Add support for Squash Commit releases --- .../MergeMessageBaseVersionStrategyTests.cs | 22 ++++++++++++------- src/GitVersion.Core/MergeMessage.cs | 11 ++++++---- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs index f1c09f2f30..0f34c39434 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs @@ -54,6 +54,7 @@ public void ShouldNotAllowIncrementOfVersion() [TestCase("Merge branch 'Release-v0.2.0'", true, "0.2.0")] [TestCase("Merge remote-tracking branch 'origin/release/0.8.0' into develop/" + MainBranch, true, "0.8.0")] [TestCase("Merge remote-tracking branch 'refs/remotes/origin/release/2.0.0'", true, "2.0.0")] + [TestCase("Merge branch 'Releases/0.2.0'", false, "0.2.0")] // Support Squash Commits public void TakesVersionFromMergeOfReleaseBranch(string message, bool isMergeCommit, string expectedVersion) { var parents = GetParents(isMergeCommit); @@ -83,15 +84,20 @@ public void TakesVersionFromMergeOfReleaseBranch(string message, bool isMergeCom [TestCase("Finish 0.14.1", true)] // Don't support Syntevo SmartGit/Hg's Gitflow merge commit messages for finishing a 'Hotfix' branch public void ShouldNotTakeVersionFromMergeOfNonReleaseBranch(string message, bool isMergeCommit) { + var configurationBuilder = GitFlowConfigurationBuilder.New; + configurationBuilder.WithBranch("hotfix", builder => builder.WithIsReleaseBranch(false)); + ConfigurationHelper configurationHelper = new(configurationBuilder.Build()); + var configurationDictionary = configurationHelper.Dictionary; + var parents = GetParents(isMergeCommit); - AssertMergeMessage(message, null, parents); - AssertMergeMessage(message + " ", null, parents); - AssertMergeMessage(message + "\r ", null, parents); - AssertMergeMessage(message + "\r", null, parents); - AssertMergeMessage(message + "\r\n", null, parents); - AssertMergeMessage(message + "\r\n ", null, parents); - AssertMergeMessage(message + "\n", null, parents); - AssertMergeMessage(message + "\n ", null, parents); + AssertMergeMessage(message, null, parents, configurationDictionary); + AssertMergeMessage(message + " ", null, parents, configurationDictionary); + AssertMergeMessage(message + "\r ", null, parents, configurationDictionary); + AssertMergeMessage(message + "\r", null, parents, configurationDictionary); + AssertMergeMessage(message + "\r\n", null, parents, configurationDictionary); + AssertMergeMessage(message + "\r\n ", null, parents, configurationDictionary); + AssertMergeMessage(message + "\n", null, parents, configurationDictionary); + AssertMergeMessage(message + "\n ", null, parents, configurationDictionary); } [TestCase("Merge pull request #165 from organization/Particular/release-1.0.0", true)] diff --git a/src/GitVersion.Core/MergeMessage.cs b/src/GitVersion.Core/MergeMessage.cs index d1d808ce6c..826f72eefe 100644 --- a/src/GitVersion.Core/MergeMessage.cs +++ b/src/GitVersion.Core/MergeMessage.cs @@ -97,13 +97,16 @@ public static bool TryParse( mergeCommit.NotNull(); configuration.NotNull(); - mergeMessage = null; + mergeMessage = new(mergeCommit.Message, configuration); - if (mergeCommit.IsMergeCommit()) + var isReleaseBranch = mergeMessage.MergedBranch != null && configuration.IsReleaseBranch(mergeMessage.MergedBranch); + var isValidMergeCommit = mergeCommit.IsMergeCommit() || isReleaseBranch; + + if (!isValidMergeCommit) { - mergeMessage = new MergeMessage(mergeCommit.Message, configuration); + mergeMessage = null; } - return mergeMessage != null; + return isValidMergeCommit; } } From e91df74948b8e2f0c67d6239202a12142cfa9ce8 Mon Sep 17 00:00:00 2001 From: Wendelin Niesl Date: Sat, 30 Mar 2024 09:55:11 +0100 Subject: [PATCH 066/544] Invert mergeMessage creation --- src/GitVersion.Core/MergeMessage.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/GitVersion.Core/MergeMessage.cs b/src/GitVersion.Core/MergeMessage.cs index 826f72eefe..36f8cca220 100644 --- a/src/GitVersion.Core/MergeMessage.cs +++ b/src/GitVersion.Core/MergeMessage.cs @@ -97,14 +97,15 @@ public static bool TryParse( mergeCommit.NotNull(); configuration.NotNull(); - mergeMessage = new(mergeCommit.Message, configuration); + mergeMessage = null; - var isReleaseBranch = mergeMessage.MergedBranch != null && configuration.IsReleaseBranch(mergeMessage.MergedBranch); + var mergedBranch = new MergeMessage(mergeCommit.Message, configuration).MergedBranch; + var isReleaseBranch = mergedBranch != null && configuration.IsReleaseBranch(mergedBranch); var isValidMergeCommit = mergeCommit.IsMergeCommit() || isReleaseBranch; - if (!isValidMergeCommit) + if (isValidMergeCommit) { - mergeMessage = null; + mergeMessage = new(mergeCommit.Message, configuration); } return isValidMergeCommit; From af1451bdf0ca2de6e9aa8bcc0029db19231451ae Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Sat, 30 Mar 2024 10:21:01 +0100 Subject: [PATCH 067/544] enable ignored tests --- .../Tasks/TestTaskBase.cs | 7 ++-- .../Tasks/WriteVersionInfoTest.cs | 34 +++++++++++-------- src/GitVersion.sln.DotSettings | 16 +++++++++ 3 files changed, 38 insertions(+), 19 deletions(-) diff --git a/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs b/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs index 3d9df4022c..ed19e7ad0c 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs @@ -65,16 +65,13 @@ protected static MsBuildTaskFixtureResult ExecuteMsBuildTaskInAzurePipeline ExecuteMsBuildTaskInGitHubActions(T task, string envFilePath) where T : GitVersionTaskBase + protected static MsBuildTaskFixtureResult ExecuteMsBuildTaskInGitHubActions(T task) where T : GitVersionTaskBase { var fixture = CreateRemoteRepositoryFixture(); task.SolutionDirectory = fixture.LocalRepositoryFixture.RepositoryPath; AddOverrides(task); var msbuildFixture = new MsBuildTaskFixture(fixture); - msbuildFixture.WithEnv( - new KeyValuePair("GITHUB_ACTIONS", "true"), - new KeyValuePair("GITHUB_ENV", envFilePath) - ); + msbuildFixture.WithEnv([new("GITHUB_ACTIONS", "true")]); var result = msbuildFixture.Execute(task); if (!result.Success) Console.WriteLine(result.Log); diff --git a/src/GitVersion.MsBuild.Tests/Tasks/WriteVersionInfoTest.cs b/src/GitVersion.MsBuild.Tests/Tasks/WriteVersionInfoTest.cs index f0aa22e9f3..a941917b96 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/WriteVersionInfoTest.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/WriteVersionInfoTest.cs @@ -1,3 +1,4 @@ +using GitVersion.Helpers; using GitVersion.MsBuild.Tasks; using GitVersion.MsBuild.Tests.Helpers; using Microsoft.Build.Utilities.ProjectCreation; @@ -7,17 +8,6 @@ namespace GitVersion.MsBuild.Tests.Tasks; [TestFixture] public class WriteVersionInfoTest : TestTaskBase { - private string GitHubEnvFilePath { get; } = Path.GetTempFileName(); - - [OneTimeTearDown] - public void OneTimeTearDown() - { - if (File.Exists(GitHubEnvFilePath)) - { - File.Delete(GitHubEnvFilePath); - } - } - [Test] public void WriteVersionInfoTaskShouldNotLogOutputVariablesToBuildOutput() { @@ -72,17 +62,33 @@ public void WriteVersionInfoTaskShouldUpdateBuildNumberInAzurePipeline(string bu } [Test] - [Ignore("This test is not working on GitHub Actions")] public void WriteVersionInfoTaskShouldLogOutputVariablesToBuildOutputInGitHubActions() { + var envFilePath = SysEnv.GetEnvironmentVariable("GITHUB_ENV"); + if (!string.IsNullOrWhiteSpace(envFilePath)) + { + Assert.Pass("This test should be ignored when running on GitHub Actions."); + return; + } + + envFilePath = $"{PathHelper.GetTempPath()}/github-env.txt"; + SysEnv.SetEnvironmentVariable("GITHUB_ENV", envFilePath); + + if (File.Exists(envFilePath)) + { + File.Delete(envFilePath); + } + var task = new WriteVersionInfoToBuildLog(); - using var result = ExecuteMsBuildTaskInGitHubActions(task, GitHubEnvFilePath); + using var result = ExecuteMsBuildTaskInGitHubActions(task); result.Success.ShouldBe(true); result.Errors.ShouldBe(0); - string content = File.ReadAllText(GitHubEnvFilePath); + string content = File.ReadAllText(envFilePath); content.ShouldContain("GitVersion_SemVer=1.0.1"); + + File.Delete(envFilePath); } [Test] diff --git a/src/GitVersion.sln.DotSettings b/src/GitVersion.sln.DotSettings index 111522c5f3..a57b7e3685 100644 --- a/src/GitVersion.sln.DotSettings +++ b/src/GitVersion.sln.DotSettings @@ -644,6 +644,21 @@ II.2.12 <HandlesEvent /> <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> <Policy Inspect="True" Prefix="T" Suffix="" Style="AaBb" /> <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy><Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static readonly fields (private)"><ElementKinds><Kind Name="READONLY_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></Policy> + <Policy><Descriptor Staticness="Any" AccessRightKinds="Private" Description="Constant fields (private)"><ElementKinds><Kind Name="CONSTANT_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></Policy> + <Policy><Descriptor Staticness="Any" AccessRightKinds="Any" Description="Type parameters"><ElementKinds><Kind Name="TYPE_PARAMETER" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="T" Suffix="" Style="AaBb" /></Policy> + <Policy><Descriptor Staticness="Instance" AccessRightKinds="Private" Description="Instance fields (private)"><ElementKinds><Kind Name="FIELD" /><Kind Name="READONLY_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy> + <Policy><Descriptor Staticness="Instance" AccessRightKinds="Protected, ProtectedInternal, Internal, Public, PrivateProtected" Description="Instance fields (not private)"><ElementKinds><Kind Name="FIELD" /><Kind Name="READONLY_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></Policy> + <Policy><Descriptor Staticness="Any" AccessRightKinds="Any" Description="Local variables"><ElementKinds><Kind Name="LOCAL_VARIABLE" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy> + <Policy><Descriptor Staticness="Any" AccessRightKinds="Protected, ProtectedInternal, Internal, Public, PrivateProtected" Description="Constant fields (not private)"><ElementKinds><Kind Name="CONSTANT_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></Policy> + <Policy><Descriptor Staticness="Static" AccessRightKinds="Protected, ProtectedInternal, Internal, Public, PrivateProtected" Description="Static fields (not private)"><ElementKinds><Kind Name="FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></Policy> + <Policy><Descriptor Staticness="Any" AccessRightKinds="Any" Description="Parameters"><ElementKinds><Kind Name="PARAMETER" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy> + <Policy><Descriptor Staticness="Any" AccessRightKinds="Any" Description="Enum members"><ElementKinds><Kind Name="ENUM_MEMBER" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></Policy> + <Policy><Descriptor Staticness="Any" AccessRightKinds="Any" Description="Types and namespaces"><ElementKinds><Kind Name="NAMESPACE" /><Kind Name="CLASS" /><Kind Name="STRUCT" /><Kind Name="ENUM" /><Kind Name="DELEGATE" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></Policy> + <Policy><Descriptor Staticness="Any" AccessRightKinds="Any" Description="Local constants"><ElementKinds><Kind Name="LOCAL_CONSTANT" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy> + <Policy><Descriptor Staticness="Any" AccessRightKinds="Any" Description="Interfaces"><ElementKinds><Kind Name="INTERFACE" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="I" Suffix="" Style="AaBb" /></Policy> + <Policy><Descriptor Staticness="Static" AccessRightKinds="Protected, ProtectedInternal, Internal, Public, PrivateProtected" Description="Static readonly fields (not private)"><ElementKinds><Kind Name="READONLY_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></Policy> + <Policy><Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static fields (private)"><ElementKinds><Kind Name="FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy> <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> @@ -686,6 +701,7 @@ II.2.12 <HandlesEvent /> True True True + True True True True From 11b30821f8f0697f5cb989c33f7c853e9f21981e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 15:59:11 +0000 Subject: [PATCH 068/544] (new-cli deps): Bump the microsoft group in /new-cli with 1 update Bumps the microsoft group in /new-cli with 1 update: [System.CommandLine](https://github.com/dotnet/command-line-api). Updates `System.CommandLine` from 2.0.0-beta4.24126.1 to 2.0.0-beta4.24201.1 - [Release notes](https://github.com/dotnet/command-line-api/releases) - [Changelog](https://github.com/dotnet/command-line-api/blob/main/docs/History.md) - [Commits](https://github.com/dotnet/command-line-api/commits) --- updated-dependencies: - dependency-name: System.CommandLine dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 039793ee44..efdd375ddf 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -22,6 +22,6 @@ - + \ No newline at end of file From 2826f8f4cce1ddef768b4d4e71d34a26af7191b6 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 4 Apr 2024 21:01:52 +0200 Subject: [PATCH 069/544] update global.json sdk to 8.0.203 --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index cf34f2d62d..bd10fad04b 100644 --- a/global.json +++ b/global.json @@ -5,6 +5,6 @@ "src" ], "sdk": { - "version": "8.0.202" + "version": "8.0.203" } } From 6012da702e740867bea31ad4f0500eb14a8fdf7d Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Sun, 7 Apr 2024 13:43:28 +0200 Subject: [PATCH 070/544] cleanup --- new-cli/Directory.Packages.props | 2 -- new-cli/docs/calculate.rsp | 2 +- src/GitVersion.Core/Helpers/PathHelper.cs | 11 ++++++----- .../OutputGenerator/OutputGenerator.cs | 5 ++++- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index efdd375ddf..a0b1cba9ab 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -3,7 +3,6 @@ true - @@ -15,7 +14,6 @@ - diff --git a/new-cli/docs/calculate.rsp b/new-cli/docs/calculate.rsp index ca235eee66..7e0362931d 100644 --- a/new-cli/docs/calculate.rsp +++ b/new-cli/docs/calculate.rsp @@ -1 +1 @@ -calculate -l c:\logs\log.txt --work-dir D:\Projects\OSS\GitTools\GitVersion --verbosity verbose +calculate -l c:\logs\log.txt --work-dir C:\Projects\OSS\GitTools\GitVersion --verbosity verbose diff --git a/src/GitVersion.Core/Helpers/PathHelper.cs b/src/GitVersion.Core/Helpers/PathHelper.cs index f0521752da..b89918ed75 100644 --- a/src/GitVersion.Core/Helpers/PathHelper.cs +++ b/src/GitVersion.Core/Helpers/PathHelper.cs @@ -1,14 +1,15 @@ +using System.Runtime.InteropServices; + namespace GitVersion.Helpers; internal static class PathHelper { public static string NewLine => SysEnv.NewLine; - private static readonly StringComparison OsDependentComparison = SysEnv.OSVersion.Platform switch - { - PlatformID.Unix or PlatformID.MacOSX => StringComparison.Ordinal, - _ => StringComparison.OrdinalIgnoreCase, - }; + private static readonly StringComparison OsDependentComparison = + RuntimeInformation.IsOSPlatform(OSPlatform.Linux) + ? StringComparison.Ordinal + : StringComparison.OrdinalIgnoreCase; public static string GetCurrentDirectory() => AppContext.BaseDirectory ?? throw new InvalidOperationException(); diff --git a/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs b/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs index 32d83cd8e7..24a715e95d 100644 --- a/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs +++ b/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs @@ -36,7 +36,10 @@ public void Execute(GitVersionVariables variables, OutputContext context) if (gitVersionOptions.Output.Contains(OutputType.File)) { var retryOperation = new RetryAction(); - retryOperation.Execute(() => this.fileSystem.WriteAllText(context.OutputFile, json)); + retryOperation.Execute(() => + { + if (context.OutputFile != null) this.fileSystem.WriteAllText(context.OutputFile, json); + }); } if (!gitVersionOptions.Output.Contains(OutputType.Json)) return; From 9dc2a92ca4c6b644b6d19dde8baadc5a4e35a8a0 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Sun, 14 Apr 2024 09:46:15 +0200 Subject: [PATCH 071/544] Create TaggedSemanticVersionService class --- .../Extensions/GitToolsTestingExtensions.cs | 1 - .../IntegrationTests/DocumentationSamples.cs | 6 +- .../FallbackVersionStrategyScenarios.cs | 29 -- .../Core/EffectiveConfigurationExtensions.cs | 30 +++ .../Core/ITaggedSemanticVersionRepository.cs | 19 -- .../Core/ITaggedSemanticVersionService.cs | 42 +++ .../Core/TaggedSemanticVersionRepository.cs | 180 +------------ .../Core/TaggedSemanticVersionService.cs | 247 ++++++++++++++++++ .../Core/TaggedSemanticVersions.cs | 17 ++ src/GitVersion.Core/GitVersionCoreModule.cs | 1 + .../NextVersionCalculator.cs | 23 +- .../FallbacktVersionStrategy.cs | 12 +- .../TaggedCommitVersionStrategy.cs | 25 +- .../TrunkBasedVersionStrategy.cs | 21 +- 14 files changed, 405 insertions(+), 248 deletions(-) create mode 100644 src/GitVersion.Core/Core/EffectiveConfigurationExtensions.cs create mode 100644 src/GitVersion.Core/Core/ITaggedSemanticVersionService.cs create mode 100644 src/GitVersion.Core/Core/TaggedSemanticVersionService.cs create mode 100644 src/GitVersion.Core/Core/TaggedSemanticVersions.cs diff --git a/src/GitVersion.Core.Tests/Extensions/GitToolsTestingExtensions.cs b/src/GitVersion.Core.Tests/Extensions/GitToolsTestingExtensions.cs index 947d4e6fc4..5697f70f09 100644 --- a/src/GitVersion.Core.Tests/Extensions/GitToolsTestingExtensions.cs +++ b/src/GitVersion.Core.Tests/Extensions/GitToolsTestingExtensions.cs @@ -61,7 +61,6 @@ public static GitVersionVariables GetVersion(this RepositoryFixtureBase fixture, { repository ??= fixture.Repository; configuration ??= GitFlowConfigurationBuilder.New.Build(); - Console.WriteLine("---------"); var overrideConfiguration = new Dictionary(); var options = Options.Create(new GitVersionOptions diff --git a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamples.cs b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamples.cs index 9f1a2a895b..e3480f25cf 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamples.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamples.cs @@ -202,7 +202,7 @@ public void GitFlowMajorRelease() fixture.SequenceDiagram.NoteOver("Release branches are deleted once merged", "release/2.0.0"); fixture.Checkout(MainBranch); - fixture.AssertFullSemver("2.0.0-0"); + fixture.AssertFullSemver("2.0.0-4"); fixture.ApplyTag("2.0.0"); fixture.AssertFullSemver("2.0.0"); @@ -291,7 +291,7 @@ public void GitFlowSupportMinorRelease() fixture.MergeNoFF("release/1.4.0"); fixture.SequenceDiagram.Destroy("release/1.4.0"); fixture.SequenceDiagram.NoteOver("Release branches are deleted once merged", "release/1.4.0"); - fixture.AssertFullSemver("1.4.0-0"); + fixture.AssertFullSemver("1.4.0-4"); fixture.ApplyTag("1.4.0"); fixture.AssertFullSemver("1.4.0"); Console.WriteLine(fixture.SequenceDiagram.GetDiagram()); @@ -392,7 +392,7 @@ public void GitHubFlowMajorRelease() fixture.SequenceDiagram.Destroy("release/2.0.0"); fixture.SequenceDiagram.NoteOver("Release branches are deleted once merged", "release/2.0.0"); - fixture.AssertFullSemver("2.0.0-0"); + fixture.AssertFullSemver("2.0.0-4"); fixture.ApplyTag("2.0.0"); fixture.AssertFullSemver("2.0.0"); fixture.MakeACommit(); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/FallbackVersionStrategyScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/FallbackVersionStrategyScenarios.cs index b574e1c808..0ef417e9fa 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/FallbackVersionStrategyScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/FallbackVersionStrategyScenarios.cs @@ -93,33 +93,4 @@ public void TakeTheLatestCommitAsBaseVersion(bool mode) // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); } - - [Test] - public void TakeTheCommitBranchedFromAsBaseVersion() - { - var configuration = ConfigurationBuilder - .WithBranch("main", _ => _ - .WithIncrement(IncrementStrategy.Major) - .WithTrackMergeTarget(false) - .WithTracksReleaseBranches(true) - ).Build(); - - using EmptyRepositoryFixture fixture = new("main"); - - fixture.MakeACommit("A"); - fixture.MakeACommit("B"); - fixture.BranchTo("release/foo"); - fixture.Checkout("main"); - fixture.MakeACommit("C"); - fixture.Checkout("release/foo"); - fixture.MakeACommit("D"); - fixture.ApplyTag("0.0.0"); - fixture.Checkout("main"); - fixture.MakeACommit("D"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-1+2", configuration); - - fixture.Repository.DumpGraph(); - } } diff --git a/src/GitVersion.Core/Core/EffectiveConfigurationExtensions.cs b/src/GitVersion.Core/Core/EffectiveConfigurationExtensions.cs new file mode 100644 index 0000000000..4b1f5bbe86 --- /dev/null +++ b/src/GitVersion.Core/Core/EffectiveConfigurationExtensions.cs @@ -0,0 +1,30 @@ +using GitVersion.Configuration; +using GitVersion.Extensions; + +namespace GitVersion.Core; + +internal static class EffectiveConfigurationExtensions +{ + public static TaggedSemanticVersions GetTaggedSemanticVersion(this EffectiveConfiguration effectiveConfiguration) + { + effectiveConfiguration.NotNull(); + + TaggedSemanticVersions taggedSemanticVersion = TaggedSemanticVersions.OfBranch; + + if (effectiveConfiguration.TrackMergeTarget) + { + taggedSemanticVersion |= TaggedSemanticVersions.OfMergeTargets; + } + + if (effectiveConfiguration.TrackMergeTarget) + { + taggedSemanticVersion |= TaggedSemanticVersions.OfReleaseBranches; + } + + if (!effectiveConfiguration.IsMainBranch && !effectiveConfiguration.IsReleaseBranch) + { + taggedSemanticVersion |= TaggedSemanticVersions.OfMainBranches; + } + return taggedSemanticVersion; + } +} diff --git a/src/GitVersion.Core/Core/ITaggedSemanticVersionRepository.cs b/src/GitVersion.Core/Core/ITaggedSemanticVersionRepository.cs index a93a6f42d5..8177f1600d 100644 --- a/src/GitVersion.Core/Core/ITaggedSemanticVersionRepository.cs +++ b/src/GitVersion.Core/Core/ITaggedSemanticVersionRepository.cs @@ -5,13 +5,6 @@ namespace GitVersion.Core; internal interface ITaggedSemanticVersionRepository { - ILookup GetAllTaggedSemanticVersions( - IGitVersionConfiguration configuration, - EffectiveConfiguration effectiveConfiguration, - IBranch branch, - string? label, - DateTimeOffset? notOlderThan); - ILookup GetTaggedSemanticVersionsOfBranch( IBranch branch, string? tagPrefix, @@ -24,18 +17,6 @@ ILookup GetTaggedSemanticVersionsOfMergeTarget( SemanticVersionFormat format, IIgnoreConfiguration ignore); - ILookup GetTaggedSemanticVersionsOfMainBranches( - IGitVersionConfiguration configuration, - string? tagPrefix, - SemanticVersionFormat format, - params IBranch[] excludeBranches); - - ILookup GetTaggedSemanticVersionsOfReleaseBranches( - IGitVersionConfiguration configuration, - string? tagPrefix, - SemanticVersionFormat format, - params IBranch[] excludeBranches); - ILookup GetTaggedSemanticVersions( string? tagPrefix, SemanticVersionFormat format, IIgnoreConfiguration ignore); } diff --git a/src/GitVersion.Core/Core/ITaggedSemanticVersionService.cs b/src/GitVersion.Core/Core/ITaggedSemanticVersionService.cs new file mode 100644 index 0000000000..8c476cc7f5 --- /dev/null +++ b/src/GitVersion.Core/Core/ITaggedSemanticVersionService.cs @@ -0,0 +1,42 @@ +using GitVersion.Configuration; +using GitVersion.Git; + +namespace GitVersion.Core; + +internal interface ITaggedSemanticVersionService +{ + ILookup GetTaggedSemanticVersions( + IBranch branch, + IGitVersionConfiguration configuration, + string? label, + DateTimeOffset? notOlderThan, + TaggedSemanticVersions taggedSemanticVersion); + + ILookup GetTaggedSemanticVersionsOfBranch( + IBranch branch, + string? tagPrefix, + SemanticVersionFormat format, + IIgnoreConfiguration ignore, + string? label = null, + DateTimeOffset? notOlderThan = null); + + ILookup GetTaggedSemanticVersionsOfMergeTarget( + IBranch branch, + string? tagPrefix, + SemanticVersionFormat format, + IIgnoreConfiguration ignore, + string? label = null, + DateTimeOffset? notOlderThan = null); + + ILookup GetTaggedSemanticVersionsOfMainBranches( + IGitVersionConfiguration configuration, + DateTimeOffset? notOlderThan = null, + string? label = null, + params IBranch[] excludeBranches); + + ILookup GetTaggedSemanticVersionsOfReleaseBranches( + IGitVersionConfiguration configuration, + DateTimeOffset? notOlderThan = null, + string? label = null, + params IBranch[] excludeBranches); +} diff --git a/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs b/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs index 9ed2ee7144..953f3a91b5 100644 --- a/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs +++ b/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs @@ -6,122 +6,17 @@ namespace GitVersion.Core; -internal sealed class TaggedSemanticVersionRepository( - ILog log, - IGitRepository gitRepository, - IBranchRepository branchRepository) - : ITaggedSemanticVersionRepository +internal sealed class TaggedSemanticVersionRepository(ILog log, IGitRepository gitRepository) : ITaggedSemanticVersionRepository { - private readonly ConcurrentDictionary<(IBranch, string, SemanticVersionFormat), ILookup> + private readonly ConcurrentDictionary<(IBranch, string, SemanticVersionFormat), IReadOnlyList> taggedSemanticVersionsOfBranchCache = new(); - private readonly ConcurrentDictionary<(IBranch, string, SemanticVersionFormat), ILookup> + private readonly ConcurrentDictionary<(IBranch, string, SemanticVersionFormat), IReadOnlyList<(ICommit Key, SemanticVersionWithTag Value)>> taggedSemanticVersionsOfMergeTargetCache = new(); - private readonly ConcurrentDictionary<(string, SemanticVersionFormat), ILookup> + private readonly ConcurrentDictionary<(string, SemanticVersionFormat), IReadOnlyList> taggedSemanticVersionsCache = new(); private readonly ILog log = log.NotNull(); private readonly IGitRepository gitRepository = gitRepository.NotNull(); - private readonly IBranchRepository branchRepository = branchRepository.NotNull(); - - public ILookup GetAllTaggedSemanticVersions( - IGitVersionConfiguration configuration, EffectiveConfiguration effectiveConfiguration, - IBranch branch, string? label, DateTimeOffset? notOlderThan) - { - configuration.NotNull(); - effectiveConfiguration.NotNull(); - branch.NotNull(); - - IEnumerable<(ICommit Key, SemanticVersionWithTag Value)> GetElements() - { - var semanticVersionsOfBranch = GetTaggedSemanticVersionsOfBranch( - branch: branch, - tagPrefix: effectiveConfiguration.TagPrefix, - format: effectiveConfiguration.SemanticVersionFormat, - ignore: configuration.Ignore - ); - foreach (var grouping in semanticVersionsOfBranch) - { - if (grouping.Key.When > notOlderThan) continue; - - foreach (var semanticVersion in grouping) - { - if (semanticVersion.Value.IsMatchForBranchSpecificLabel(label)) - { - yield return new(grouping.Key, semanticVersion); - } - } - } - - if (effectiveConfiguration.TrackMergeTarget) - { - var semanticVersionsOfMergeTarget = GetTaggedSemanticVersionsOfMergeTarget( - branch: branch, - tagPrefix: effectiveConfiguration.TagPrefix, - format: effectiveConfiguration.SemanticVersionFormat, - ignore: configuration.Ignore - ); - foreach (var grouping in semanticVersionsOfMergeTarget) - { - if (grouping.Key.When > notOlderThan) continue; - - foreach (var semanticVersion in grouping) - { - if (semanticVersion.Value.IsMatchForBranchSpecificLabel(label)) - { - yield return new(grouping.Key, semanticVersion); - } - } - } - } - - if (effectiveConfiguration.TracksReleaseBranches) - { - var semanticVersionsOfReleaseBranches = GetTaggedSemanticVersionsOfReleaseBranches( - configuration: configuration, - tagPrefix: effectiveConfiguration.TagPrefix, - format: effectiveConfiguration.SemanticVersionFormat, - excludeBranches: branch - ); - foreach (var grouping in semanticVersionsOfReleaseBranches) - { - if (grouping.Key.When > notOlderThan) continue; - - foreach (var semanticVersion in grouping) - { - if (semanticVersion.Value.IsMatchForBranchSpecificLabel(label)) - { - yield return new(grouping.Key, semanticVersion); - } - } - } - } - - if (!effectiveConfiguration.IsMainBranch && !effectiveConfiguration.IsReleaseBranch) - { - var semanticVersionsOfMainlineBranches = GetTaggedSemanticVersionsOfMainBranches( - configuration: configuration, - tagPrefix: effectiveConfiguration.TagPrefix, - format: effectiveConfiguration.SemanticVersionFormat, - excludeBranches: branch - ); - foreach (var grouping in semanticVersionsOfMainlineBranches) - { - if (grouping.Key.When > notOlderThan) continue; - - foreach (var semanticVersion in grouping) - { - if (semanticVersion.Value.IsMatchForBranchSpecificLabel(label)) - { - yield return new(grouping.Key, semanticVersion); - } - } - } - } - } - - return GetElements().Distinct().OrderByDescending(element => element.Key.When) - .ToLookup(element => element.Key, element => element.Value); - } public ILookup GetTaggedSemanticVersionsOfBranch( IBranch branch, string? tagPrefix, SemanticVersionFormat format, IIgnoreConfiguration ignore) @@ -150,8 +45,7 @@ IEnumerable GetElements() var result = taggedSemanticVersionsOfBranchCache.GetOrAdd(new(branch, tagPrefix, format), _ => { isCached = false; - return GetElements().Distinct().OrderByDescending(element => element.Tag.Commit.When) - .ToLookup(element => element.Tag.Commit, element => element); + return GetElements().Distinct().OrderByDescending(element => element.Tag.Commit.When).ToList(); }); if (isCached) @@ -162,7 +56,7 @@ IEnumerable GetElements() ); } - return result; + return result.ToLookup(element => element.Tag.Commit, element => element); } public ILookup GetTaggedSemanticVersionsOfMergeTarget( @@ -192,8 +86,7 @@ public ILookup GetTaggedSemanticVersionsOfMerge var result = taggedSemanticVersionsOfMergeTargetCache.GetOrAdd(new(branch, tagPrefix, format), _ => { isCached = false; - return GetElements().Distinct().OrderByDescending(element => element.Key.When) - .ToLookup(element => element.Key, element => element.Value); + return GetElements().Distinct().OrderByDescending(element => element.Key.When).ToList(); }); if (isCached) @@ -204,59 +97,7 @@ public ILookup GetTaggedSemanticVersionsOfMerge ); } - return result; - } - - public ILookup GetTaggedSemanticVersionsOfMainBranches( - IGitVersionConfiguration configuration, string? tagPrefix, SemanticVersionFormat format, params IBranch[] excludeBranches) - { - configuration.NotNull(); - tagPrefix ??= string.Empty; - excludeBranches.NotNull(); - - IEnumerable GetElements() - { - using (this.log.IndentLog($"Getting tagged semantic versions of mainline branches. " + - $"TagPrefix: {tagPrefix} and Format: {format}")) - { - foreach (var mainlinemBranch in branchRepository.GetMainBranches(configuration, excludeBranches)) - { - foreach (var semanticVersion in GetTaggedSemanticVersionsOfBranch(mainlinemBranch, tagPrefix, format, configuration.Ignore).SelectMany(_ => _)) - { - yield return semanticVersion; - } - } - } - } - - return GetElements().Distinct().OrderByDescending(element => element.Tag.Commit.When) - .ToLookup(element => element.Tag.Commit, element => element); - } - - public ILookup GetTaggedSemanticVersionsOfReleaseBranches( - IGitVersionConfiguration configuration, string? tagPrefix, SemanticVersionFormat format, params IBranch[] excludeBranches) - { - configuration.NotNull(); - tagPrefix ??= string.Empty; - excludeBranches.NotNull(); - - IEnumerable GetElements() - { - using (this.log.IndentLog($"Getting tagged semantic versions of release branches. " + - $"TagPrefix: {tagPrefix} and Format: {format}")) - { - foreach (var releaseBranch in branchRepository.GetReleaseBranches(configuration, excludeBranches)) - { - foreach (var semanticVersion in GetTaggedSemanticVersionsOfBranch(releaseBranch, tagPrefix, format, configuration.Ignore).SelectMany(_ => _)) - { - yield return semanticVersion; - } - } - } - } - - return GetElements().Distinct().OrderByDescending(element => element.Tag.Commit.When) - .ToLookup(element => element.Tag.Commit, element => element); + return result.ToLookup(element => element.Key, element => element.Value); } public ILookup GetTaggedSemanticVersions( @@ -281,8 +122,7 @@ IEnumerable GetElements() var result = taggedSemanticVersionsCache.GetOrAdd(new(tagPrefix, format), _ => { isCached = false; - return GetElements().OrderByDescending(element => element.Tag.Commit.When) - .ToLookup(element => element.Tag.Commit, element => element); + return GetElements().OrderByDescending(element => element.Tag.Commit.When).ToList(); }); if (isCached) @@ -290,6 +130,6 @@ IEnumerable GetElements() this.log.Debug($"Returning cached tagged semantic versions. TagPrefix: {tagPrefix} and Format: {format}"); } - return result; + return result.ToLookup(element => element.Tag.Commit, element => element); } } diff --git a/src/GitVersion.Core/Core/TaggedSemanticVersionService.cs b/src/GitVersion.Core/Core/TaggedSemanticVersionService.cs new file mode 100644 index 0000000000..e7e8acffa9 --- /dev/null +++ b/src/GitVersion.Core/Core/TaggedSemanticVersionService.cs @@ -0,0 +1,247 @@ +using GitVersion.Configuration; +using GitVersion.Extensions; +using GitVersion.Git; + +namespace GitVersion.Core; + +internal sealed class TaggedSemanticVersionService( + ITaggedSemanticVersionRepository Repository, IBranchRepository BranchRepository) + : ITaggedSemanticVersionService +{ + private ITaggedSemanticVersionRepository Repository { get; } = Repository.NotNull(); + + private IBranchRepository BranchRepository { get; } = BranchRepository.NotNull(); + + public ILookup GetTaggedSemanticVersions( + IBranch branch, + IGitVersionConfiguration configuration, + string? label, + DateTimeOffset? notOlderThan, + TaggedSemanticVersions taggedSemanticVersion) + { + IEnumerable>> GetElements() + { + if (taggedSemanticVersion.HasFlag(TaggedSemanticVersions.OfBranch)) + { + yield return GetTaggedSemanticVersionsOfBranchInternal( + branch: branch, + tagPrefix: configuration.TagPrefix, + format: configuration.SemanticVersionFormat, + ignore: configuration.Ignore, + label: label, + notOlderThan: notOlderThan + ); + } + + if (taggedSemanticVersion.HasFlag(TaggedSemanticVersions.OfMergeTargets)) + { + yield return GetTaggedSemanticVersionsOfMergeTargetInternal( + branch: branch, + tagPrefix: configuration.TagPrefix, + format: configuration.SemanticVersionFormat, + ignore: configuration.Ignore, + label: label, + notOlderThan: notOlderThan + ); + } + + if (taggedSemanticVersion.HasFlag(TaggedSemanticVersions.OfMainBranches)) + { + yield return GetTaggedSemanticVersionsOfMainBranchesInternal( + configuration: configuration, + label: label, + notOlderThan: notOlderThan, + excludeBranches: branch + ); + } + + if (taggedSemanticVersion.HasFlag(TaggedSemanticVersions.OfReleaseBranches)) + { + yield return GetTaggedSemanticVersionsOfReleaseBranchesInternal( + configuration: configuration, + label: label, + notOlderThan: notOlderThan, + excludeBranches: branch + ); + } + } + + return GetElements().SelectMany(elements => elements).Distinct() + .OrderByDescending(element => element.Key.When) + .ToLookup(element => element.Key, element => element.Value); + } + + public ILookup GetTaggedSemanticVersionsOfBranch( + IBranch branch, + string? tagPrefix, + SemanticVersionFormat format, + IIgnoreConfiguration ignore, + string? label, + DateTimeOffset? notOlderThan) + { + var result = GetTaggedSemanticVersionsOfBranchInternal( + branch: branch, + tagPrefix: tagPrefix, + format: format, + ignore: ignore, + label: label, + notOlderThan: notOlderThan); + + return result.Distinct().OrderByDescending(element => element.Key.When) + .ToLookup(element => element.Key, element => element.Value); + } + + private IEnumerable> GetTaggedSemanticVersionsOfBranchInternal( + IBranch branch, + string? tagPrefix, + SemanticVersionFormat format, + IIgnoreConfiguration ignore, + string? label, + DateTimeOffset? notOlderThan) + { + var semanticVersionsOfBranch = Repository.GetTaggedSemanticVersionsOfBranch( + branch: branch, tagPrefix: tagPrefix, format: format, ignore: ignore + ); + foreach (var grouping in semanticVersionsOfBranch) + { + if (grouping.Key.When > notOlderThan) continue; + + foreach (var semanticVersion in grouping) + { + if (semanticVersion.Value.IsMatchForBranchSpecificLabel(label)) + { + yield return new(grouping.Key, semanticVersion); + } + } + } + } + + public ILookup GetTaggedSemanticVersionsOfMergeTarget( + IBranch branch, + string? tagPrefix, + SemanticVersionFormat format, + IIgnoreConfiguration ignore, + string? label, + DateTimeOffset? notOlderThan) + { + var result = GetTaggedSemanticVersionsOfMergeTargetInternal( + branch: branch, + tagPrefix: tagPrefix, + format: format, + ignore: ignore, + label: label, + notOlderThan: notOlderThan); + + return result.Distinct() + .OrderByDescending(element => element.Key.When) + .ToLookup(element => element.Key, element => element.Value); + } + + private IEnumerable> GetTaggedSemanticVersionsOfMergeTargetInternal( + IBranch branch, + string? tagPrefix, + SemanticVersionFormat format, + IIgnoreConfiguration ignore, + string? label, + DateTimeOffset? notOlderThan) + { + var semanticVersionsOfMergeTarget = Repository.GetTaggedSemanticVersionsOfMergeTarget( + branch: branch, + tagPrefix: tagPrefix, + format: format, + ignore: ignore + ); + foreach (var grouping in semanticVersionsOfMergeTarget) + { + if (grouping.Key.When > notOlderThan) continue; + + foreach (var semanticVersion in grouping) + { + if (semanticVersion.Value.IsMatchForBranchSpecificLabel(label)) + { + yield return new(grouping.Key, semanticVersion); + } + } + } + } + + public ILookup GetTaggedSemanticVersionsOfMainBranches( + IGitVersionConfiguration configuration, + DateTimeOffset? notOlderThan, + string? label, + params IBranch[] excludeBranches) + { + var result = GetTaggedSemanticVersionsOfMainBranchesInternal( + configuration: configuration, + notOlderThan: notOlderThan, + label: label, + excludeBranches: excludeBranches); + + return result.Distinct() + .OrderByDescending(element => element.Key.When) + .ToLookup(element => element.Key, element => element.Value); + } + + private IEnumerable> GetTaggedSemanticVersionsOfMainBranchesInternal( + IGitVersionConfiguration configuration, + DateTimeOffset? notOlderThan, + string? label, + params IBranch[] excludeBranches) + { + foreach (var releaseBranch in BranchRepository.GetMainBranches(configuration, excludeBranches)) + { + var taggedSemanticVersions = GetTaggedSemanticVersionsOfBranchInternal( + branch: releaseBranch, + tagPrefix: configuration.TagPrefix, + format: configuration.SemanticVersionFormat, + ignore: configuration.Ignore, + label: label, + notOlderThan: notOlderThan); + + foreach (var semanticVersion in taggedSemanticVersions) + { + yield return semanticVersion; + } + } + } + + public ILookup GetTaggedSemanticVersionsOfReleaseBranches( + IGitVersionConfiguration configuration, + DateTimeOffset? notOlderThan, + string? label, + params IBranch[] excludeBranches) + { + var result = GetTaggedSemanticVersionsOfReleaseBranchesInternal( + configuration: configuration, + notOlderThan: notOlderThan, + label: label, + excludeBranches: excludeBranches); + + return result.Distinct() + .OrderByDescending(element => element.Key.When) + .ToLookup(element => element.Key, element => element.Value); + } + + private IEnumerable> GetTaggedSemanticVersionsOfReleaseBranchesInternal( + IGitVersionConfiguration configuration, + DateTimeOffset? notOlderThan, + string? label, + params IBranch[] excludeBranches) + { + foreach (var releaseBranch in BranchRepository.GetReleaseBranches(configuration, excludeBranches)) + { + var taggedSemanticVersions = GetTaggedSemanticVersionsOfBranchInternal( + branch: releaseBranch, + tagPrefix: configuration.TagPrefix, + format: configuration.SemanticVersionFormat, + ignore: configuration.Ignore, + label: label, + notOlderThan: notOlderThan); + + foreach (var semanticVersion in taggedSemanticVersions) + { + yield return semanticVersion; + } + } + } +} diff --git a/src/GitVersion.Core/Core/TaggedSemanticVersions.cs b/src/GitVersion.Core/Core/TaggedSemanticVersions.cs new file mode 100644 index 0000000000..813ad55921 --- /dev/null +++ b/src/GitVersion.Core/Core/TaggedSemanticVersions.cs @@ -0,0 +1,17 @@ +namespace GitVersion.Core; + +[Flags] +internal enum TaggedSemanticVersions +{ + None = 0, + + OfBranch = 1, + + OfMergeTargets = 2, + + OfMainBranches = 4, + + OfReleaseBranches = 8, + + All = OfBranch | OfMergeTargets | OfMainBranches | OfReleaseBranches +} diff --git a/src/GitVersion.Core/GitVersionCoreModule.cs b/src/GitVersion.Core/GitVersionCoreModule.cs index 573e91f141..78be8603d6 100644 --- a/src/GitVersion.Core/GitVersionCoreModule.cs +++ b/src/GitVersion.Core/GitVersionCoreModule.cs @@ -19,6 +19,7 @@ public void RegisterTypes(IServiceCollection services) services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs index 692b4cbc4f..2839d46878 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs @@ -14,7 +14,7 @@ internal class NextVersionCalculator( IEnumerable deploymentModeCalculators, IEnumerable versionStrategies, IEffectiveBranchConfigurationFinder effectiveBranchConfigurationFinder, - ITaggedSemanticVersionRepository taggedSemanticVersionRepository) + ITaggedSemanticVersionService taggedSemanticVersionService) : INextVersionCalculator { private readonly ILog log = log.NotNull(); @@ -35,8 +35,12 @@ public virtual SemanticVersion FindVersion() if (Context.IsCurrentCommitTagged && !someBranchRelatedPropertiesMightBeNotKnown && effectiveConfiguration.PreventIncrementWhenCurrentCommitTagged) { - var allTaggedSemanticVersions = taggedSemanticVersionRepository.GetAllTaggedSemanticVersions( - Context.Configuration, effectiveConfiguration, Context.CurrentBranch, null, Context.CurrentCommit.When + var allTaggedSemanticVersions = taggedSemanticVersionService.GetTaggedSemanticVersions( + branch: Context.CurrentBranch, + configuration: Context.Configuration, + label: null, + notOlderThan: Context.CurrentCommit.When, + taggedSemanticVersion: effectiveConfiguration.GetTaggedSemanticVersion() ); var taggedSemanticVersionsOfCurrentCommit = allTaggedSemanticVersions[Context.CurrentCommit].ToList(); @@ -52,8 +56,12 @@ public virtual SemanticVersion FindVersion() if (Context.IsCurrentCommitTagged && someBranchRelatedPropertiesMightBeNotKnown && nextVersion.Configuration.PreventIncrementWhenCurrentCommitTagged) { - var allTaggedSemanticVersions = taggedSemanticVersionRepository.GetAllTaggedSemanticVersions( - Context.Configuration, nextVersion.Configuration, Context.CurrentBranch, null, Context.CurrentCommit.When + var allTaggedSemanticVersions = taggedSemanticVersionService.GetTaggedSemanticVersions( + branch: Context.CurrentBranch, + configuration: Context.Configuration, + label: null, + notOlderThan: Context.CurrentCommit.When, + taggedSemanticVersion: nextVersion.Configuration.GetTaggedSemanticVersion() ); var taggedSemanticVersionsOfCurrentCommit = allTaggedSemanticVersions[Context.CurrentCommit].ToList(); @@ -71,11 +79,12 @@ public virtual SemanticVersion FindVersion() ); var ignore = Context.Configuration.Ignore; - var alternativeSemanticVersion = taggedSemanticVersionRepository.GetTaggedSemanticVersionsOfBranch( + var alternativeSemanticVersion = taggedSemanticVersionService.GetTaggedSemanticVersionsOfBranch( branch: nextVersion.BranchConfiguration.Branch, tagPrefix: Context.Configuration.TagPrefix, format: Context.Configuration.SemanticVersionFormat, - ignore: Context.Configuration.Ignore + ignore: Context.Configuration.Ignore, + notOlderThan: Context.CurrentCommit.When ).Where(element => element.Key.When <= Context.CurrentCommit.When && !(element.Key.When <= ignore.Before) && !ignore.Shas.Contains(element.Key.Sha) ).SelectMany(element => element).Max()?.Value; diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/FallbacktVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/FallbacktVersionStrategy.cs index da116df3c7..bdc8e2d377 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/FallbacktVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/FallbacktVersionStrategy.cs @@ -12,12 +12,12 @@ namespace GitVersion.VersionCalculation; internal sealed class FallbackVersionStrategy( Lazy contextLazy, IIncrementStrategyFinder incrementStrategyFinder, - ITaggedSemanticVersionRepository taggedSemanticVersionRepository) + ITaggedSemanticVersionService taggedSemanticVersionService) : IVersionStrategy { private readonly Lazy contextLazy = contextLazy.NotNull(); private readonly IIncrementStrategyFinder incrementStrategyFinder = incrementStrategyFinder.NotNull(); - private readonly ITaggedSemanticVersionRepository taggedSemanticVersionRepository = taggedSemanticVersionRepository.NotNull(); + private readonly ITaggedSemanticVersionService taggedSemanticVersionService = taggedSemanticVersionService.NotNull(); private GitVersionContext Context => contextLazy.Value; @@ -33,8 +33,12 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); - var baseVersionSource = this.taggedSemanticVersionRepository.GetAllTaggedSemanticVersions( - Context.Configuration, configuration.Value, Context.CurrentBranch, label, Context.CurrentCommit.When + var baseVersionSource = taggedSemanticVersionService.GetTaggedSemanticVersions( + branch: Context.CurrentBranch, + configuration: Context.Configuration, + label: label, + notOlderThan: Context.CurrentCommit.When, + taggedSemanticVersion: configuration.Value.GetTaggedSemanticVersion() ).Select(element => element.Key).FirstOrDefault(); var increment = incrementStrategyFinder.DetermineIncrementedField( diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs index e29eb16ca4..11be4ab21c 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs @@ -11,11 +11,11 @@ namespace GitVersion.VersionCalculation; /// internal sealed class TaggedCommitVersionStrategy( Lazy contextLazy, - ITaggedSemanticVersionRepository taggedSemanticVersionRepository, + ITaggedSemanticVersionService taggedSemanticVersionService, IIncrementStrategyFinder incrementStrategyFinder) : IVersionStrategy { - private readonly ITaggedSemanticVersionRepository taggedSemanticVersionRepository = taggedSemanticVersionRepository.NotNull(); + private readonly ITaggedSemanticVersionService taggedSemanticVersionService = taggedSemanticVersionService.NotNull(); private readonly Lazy contextLazy = contextLazy.NotNull(); private readonly IIncrementStrategyFinder incrementStrategyFinder = incrementStrategyFinder.NotNull(); @@ -31,13 +31,21 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur if (!Context.Configuration.VersionStrategy.HasFlag(VersionStrategies.TaggedCommit)) yield break; + var taggedSemanticVersions = taggedSemanticVersionService.GetTaggedSemanticVersions( + branch: Context.CurrentBranch, + configuration: Context.Configuration, + label: null, + notOlderThan: Context.CurrentCommit.When, + taggedSemanticVersion: configuration.Value.GetTaggedSemanticVersion() + ).SelectMany(elements => elements).Distinct().ToArray(); + var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); - var taggedSemanticVersions = taggedSemanticVersionRepository - .GetAllTaggedSemanticVersions(Context.Configuration, configuration.Value, Context.CurrentBranch, label, Context.CurrentCommit.When) - .SelectMany(element => element) - .Distinct().ToArray(); - foreach (var semanticVersionWithTag in taggedSemanticVersions) + var maxTaggedSemanticVersion = taggedSemanticVersions + .Where(element => !element.Value.IsMatchForBranchSpecificLabel(label)).Max(); + + foreach (var semanticVersionWithTag + in taggedSemanticVersions.Where(element => element.Value.IsMatchForBranchSpecificLabel(label))) { var baseVersionSource = semanticVersionWithTag.Tag.Commit; var increment = incrementStrategyFinder.DetermineIncrementedField( @@ -54,7 +62,8 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur { Increment = increment, ForceIncrement = false, - Label = label + Label = label, + AlternativeSemanticVersion = maxTaggedSemanticVersion?.Value } }; } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs index f5f4397775..c0f71e76de 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs @@ -13,13 +13,13 @@ namespace GitVersion.VersionCalculation; internal sealed class TrunkBasedVersionStrategy( Lazy contextLazy, IRepositoryStore repositoryStore, - ITaggedSemanticVersionRepository taggedSemanticVersionRepository, + ITaggedSemanticVersionService taggedSemanticVersionService, IIncrementStrategyFinder incrementStrategyFinder) : IVersionStrategy { private volatile int iterationCounter; private readonly Lazy contextLazy = contextLazy.NotNull(); - private readonly ITaggedSemanticVersionRepository taggedSemanticVersionRepository = taggedSemanticVersionRepository.NotNull(); + private readonly ITaggedSemanticVersionService taggedSemanticVersionService = taggedSemanticVersionService.NotNull(); private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); private readonly IIncrementStrategyFinder incrementStrategyFinder = incrementStrategyFinder.NotNull(); @@ -78,10 +78,13 @@ public IEnumerable GetBaseVersions(EffectiveBranchConfiguration con var commitsInReverseOrder = configuration.Value.Ignore.Filter(Context.CurrentBranchCommits); - var taggedSemanticVersions = taggedSemanticVersionRepository.GetAllTaggedSemanticVersions( - Context.Configuration, configuration.Value, Context.CurrentBranch, null, Context.CurrentCommit.When + var taggedSemanticVersions = taggedSemanticVersionService.GetTaggedSemanticVersions( + branch: Context.CurrentBranch, + configuration: Context.Configuration, + label: null, + notOlderThan: Context.CurrentCommit.When, + taggedSemanticVersion: configuration.Value.GetTaggedSemanticVersion() ); - var targetLabel = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); IterateOverCommitsRecursive( commitsInReverseOrder: commitsInReverseOrder, @@ -127,8 +130,12 @@ private bool IterateOverCommitsRecursive( { configuration = effectiveConfigurationWasBranchedFrom.Value; branchName = effectiveConfigurationWasBranchedFrom.Branch.Name; - taggedSemanticVersions = taggedSemanticVersionRepository.GetAllTaggedSemanticVersions( - Context.Configuration, effectiveConfigurationWasBranchedFrom.Value, effectiveConfigurationWasBranchedFrom.Branch, null, Context.CurrentCommit.When + taggedSemanticVersions = taggedSemanticVersionService.GetTaggedSemanticVersions( + branch: effectiveConfigurationWasBranchedFrom.Branch, + configuration: Context.Configuration, + label: null, + notOlderThan: Context.CurrentCommit.When, + taggedSemanticVersion: effectiveConfigurationWasBranchedFrom.Value.GetTaggedSemanticVersion() ); } From 2cc7afb027cd3587174558033c19082cbbe0dee6 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Sun, 14 Apr 2024 10:14:00 +0200 Subject: [PATCH 072/544] CHARSET: Fix file encoding. --- src/GitVersion.Core/Core/TaggedSemanticVersions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GitVersion.Core/Core/TaggedSemanticVersions.cs b/src/GitVersion.Core/Core/TaggedSemanticVersions.cs index 813ad55921..898a70bd79 100644 --- a/src/GitVersion.Core/Core/TaggedSemanticVersions.cs +++ b/src/GitVersion.Core/Core/TaggedSemanticVersions.cs @@ -1,4 +1,4 @@ -namespace GitVersion.Core; +namespace GitVersion.Core; [Flags] internal enum TaggedSemanticVersions From ddb87d1644753d0c53b45befcab742e38f77b25e Mon Sep 17 00:00:00 2001 From: HHobeck Date: Sun, 14 Apr 2024 10:21:14 +0200 Subject: [PATCH 073/544] CHARSET: Fix file encoding. --- src/GitVersion.Core/Core/EffectiveConfigurationExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GitVersion.Core/Core/EffectiveConfigurationExtensions.cs b/src/GitVersion.Core/Core/EffectiveConfigurationExtensions.cs index 4b1f5bbe86..0a2d51edb7 100644 --- a/src/GitVersion.Core/Core/EffectiveConfigurationExtensions.cs +++ b/src/GitVersion.Core/Core/EffectiveConfigurationExtensions.cs @@ -1,4 +1,4 @@ -using GitVersion.Configuration; +using GitVersion.Configuration; using GitVersion.Extensions; namespace GitVersion.Core; From 77523fefa5c3930f5b37030a6b9e43f5014c482c Mon Sep 17 00:00:00 2001 From: HHobeck Date: Mon, 15 Apr 2024 08:41:05 +0200 Subject: [PATCH 074/544] Fix integration test --- .../IntegrationTests/DocumentationSamples.cs | 6 ++-- .../FallbackVersionStrategyScenarios.cs | 31 +++++++++++++++++++ .../Core/EffectiveConfigurationExtensions.cs | 2 +- .../TaggedCommitVersionStrategy.cs | 16 +++++----- 4 files changed, 44 insertions(+), 11 deletions(-) diff --git a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamples.cs b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamples.cs index e3480f25cf..9f1a2a895b 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamples.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamples.cs @@ -202,7 +202,7 @@ public void GitFlowMajorRelease() fixture.SequenceDiagram.NoteOver("Release branches are deleted once merged", "release/2.0.0"); fixture.Checkout(MainBranch); - fixture.AssertFullSemver("2.0.0-4"); + fixture.AssertFullSemver("2.0.0-0"); fixture.ApplyTag("2.0.0"); fixture.AssertFullSemver("2.0.0"); @@ -291,7 +291,7 @@ public void GitFlowSupportMinorRelease() fixture.MergeNoFF("release/1.4.0"); fixture.SequenceDiagram.Destroy("release/1.4.0"); fixture.SequenceDiagram.NoteOver("Release branches are deleted once merged", "release/1.4.0"); - fixture.AssertFullSemver("1.4.0-4"); + fixture.AssertFullSemver("1.4.0-0"); fixture.ApplyTag("1.4.0"); fixture.AssertFullSemver("1.4.0"); Console.WriteLine(fixture.SequenceDiagram.GetDiagram()); @@ -392,7 +392,7 @@ public void GitHubFlowMajorRelease() fixture.SequenceDiagram.Destroy("release/2.0.0"); fixture.SequenceDiagram.NoteOver("Release branches are deleted once merged", "release/2.0.0"); - fixture.AssertFullSemver("2.0.0-4"); + fixture.AssertFullSemver("2.0.0-0"); fixture.ApplyTag("2.0.0"); fixture.AssertFullSemver("2.0.0"); fixture.MakeACommit(); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/FallbackVersionStrategyScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/FallbackVersionStrategyScenarios.cs index 0ef417e9fa..b7bcf88f90 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/FallbackVersionStrategyScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/FallbackVersionStrategyScenarios.cs @@ -93,4 +93,35 @@ public void TakeTheLatestCommitAsBaseVersion(bool mode) // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); } + + [TestCase(false, "1.0.0-1+4")] + [TestCase(true, "1.0.0-1+2")] + public void TakeTheCommitBranchedFromAsBaseVersionWhenTracksReleaseBranchesIsTrue( + bool tracksReleaseBranches, string version) + { + var configuration = ConfigurationBuilder + .WithBranch("main", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithTrackMergeTarget(false) + .WithTracksReleaseBranches(tracksReleaseBranches) + ).Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + fixture.MakeACommit("A"); + fixture.MakeACommit("B"); + fixture.BranchTo("release/foo"); + fixture.Checkout("main"); + fixture.MakeACommit("C"); + fixture.Checkout("release/foo"); + fixture.MakeACommit("D"); + fixture.ApplyTag("0.0.0"); + fixture.Checkout("main"); + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver(version, configuration); + + fixture.Repository.DumpGraph(); + } } diff --git a/src/GitVersion.Core/Core/EffectiveConfigurationExtensions.cs b/src/GitVersion.Core/Core/EffectiveConfigurationExtensions.cs index 0a2d51edb7..c6a7efb553 100644 --- a/src/GitVersion.Core/Core/EffectiveConfigurationExtensions.cs +++ b/src/GitVersion.Core/Core/EffectiveConfigurationExtensions.cs @@ -16,7 +16,7 @@ public static TaggedSemanticVersions GetTaggedSemanticVersion(this EffectiveConf taggedSemanticVersion |= TaggedSemanticVersions.OfMergeTargets; } - if (effectiveConfiguration.TrackMergeTarget) + if (effectiveConfiguration.TracksReleaseBranches) { taggedSemanticVersion |= TaggedSemanticVersions.OfReleaseBranches; } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs index 11be4ab21c..35cf8075b9 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs @@ -40,12 +40,15 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur ).SelectMany(elements => elements).Distinct().ToArray(); var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); + var semanticVersionsWithTag = taggedSemanticVersionService.GetTaggedSemanticVersions( + branch: Context.CurrentBranch, + configuration: Context.Configuration, + label: label, + notOlderThan: Context.CurrentCommit.When, + taggedSemanticVersion: configuration.Value.GetTaggedSemanticVersion() + ).SelectMany(elements => elements).Distinct().ToArray(); - var maxTaggedSemanticVersion = taggedSemanticVersions - .Where(element => !element.Value.IsMatchForBranchSpecificLabel(label)).Max(); - - foreach (var semanticVersionWithTag - in taggedSemanticVersions.Where(element => element.Value.IsMatchForBranchSpecificLabel(label))) + foreach (var semanticVersionWithTag in semanticVersionsWithTag) { var baseVersionSource = semanticVersionWithTag.Tag.Commit; var increment = incrementStrategyFinder.DetermineIncrementedField( @@ -62,8 +65,7 @@ in taggedSemanticVersions.Where(element => element.Value.IsMatchForBranchSpecifi { Increment = increment, ForceIncrement = false, - Label = label, - AlternativeSemanticVersion = maxTaggedSemanticVersion?.Value + Label = label } }; } From 4ec69622b09e6e55c73d125e2e12ff200ff89d44 Mon Sep 17 00:00:00 2001 From: Hardy Hobeck Date: Thu, 4 Apr 2024 10:47:11 +0200 Subject: [PATCH 075/544] EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch --- .../IntegrationTests/PullRequestScenarios.cs | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs index 0e24d24cc6..d5df1d8c9b 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs @@ -1,3 +1,4 @@ +using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; using LibGit2Sharp; @@ -6,6 +7,48 @@ namespace GitVersion.Core.Tests.IntegrationTests; [TestFixture] public class PullRequestScenarios : TestBase { + /// + /// GitHubFlow - Pull requests (increment major on main and minor on feature) + /// + [Test] + public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch() + { + var configuration = GitHubFlowConfigurationBuilder.New + .WithBranch("main", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1", configuration); + + fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ❌ expected: "2.0.0-PullRequest2.2" + fixture.AssertFullSemver("1.1.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-2", configuration); + } + [Test] public void CanCalculatePullRequestChanges() { From 6a5e6aeefe28ee338231ded6e44d876af60d3ac3 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Tue, 16 Apr 2024 14:21:24 +0200 Subject: [PATCH 076/544] Fix unit tests --- .../IntegrationTests/HotfixBranchScenarios.cs | 4 +- .../IntegrationTests/PullRequestScenarios.cs | 4 +- src/GitVersion.Core/Core/RepositoryStore.cs | 51 ++++++++++++++----- 3 files changed, 42 insertions(+), 17 deletions(-) diff --git a/src/GitVersion.Core.Tests/IntegrationTests/HotfixBranchScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/HotfixBranchScenarios.cs index 2369e1c58b..ed1b452457 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/HotfixBranchScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/HotfixBranchScenarios.cs @@ -162,7 +162,7 @@ public void FeatureOnHotfixFeatureBranchDeleted() fixture.Checkout(hotfix451); fixture.MergeNoFF(featureBranch); // commit 2 fixture.Repository.Branches.Remove(featureBranch); - fixture.AssertFullSemver("4.5.1-beta.1+3", configuration); + fixture.AssertFullSemver("4.5.1-beta.1+4", configuration); } /// @@ -208,7 +208,7 @@ public void FeatureOnHotfixFeatureBranchNotDeleted() fixture.Checkout(hotfix451); fixture.MergeNoFF(featureBranch); // commit 2 - fixture.AssertFullSemver("4.5.1-beta.1+3", configuration); + fixture.AssertFullSemver("4.5.1-beta.1+4", configuration); } [Test] diff --git a/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs index d5df1d8c9b..b412eaeb56 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs @@ -38,8 +38,8 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch() fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - // ❌ expected: "2.0.0-PullRequest2.2" - fixture.AssertFullSemver("1.1.0-PullRequest2.2", configuration); + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); fixture.Checkout("main"); fixture.Remove("pull/2/merge"); diff --git a/src/GitVersion.Core/Core/RepositoryStore.cs b/src/GitVersion.Core/Core/RepositoryStore.cs index 43a2115734..7384bc55f4 100644 --- a/src/GitVersion.Core/Core/RepositoryStore.cs +++ b/src/GitVersion.Core/Core/RepositoryStore.cs @@ -106,14 +106,47 @@ public IEnumerable GetSourceBranches(IBranch branch, IGitVersionConfigu params IBranch[] excludedBranches) => GetSourceBranches(branch, configuration, (IEnumerable)excludedBranches); - public IEnumerable GetSourceBranches(IBranch branch, IGitVersionConfiguration configuration, IEnumerable excludedBranches) + public IEnumerable GetSourceBranches( + IBranch branch, IGitVersionConfiguration configuration, IEnumerable excludedBranches) { var returnedBranches = new HashSet(); var referenceLookup = this.repository.Refs.ToLookup(r => r.TargetIdentifier); - foreach (var branchGrouping in FindCommitBranchesWasBranchedFrom(branch, configuration, excludedBranches) - .GroupBy(element => element.Commit, element => element.Branch)) + var commitBranches = FindCommitBranchesWasBranchedFrom(branch, configuration, excludedBranches).ToHashSet(); + + var ignore = new HashSet(); + foreach (var commitBranch in commitBranches) + { + foreach (var commit in branch.Commits.Where(element => element.When > commitBranch.Commit.When)) + { + var parents = commit.Parents.ToArray(); + if (parents.Length > 1 && parents.Any(element => element.Equals(commitBranch.Commit))) + { + ignore.Add(commitBranch); + } + } + } + + foreach (var item in commitBranches.Skip(1).Reverse()) + { + if (ignore.Contains(item)) continue; + + foreach (var commitBranche in commitBranches) + { + if (item.Commit.Equals(commitBranche.Commit)) break; + + foreach (var commit in commitBranche.Branch.Commits.Where(element => element.When >= item.Commit.When)) + { + if (commit.Equals(item.Commit)) + { + commitBranches.Remove(item); + } + } + } + } + + foreach (var branchGrouping in commitBranches.GroupBy(element => element.Commit, element => element.Branch)) { bool referenceMatchFound = false; var referenceNames = referenceLookup[branchGrouping.Key.Sha].Select(element => element.Name).ToHashSet(); @@ -180,18 +213,10 @@ public IEnumerable FindCommitBranchesWasBranchedFrom(IBranch branc if (branch.Tip == null) { this.log.Warning($"{branch} has no tip."); - yield break; + return Enumerable.Empty(); } - DateTimeOffset? when = null; - var branchCommits = new MergeCommitFinder(this, configuration, excludedBranches, this.log) - .FindMergeCommitsFor(branch).ToList(); - foreach (var branchCommit in branchCommits) - { - if (when != null && branchCommit.Commit.When != when) break; - yield return branchCommit; - when = branchCommit.Commit.When; - } + return new MergeCommitFinder(this, configuration, excludedBranches, this.log).FindMergeCommitsFor(branch).ToList(); } } From f93ed3916a1bcec871eae4abd36f6158b774899c Mon Sep 17 00:00:00 2001 From: Hardy Hobeck <56404113+HHobeck@users.noreply.github.com> Date: Tue, 16 Apr 2024 17:44:25 +0200 Subject: [PATCH 077/544] Update src/GitVersion.Core/Core/RepositoryStore.cs Co-authored-by: Artur --- src/GitVersion.Core/Core/RepositoryStore.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GitVersion.Core/Core/RepositoryStore.cs b/src/GitVersion.Core/Core/RepositoryStore.cs index 7384bc55f4..face7c64ab 100644 --- a/src/GitVersion.Core/Core/RepositoryStore.cs +++ b/src/GitVersion.Core/Core/RepositoryStore.cs @@ -213,7 +213,7 @@ public IEnumerable FindCommitBranchesWasBranchedFrom(IBranch branc if (branch.Tip == null) { this.log.Warning($"{branch} has no tip."); - return Enumerable.Empty(); + return []; } return new MergeCommitFinder(this, configuration, excludedBranches, this.log).FindMergeCommitsFor(branch).ToList(); From e736e141f92c5b3c6216c46ee58bb80cbdef17da Mon Sep 17 00:00:00 2001 From: Hardy Hobeck <56404113+HHobeck@users.noreply.github.com> Date: Tue, 16 Apr 2024 17:45:02 +0200 Subject: [PATCH 078/544] Update src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs Co-authored-by: Artur --- .../IntegrationTests/PullRequestScenarios.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs index b412eaeb56..41656728e6 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs @@ -20,7 +20,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch() .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); From 5765f74146f02042888a7af6fcad5bcf631d327b Mon Sep 17 00:00:00 2001 From: HHobeck Date: Tue, 16 Apr 2024 17:49:37 +0200 Subject: [PATCH 079/544] Name FindCommitBranchWasBranchedFrom to FindCommitBranchBranchedFrom --- .../Core/RepositoryStoreTests.cs | 4 ++-- .../Core/Abstractions/IRepositoryStore.cs | 6 +++--- src/GitVersion.Core/Core/MainlineBranchFinder.cs | 2 +- src/GitVersion.Core/Core/RepositoryStore.cs | 12 +++++++----- src/GitVersion.Core/PublicAPI.Unshipped.txt | 8 ++++---- .../TrunkBasedVersionStrategy.cs | 2 +- .../VersionInBranchNameVersionStrategy.cs | 2 +- 7 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/GitVersion.Core.Tests/Core/RepositoryStoreTests.cs b/src/GitVersion.Core.Tests/Core/RepositoryStoreTests.cs index e795732a57..67e861aad0 100644 --- a/src/GitVersion.Core.Tests/Core/RepositoryStoreTests.cs +++ b/src/GitVersion.Core.Tests/Core/RepositoryStoreTests.cs @@ -227,10 +227,10 @@ public void FindCommitBranchWasBranchedFromShouldReturnNullIfTheRemoteIsTheOnlyS branch.ShouldNotBeNull(); var configuration = GitFlowConfigurationBuilder.New.Build(); - var branchedCommit = gitRepoMetadataProvider.FindCommitBranchWasBranchedFrom(branch, configuration, []); + var branchedCommit = gitRepoMetadataProvider.FindCommitBranchBranchedFrom(branch, configuration, []); branchedCommit.ShouldBe(BranchCommit.Empty); - var branchedCommits = gitRepoMetadataProvider.FindCommitBranchesWasBranchedFrom(branch, configuration).ToArray(); + var branchedCommits = gitRepoMetadataProvider.FindCommitBranchesBranchedFrom(branch, configuration).ToArray(); branchedCommits.ShouldBeEmpty(); } } diff --git a/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs b/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs index 58571cc06d..803b9a123c 100644 --- a/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs +++ b/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs @@ -27,11 +27,11 @@ public interface IRepositoryStore /// Find the commit where the given branch was branched from another branch. /// If there are multiple such commits and branches, tries to guess based on commit histories. /// - BranchCommit FindCommitBranchWasBranchedFrom(IBranch? branch, IGitVersionConfiguration configuration, params IBranch[] excludedBranches); + BranchCommit FindCommitBranchBranchedFrom(IBranch? branch, IGitVersionConfiguration configuration, params IBranch[] excludedBranches); - IEnumerable FindCommitBranchesWasBranchedFrom(IBranch branch, IGitVersionConfiguration configuration, params IBranch[] excludedBranches); + IEnumerable FindCommitBranchesBranchedFrom(IBranch branch, IGitVersionConfiguration configuration, params IBranch[] excludedBranches); - IEnumerable FindCommitBranchesWasBranchedFrom(IBranch branch, IGitVersionConfiguration configuration, IEnumerable excludedBranches); + IEnumerable FindCommitBranchesBranchedFrom(IBranch branch, IGitVersionConfiguration configuration, IEnumerable excludedBranches); IEnumerable GetSourceBranches(IBranch branch, IGitVersionConfiguration configuration, params IBranch[] excludedBranches); diff --git a/src/GitVersion.Core/Core/MainlineBranchFinder.cs b/src/GitVersion.Core/Core/MainlineBranchFinder.cs index 7d7521e0e2..2e2ad2fe96 100644 --- a/src/GitVersion.Core/Core/MainlineBranchFinder.cs +++ b/src/GitVersion.Core/Core/MainlineBranchFinder.cs @@ -83,7 +83,7 @@ public BranchCommit BranchOrigin(IBranch branch) return mergeBase; } - var branchCommit = this.repositoryStore.FindCommitBranchWasBranchedFrom(branch, this.configuration); + var branchCommit = this.repositoryStore.FindCommitBranchBranchedFrom(branch, this.configuration); if (branchCommit != BranchCommit.Empty) { this.log.Info($"Found parent commit {branchCommit.Commit.Sha} for '{branchName}'."); diff --git a/src/GitVersion.Core/Core/RepositoryStore.cs b/src/GitVersion.Core/Core/RepositoryStore.cs index face7c64ab..e5ddb584a5 100644 --- a/src/GitVersion.Core/Core/RepositoryStore.cs +++ b/src/GitVersion.Core/Core/RepositoryStore.cs @@ -113,7 +113,7 @@ public IEnumerable GetSourceBranches( var referenceLookup = this.repository.Refs.ToLookup(r => r.TargetIdentifier); - var commitBranches = FindCommitBranchesWasBranchedFrom(branch, configuration, excludedBranches).ToHashSet(); + var commitBranches = FindCommitBranchesBranchedFrom(branch, configuration, excludedBranches).ToHashSet(); var ignore = new HashSet(); foreach (var commitBranch in commitBranches) @@ -174,7 +174,7 @@ public IEnumerable GetSourceBranches( /// Find the commit where the given branch was branched from another branch. /// If there are multiple such commits and branches, tries to guess based on commit histories. /// - public BranchCommit FindCommitBranchWasBranchedFrom(IBranch? branch, IGitVersionConfiguration configuration, + public BranchCommit FindCommitBranchBranchedFrom(IBranch? branch, IGitVersionConfiguration configuration, params IBranch[] excludedBranches) { branch = branch.NotNull(); @@ -203,10 +203,12 @@ public BranchCommit FindCommitBranchWasBranchedFrom(IBranch? branch, IGitVersion } } - public IEnumerable FindCommitBranchesWasBranchedFrom(IBranch branch, IGitVersionConfiguration configuration, params IBranch[] excludedBranches) - => FindCommitBranchesWasBranchedFrom(branch, configuration, (IEnumerable)excludedBranches); + public IEnumerable FindCommitBranchesBranchedFrom( + IBranch branch, IGitVersionConfiguration configuration, params IBranch[] excludedBranches) + => FindCommitBranchesBranchedFrom(branch, configuration, (IEnumerable)excludedBranches); - public IEnumerable FindCommitBranchesWasBranchedFrom(IBranch branch, IGitVersionConfiguration configuration, IEnumerable excludedBranches) + public IEnumerable FindCommitBranchesBranchedFrom( + IBranch branch, IGitVersionConfiguration configuration, IEnumerable excludedBranches) { using (this.log.IndentLog($"Finding branches source of '{branch}'")) { diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 2f06472163..b5b8f6ba18 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -25,9 +25,9 @@ GitVersion.Common.IRepositoryStore GitVersion.Common.IRepositoryStore.ExcludingBranches(System.Collections.Generic.IEnumerable! branchesToExclude) -> System.Collections.Generic.IEnumerable! GitVersion.Common.IRepositoryStore.FindBranch(GitVersion.Git.ReferenceName! branchName) -> GitVersion.Git.IBranch? GitVersion.Common.IRepositoryStore.FindBranch(string! branchName) -> GitVersion.Git.IBranch? -GitVersion.Common.IRepositoryStore.FindCommitBranchesWasBranchedFrom(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.Git.IBranch![]! excludedBranches) -> System.Collections.Generic.IEnumerable! -GitVersion.Common.IRepositoryStore.FindCommitBranchesWasBranchedFrom(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, System.Collections.Generic.IEnumerable! excludedBranches) -> System.Collections.Generic.IEnumerable! -GitVersion.Common.IRepositoryStore.FindCommitBranchWasBranchedFrom(GitVersion.Git.IBranch? branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.Git.IBranch![]! excludedBranches) -> GitVersion.Git.BranchCommit +GitVersion.Common.IRepositoryStore.FindCommitBranchBranchedFrom(GitVersion.Git.IBranch? branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.Git.IBranch![]! excludedBranches) -> GitVersion.Git.BranchCommit +GitVersion.Common.IRepositoryStore.FindCommitBranchesBranchedFrom(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.Git.IBranch![]! excludedBranches) -> System.Collections.Generic.IEnumerable! +GitVersion.Common.IRepositoryStore.FindCommitBranchesBranchedFrom(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, System.Collections.Generic.IEnumerable! excludedBranches) -> System.Collections.Generic.IEnumerable! GitVersion.Common.IRepositoryStore.FindMergeBase(GitVersion.Git.IBranch? branch, GitVersion.Git.IBranch? otherBranch) -> GitVersion.Git.ICommit? GitVersion.Common.IRepositoryStore.FindMergeBase(GitVersion.Git.ICommit! commit, GitVersion.Git.ICommit! mainlineTip) -> GitVersion.Git.ICommit? GitVersion.Common.IRepositoryStore.GetBranchesContainingCommit(GitVersion.Git.ICommit! commit, System.Collections.Generic.IEnumerable? branches = null, bool onlyTrackedBranches = false) -> System.Collections.Generic.IEnumerable! @@ -829,4 +829,4 @@ static readonly GitVersion.Git.BranchCommit.Empty -> GitVersion.Git.BranchCommit static readonly GitVersion.Helpers.Disposable.Empty -> System.IDisposable! static readonly GitVersion.SemanticVersion.Empty -> GitVersion.SemanticVersion! static readonly GitVersion.SemanticVersionBuildMetaData.Empty -> GitVersion.SemanticVersionBuildMetaData! -static readonly GitVersion.SemanticVersionPreReleaseTag.Empty -> GitVersion.SemanticVersionPreReleaseTag! \ No newline at end of file +static readonly GitVersion.SemanticVersionPreReleaseTag.Empty -> GitVersion.SemanticVersionPreReleaseTag! diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs index c0f71e76de..6d4495491f 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs @@ -230,7 +230,7 @@ private IReadOnlyDictionary GetCommitsWas var branch = repositoryStore.FindBranch(branchName); if (branch is null) return result; - var branchCommits = repositoryStore.FindCommitBranchesWasBranchedFrom( + var branchCommits = repositoryStore.FindCommitBranchesBranchedFrom( branch, Context.Configuration ).ToList(); diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs index fb4c382343..12d1525677 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs @@ -40,7 +40,7 @@ public bool TryGetBaseVersion(EffectiveBranchConfiguration configuration, [NotNu return false; Lazy commitBranchWasBranchedFrom = new( - () => this.repositoryStore.FindCommitBranchWasBranchedFrom(configuration.Branch, Context.Configuration) + () => this.repositoryStore.FindCommitBranchBranchedFrom(configuration.Branch, Context.Configuration) ); foreach (var branch in new[] { Context.CurrentBranch, configuration.Branch }) { From 9fec9a4c5ecb0c061099d1672eafc44c145bd152 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Apr 2024 15:35:31 +0000 Subject: [PATCH 080/544] (new-cli deps): Bump System.CommandLine Bumps the microsoft group in /new-cli with 1 update: [System.CommandLine](https://github.com/dotnet/command-line-api). Updates `System.CommandLine` from 2.0.0-beta4.24201.1 to 2.0.0-beta4.24209.3 - [Release notes](https://github.com/dotnet/command-line-api/releases) - [Changelog](https://github.com/dotnet/command-line-api/blob/main/docs/History.md) - [Commits](https://github.com/dotnet/command-line-api/commits) --- updated-dependencies: - dependency-name: System.CommandLine dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index a0b1cba9ab..d8eb1eb3c4 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -20,6 +20,6 @@ - + \ No newline at end of file From 2cdaaed466a4e2baf1c11211d1a294ea0a6c902a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Apr 2024 15:37:53 +0000 Subject: [PATCH 081/544] (new-cli deps): Bump Scriban from 5.9.1 to 5.10.0 in /new-cli Bumps [Scriban](https://github.com/scriban/scriban) from 5.9.1 to 5.10.0. - [Release notes](https://github.com/scriban/scriban/releases) - [Changelog](https://github.com/scriban/scriban/blob/master/changelog.md) - [Commits](https://github.com/scriban/scriban/compare/5.9.1...5.10.0) --- updated-dependencies: - dependency-name: Scriban dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index a0b1cba9ab..31a06a0050 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -15,7 +15,7 @@ - + From 49aacf098385da00bc4399ea5bd4652a741f8826 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Apr 2024 15:43:32 +0000 Subject: [PATCH 082/544] (ci deps): Bump xunit.assert from 2.7.0 to 2.7.1 in /build Bumps [xunit.assert](https://github.com/xunit/xunit) from 2.7.0 to 2.7.1. - [Commits](https://github.com/xunit/xunit/compare/2.7.0...2.7.1) --- updated-dependencies: - dependency-name: xunit.assert dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Directory.Packages.props b/build/Directory.Packages.props index d11b9079fb..7bfd3c6068 100644 --- a/build/Directory.Packages.props +++ b/build/Directory.Packages.props @@ -14,6 +14,6 @@ - + \ No newline at end of file From 8cb083961c1109907a89ff7a8207c9da709d62fb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 15:55:58 +0000 Subject: [PATCH 083/544] (deps): Bump the analyzers group with 2 updates Bumps the analyzers group with 2 updates: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Updates `Roslynator.Analyzers` from 4.12.0 to 4.12.2 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.0...v4.12.2) Updates `Roslynator.Formatting.Analyzers` from 4.12.0 to 4.12.2 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.0...v4.12.2) --- updated-dependencies: - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 9b4e3ae579..498b8f684a 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -12,8 +12,8 @@ - - + + From 67196a532cc4ef0bfc30da11fe36f80db38de968 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 15:57:10 +0000 Subject: [PATCH 084/544] (deps): Bump JsonSchema.Net.Generation from 4.3.0 to 4.3.0.2 Bumps [JsonSchema.Net.Generation](https://github.com/gregsdennis/json-everything) from 4.3.0 to 4.3.0.2. - [Commits](https://github.com/gregsdennis/json-everything/compare/schema-gen-v4.3.0...schema-gen-v4.3.0.2) --- updated-dependencies: - dependency-name: JsonSchema.Net.Generation dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 9b4e3ae579..88e5799883 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -16,7 +16,7 @@ - + From 8d4a19342d3cfd77f3e284b8c92063472bca6eb7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 15:26:23 +0000 Subject: [PATCH 085/544] (ci deps): Bump xunit.assert from 2.7.1 to 2.8.0 in /build Bumps [xunit.assert](https://github.com/xunit/xunit) from 2.7.1 to 2.8.0. - [Commits](https://github.com/xunit/xunit/compare/2.7.1...2.8.0) --- updated-dependencies: - dependency-name: xunit.assert dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- build/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Directory.Packages.props b/build/Directory.Packages.props index 7bfd3c6068..da5cec9d35 100644 --- a/build/Directory.Packages.props +++ b/build/Directory.Packages.props @@ -14,6 +14,6 @@ - + \ No newline at end of file From 9f350a2edc16d6be7226750041c2d3f6876ee636 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 May 2024 15:57:04 +0000 Subject: [PATCH 086/544] (docs deps): Bump the remark group with 55 updates Bumps the remark group with 55 updates: | Package | From | To | | --- | --- | --- | | [remark-cli](https://github.com/remarkjs/remark) | `12.0.0` | `12.0.1` | | [remark-lint](https://github.com/remarkjs/remark-lint) | `9.1.2` | `10.0.0` | | [remark-lint-blockquote-indentation](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-checkbox-character-style](https://github.com/remarkjs/remark-lint) | `4.1.2` | `5.0.0` | | [remark-lint-checkbox-content-indent](https://github.com/remarkjs/remark-lint) | `4.1.2` | `5.0.0` | | [remark-lint-code-block-style](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-definition-case](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-definition-spacing](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-fenced-code-flag](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-fenced-code-marker](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-file-extension](https://github.com/remarkjs/remark-lint) | `2.1.2` | `3.0.0` | | [remark-lint-final-definition](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.1` | | [remark-lint-final-newline](https://github.com/remarkjs/remark-lint) | `2.1.2` | `3.0.0` | | [remark-lint-hard-break-spaces](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-heading-increment](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-heading-style](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-link-title-style](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-list-item-bullet-indent](https://github.com/remarkjs/remark-lint) | `4.1.2` | `5.0.0` | | [remark-lint-list-item-content-indent](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-list-item-indent](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-maximum-heading-length](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-no-blockquote-without-marker](https://github.com/remarkjs/remark-lint) | `5.1.2` | `6.0.0` | | [remark-lint-no-consecutive-blank-lines](https://github.com/remarkjs/remark-lint) | `4.1.3` | `5.0.0` | | [remark-lint-no-duplicate-definitions](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-no-duplicate-headings](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-no-emphasis-as-heading](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-no-empty-url](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-no-file-name-articles](https://github.com/remarkjs/remark-lint) | `2.1.2` | `3.0.0` | | [remark-lint-no-file-name-consecutive-dashes](https://github.com/remarkjs/remark-lint) | `2.1.2` | `3.0.0` | | [remark-lint-no-file-name-irregular-characters](https://github.com/remarkjs/remark-lint) | `2.1.2` | `3.0.0` | | [remark-lint-no-file-name-mixed-case](https://github.com/remarkjs/remark-lint) | `2.1.2` | `3.0.0` | | [remark-lint-no-file-name-outer-dashes](https://github.com/remarkjs/remark-lint) | `2.1.2` | `3.0.0` | | [remark-lint-no-heading-content-indent](https://github.com/remarkjs/remark-lint) | `4.1.2` | `5.0.0` | | [remark-lint-no-heading-indent](https://github.com/remarkjs/remark-lint) | `4.1.2` | `5.0.0` | | [remark-lint-no-heading-like-paragraph](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-no-literal-urls](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-no-multiple-toplevel-headings](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-no-reference-like-url](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-no-shell-dollars](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-no-shortcut-reference-image](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-no-table-indentation](https://github.com/remarkjs/remark-lint) | `4.1.2` | `5.0.0` | | [remark-lint-no-tabs](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-no-unused-definitions](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-ordered-list-marker-style](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-ordered-list-marker-value](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-rule-style](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-strong-marker](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-lint-table-cell-padding](https://github.com/remarkjs/remark-lint) | `4.1.3` | `5.0.0` | | [remark-lint-table-pipe-alignment](https://github.com/remarkjs/remark-lint) | `3.1.3` | `4.0.0` | | [remark-lint-table-pipes](https://github.com/remarkjs/remark-lint) | `4.1.2` | `5.0.0` | | [remark-lint-unordered-list-marker-style](https://github.com/remarkjs/remark-lint) | `3.1.2` | `4.0.0` | | [remark-preset-lint-consistent](https://github.com/remarkjs/remark-lint) | `5.1.2` | `6.0.0` | | [remark-preset-lint-markdown-style-guide](https://github.com/remarkjs/remark-lint) | `5.1.3` | `6.0.0` | | [remark-preset-lint-recommended](https://github.com/remarkjs/remark-lint) | `6.1.3` | `7.0.0` | | [remark-validate-links](https://github.com/remarkjs/remark-validate-links) | `13.0.0` | `13.0.1` | Updates `remark-cli` from 12.0.0 to 12.0.1 - [Release notes](https://github.com/remarkjs/remark/releases) - [Changelog](https://github.com/remarkjs/remark/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark/compare/remark-cli@12.0.0...remark-cli@12.0.1) Updates `remark-lint` from 9.1.2 to 10.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/9.1.2...10.0.0) Updates `remark-lint-blockquote-indentation` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-checkbox-character-style` from 4.1.2 to 5.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/5.0.0) Updates `remark-lint-checkbox-content-indent` from 4.1.2 to 5.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/5.0.0) Updates `remark-lint-code-block-style` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-definition-case` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-definition-spacing` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-fenced-code-flag` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-fenced-code-marker` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-file-extension` from 2.1.2 to 3.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/3.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/3.0.0) Updates `remark-lint-final-definition` from 3.1.2 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/remark-lint-final-definition@4.0.1) Updates `remark-lint-final-newline` from 2.1.2 to 3.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/3.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/3.0.0) Updates `remark-lint-hard-break-spaces` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-heading-increment` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-heading-style` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-link-title-style` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-list-item-bullet-indent` from 4.1.2 to 5.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/5.0.0) Updates `remark-lint-list-item-content-indent` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-list-item-indent` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-maximum-heading-length` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-no-blockquote-without-marker` from 5.1.2 to 6.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/6.0.0) Updates `remark-lint-no-consecutive-blank-lines` from 4.1.3 to 5.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/5.0.0) Updates `remark-lint-no-duplicate-definitions` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-no-duplicate-headings` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-no-emphasis-as-heading` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-no-empty-url` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-no-file-name-articles` from 2.1.2 to 3.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/3.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/3.0.0) Updates `remark-lint-no-file-name-consecutive-dashes` from 2.1.2 to 3.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/3.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/3.0.0) Updates `remark-lint-no-file-name-irregular-characters` from 2.1.2 to 3.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/3.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/3.0.0) Updates `remark-lint-no-file-name-mixed-case` from 2.1.2 to 3.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/3.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/3.0.0) Updates `remark-lint-no-file-name-outer-dashes` from 2.1.2 to 3.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/3.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/3.0.0) Updates `remark-lint-no-heading-content-indent` from 4.1.2 to 5.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/5.0.0) Updates `remark-lint-no-heading-indent` from 4.1.2 to 5.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/5.0.0) Updates `remark-lint-no-heading-like-paragraph` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-no-literal-urls` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-no-multiple-toplevel-headings` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-no-reference-like-url` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-no-shell-dollars` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-no-shortcut-reference-image` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-no-table-indentation` from 4.1.2 to 5.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/5.0.0) Updates `remark-lint-no-tabs` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-no-unused-definitions` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-ordered-list-marker-style` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-ordered-list-marker-value` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-rule-style` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-strong-marker` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-table-cell-padding` from 4.1.3 to 5.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/5.0.0) Updates `remark-lint-table-pipe-alignment` from 3.1.3 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/remark-lint-table-pipe-alignment@3.1.3...4.0.0) Updates `remark-lint-table-pipes` from 4.1.2 to 5.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/5.0.0) Updates `remark-lint-unordered-list-marker-style` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-preset-lint-consistent` from 5.1.2 to 6.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/6.0.0) Updates `remark-preset-lint-markdown-style-guide` from 5.1.3 to 6.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/6.0.0) Updates `remark-preset-lint-recommended` from 6.1.3 to 7.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/7.0.0) Updates `remark-validate-links` from 13.0.0 to 13.0.1 - [Release notes](https://github.com/remarkjs/remark-validate-links/releases) - [Commits](https://github.com/remarkjs/remark-validate-links/compare/13.0.0...13.0.1) --- updated-dependencies: - dependency-name: remark-cli dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-blockquote-indentation dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-checkbox-character-style dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-checkbox-content-indent dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-code-block-style dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-definition-case dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-definition-spacing dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-fenced-code-flag dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-fenced-code-marker dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-file-extension dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-final-definition dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-final-newline dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-hard-break-spaces dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-heading-increment dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-heading-style dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-link-title-style dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-list-item-bullet-indent dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-list-item-content-indent dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-list-item-indent dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-maximum-heading-length dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-blockquote-without-marker dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-consecutive-blank-lines dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-duplicate-definitions dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-duplicate-headings dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-emphasis-as-heading dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-empty-url dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-file-name-articles dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-file-name-consecutive-dashes dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-file-name-irregular-characters dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-file-name-mixed-case dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-file-name-outer-dashes dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-heading-content-indent dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-heading-indent dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-heading-like-paragraph dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-literal-urls dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-multiple-toplevel-headings dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-reference-like-url dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-shell-dollars dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-shortcut-reference-image dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-table-indentation dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-tabs dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-unused-definitions dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-ordered-list-marker-style dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-ordered-list-marker-value dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-rule-style dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-strong-marker dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-table-cell-padding dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-table-pipe-alignment dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-table-pipes dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-unordered-list-marker-style dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-preset-lint-consistent dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-preset-lint-markdown-style-guide dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-preset-lint-recommended dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-validate-links dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark ... Signed-off-by: dependabot[bot] --- package-lock.json | 27836 +++++++++++++++++++++++++++++++------------- package.json | 110 +- 2 files changed, 20101 insertions(+), 7845 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1ae562d2e6..50589ade20 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,73 +8,73 @@ "license": "MIT", "devDependencies": { "remark": "^15.0.1", - "remark-cli": "^12.0.0", + "remark-cli": "^12.0.1", "remark-frontmatter": "^5.0.0", "remark-heading-gap": "^6.0.0", - "remark-lint": "^9.1.2", - "remark-lint-blockquote-indentation": "^3.1.2", - "remark-lint-checkbox-character-style": "^4.1.2", - "remark-lint-checkbox-content-indent": "^4.1.2", + "remark-lint": "^10.0.0", + "remark-lint-blockquote-indentation": "^4.0.0", + "remark-lint-checkbox-character-style": "^5.0.0", + "remark-lint-checkbox-content-indent": "^5.0.0", "remark-lint-code": "^2.0.0", - "remark-lint-code-block-style": "^3.1.2", - "remark-lint-definition-case": "^3.1.2", - "remark-lint-definition-spacing": "^3.1.2", - "remark-lint-fenced-code-flag": "^3.1.2", - "remark-lint-fenced-code-marker": "^3.1.2", - "remark-lint-file-extension": "^2.1.2", - "remark-lint-final-definition": "^3.1.2", - "remark-lint-final-newline": "^2.1.2", - "remark-lint-hard-break-spaces": "^3.1.2", - "remark-lint-heading-increment": "^3.1.2", - "remark-lint-heading-style": "^3.1.2", + "remark-lint-code-block-style": "^4.0.0", + "remark-lint-definition-case": "^4.0.0", + "remark-lint-definition-spacing": "^4.0.0", + "remark-lint-fenced-code-flag": "^4.0.0", + "remark-lint-fenced-code-marker": "^4.0.0", + "remark-lint-file-extension": "^3.0.0", + "remark-lint-final-definition": "^4.0.1", + "remark-lint-final-newline": "^3.0.0", + "remark-lint-hard-break-spaces": "^4.0.0", + "remark-lint-heading-increment": "^4.0.0", + "remark-lint-heading-style": "^4.0.0", "remark-lint-heading-whitespace": "^1.0.0", - "remark-lint-link-title-style": "^3.1.2", - "remark-lint-list-item-bullet-indent": "^4.1.2", - "remark-lint-list-item-content-indent": "^3.1.2", - "remark-lint-list-item-indent": "^3.1.2", - "remark-lint-maximum-heading-length": "^3.1.2", + "remark-lint-link-title-style": "^4.0.0", + "remark-lint-list-item-bullet-indent": "^5.0.0", + "remark-lint-list-item-content-indent": "^4.0.0", + "remark-lint-list-item-indent": "^4.0.0", + "remark-lint-maximum-heading-length": "^4.0.0", "remark-lint-no-auto-link-without-protocol": "^3.1.2", - "remark-lint-no-blockquote-without-marker": "^5.1.2", - "remark-lint-no-consecutive-blank-lines": "^4.1.3", + "remark-lint-no-blockquote-without-marker": "^6.0.0", + "remark-lint-no-consecutive-blank-lines": "^5.0.0", "remark-lint-no-dead-urls": "^1.1.0", - "remark-lint-no-duplicate-definitions": "^3.1.2", - "remark-lint-no-duplicate-headings": "^3.1.2", - "remark-lint-no-emphasis-as-heading": "^3.1.2", + "remark-lint-no-duplicate-definitions": "^4.0.0", + "remark-lint-no-duplicate-headings": "^4.0.0", + "remark-lint-no-emphasis-as-heading": "^4.0.0", "remark-lint-no-empty-sections": "^4.0.0", - "remark-lint-no-empty-url": "^3.1.2", - "remark-lint-no-file-name-articles": "^2.1.2", - "remark-lint-no-file-name-consecutive-dashes": "^2.1.2", - "remark-lint-no-file-name-irregular-characters": "^2.1.2", - "remark-lint-no-file-name-mixed-case": "^2.1.2", - "remark-lint-no-file-name-outer-dashes": "^2.1.2", - "remark-lint-no-heading-content-indent": "^4.1.2", - "remark-lint-no-heading-indent": "^4.1.2", - "remark-lint-no-heading-like-paragraph": "^3.1.2", + "remark-lint-no-empty-url": "^4.0.0", + "remark-lint-no-file-name-articles": "^3.0.0", + "remark-lint-no-file-name-consecutive-dashes": "^3.0.0", + "remark-lint-no-file-name-irregular-characters": "^3.0.0", + "remark-lint-no-file-name-mixed-case": "^3.0.0", + "remark-lint-no-file-name-outer-dashes": "^3.0.0", + "remark-lint-no-heading-content-indent": "^5.0.0", + "remark-lint-no-heading-indent": "^5.0.0", + "remark-lint-no-heading-like-paragraph": "^4.0.0", "remark-lint-no-inline-padding": "^4.1.2", - "remark-lint-no-literal-urls": "^3.1.2", - "remark-lint-no-multiple-toplevel-headings": "^3.1.2", - "remark-lint-no-reference-like-url": "^3.1.2", + "remark-lint-no-literal-urls": "^4.0.0", + "remark-lint-no-multiple-toplevel-headings": "^4.0.0", + "remark-lint-no-reference-like-url": "^4.0.0", "remark-lint-no-repeat-punctuation": "^0.1.4", - "remark-lint-no-shell-dollars": "^3.1.2", - "remark-lint-no-shortcut-reference-image": "^3.1.2", - "remark-lint-no-table-indentation": "^4.1.2", - "remark-lint-no-tabs": "^3.1.2", - "remark-lint-no-unused-definitions": "^3.1.2", - "remark-lint-ordered-list-marker-style": "^3.1.2", - "remark-lint-ordered-list-marker-value": "^3.1.2", - "remark-lint-rule-style": "^3.1.2", - "remark-lint-strong-marker": "^3.1.2", - "remark-lint-table-cell-padding": "^4.1.3", - "remark-lint-table-pipe-alignment": "^3.1.3", - "remark-lint-table-pipes": "^4.1.2", - "remark-lint-unordered-list-marker-style": "^3.1.2", + "remark-lint-no-shell-dollars": "^4.0.0", + "remark-lint-no-shortcut-reference-image": "^4.0.0", + "remark-lint-no-table-indentation": "^5.0.0", + "remark-lint-no-tabs": "^4.0.0", + "remark-lint-no-unused-definitions": "^4.0.0", + "remark-lint-ordered-list-marker-style": "^4.0.0", + "remark-lint-ordered-list-marker-value": "^4.0.0", + "remark-lint-rule-style": "^4.0.0", + "remark-lint-strong-marker": "^4.0.0", + "remark-lint-table-cell-padding": "^5.0.0", + "remark-lint-table-pipe-alignment": "^4.0.0", + "remark-lint-table-pipes": "^5.0.0", + "remark-lint-unordered-list-marker-style": "^4.0.0", "remark-lint-write-good": "^1.2.0", - "remark-preset-lint-consistent": "^5.1.2", - "remark-preset-lint-markdown-style-guide": "^5.1.3", - "remark-preset-lint-recommended": "^6.1.3", + "remark-preset-lint-consistent": "^6.0.0", + "remark-preset-lint-markdown-style-guide": "^6.0.0", + "remark-preset-lint-recommended": "^7.0.0", "remark-retext": "^6.0.0", "remark-textr": "^6.1.0", - "remark-validate-links": "^13.0.0" + "remark-validate-links": "^13.0.1" } }, "node_modules/@babel/code-frame": { @@ -520,15 +520,15 @@ } }, "node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, "node_modules/@types/estree-jsx": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-0.0.1.tgz", - "integrity": "sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", "dev": true, "dependencies": { "@types/estree": "*" @@ -543,6 +543,12 @@ "@types/unist": "*" } }, + "node_modules/@types/hosted-git-info": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-Dmngh7U003cOHPhKGyA7LWqrnvcTyILNgNPmNCxlx7j8MIi54iBliiT8XqVLIQ3GchoOjVAyBzNJVyuaJjqokg==", + "dev": true + }, "node_modules/@types/http-cache-semantics": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", @@ -984,6 +990,16 @@ "node": ">=6" } }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -1011,6 +1027,36 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/check-links": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/check-links/-/check-links-1.1.8.tgz", @@ -1089,6 +1135,16 @@ "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=", "dev": true }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2448,6 +2504,30 @@ "node": ">=0.10.0" } }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dev": true, + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -2561,6 +2641,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-empty": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", @@ -2597,6 +2687,16 @@ "node": ">=0.10.0" } }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-ip": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", @@ -3005,12 +3105,84 @@ } }, "node_modules/mdast-comment-marker": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-2.1.0.tgz", - "integrity": "sha512-/+Cfm8A83PjkqjQDB9iYqHESGuXlriCWAwRGPJjkYmxXrF4r6saxeUlOKNrf+SogTwg9E8uyHRCFHLG6/BAAdA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-3.0.0.tgz", + "integrity": "sha512-bt08sLmTNg00/UtVDiqZKocxqvQqqyQZAg1uaRuO/4ysXV5motg7RolF5o5yy/sY1rG0v2XgZEqFWho1+2UquA==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-mdx-expression": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-comment-marker/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-directive": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz", + "integrity": "sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-directive/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-directive/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/mdast-util-directive/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-directive/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, "dependencies": { - "mdast-util-mdx-expression": "^1.1.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", @@ -3069,118 +3241,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-from-markdown/node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-from-markdown/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.0.tgz", - "integrity": "sha512-pIgcsGxpHEtTG/rPJRz/HOLSqp5VTuIIjXlPI+6JSDlK2oljApusG6KzpS8AF0ENUMCHlC/IBb5B9xdFiVlm5Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-from-markdown/node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-from-markdown/node_modules/micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-from-markdown/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-from-markdown/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, "node_modules/mdast-util-from-markdown/node_modules/unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", @@ -3239,136 +3299,94 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mdast-util-frontmatter/node_modules/mdast-util-to-markdown": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", - "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", "dev": true, "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark-util-decode-string": "^2.0.0", - "unist-util-visit": "^5.0.0", - "zwitch": "^2.0.0" + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-frontmatter/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", "dev": true, "dependencies": { - "@types/mdast": "^4.0.0" + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-frontmatter/node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "node_modules/mdast-util-mdx-expression/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "@types/unist": "*" } }, - "node_modules/mdast-util-frontmatter/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.0.tgz", - "integrity": "sha512-pIgcsGxpHEtTG/rPJRz/HOLSqp5VTuIIjXlPI+6JSDlK2oljApusG6KzpS8AF0ENUMCHlC/IBb5B9xdFiVlm5Q==", + "node_modules/mdast-util-mdx-jsx": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz", + "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "dependencies": { - "micromark-util-symbol": "^2.0.0" + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^5.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-frontmatter/node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "node_modules/mdast-util-mdx-jsx/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" + "@types/unist": "*" } }, - "node_modules/mdast-util-frontmatter/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-frontmatter/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + "node_modules/mdast-util-mdx-jsx/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true }, - "node_modules/mdast-util-frontmatter/node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, "dependencies": { "@types/unist": "^3.0.0" @@ -3378,59 +3396,45 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-frontmatter/node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-frontmatter/node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "node_modules/mdast-util-mdx-jsx/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, "dependencies": { "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-heading-style": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-2.0.0.tgz", - "integrity": "sha512-q9+WW2hJduW51LgV2r/fcU5wIt2GLFf0yYHxyi0f2aaxnC63ErBSOAJlhP6nbQ6yeG5rTCozbwOi4QNDPKV0zw==", + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0" + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdx-expression": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.1.1.tgz", - "integrity": "sha512-RDLRkBFmBKCJl6/fQdxxKL2BqNtoPFoNBmQAlj5ZNKOijIWRKjdhPkeufsUOaexLj+78mhJc+L7d1MYka8/LdQ==", + "node_modules/mdast-util-mdxjs-esm/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, "dependencies": { - "@types/estree-jsx": "^0.0.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "@types/unist": "*" } }, "node_modules/mdast-util-phrasing": { @@ -3565,6 +3569,96 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/mdast-util-to-markdown/node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-to-nlcst": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-7.0.0.tgz", @@ -3668,20 +3762,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-nlcst/node_modules/vfile-location": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", - "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-to-nlcst/node_modules/vfile-message": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", @@ -3801,30 +3881,26 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-core-commonmark/node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "node_modules/micromark-extension-frontmatter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", + "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "dependencies": { + "fault": "^2.0.0", + "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-core-commonmark/node_modules/micromark-util-normalize-identifier": { + "node_modules/micromark-factory-destination": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", "dev": true, "funding": [ { @@ -3837,13 +3913,15 @@ } ], "dependencies": { - "micromark-util-symbol": "^2.0.0" + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-core-commonmark/node_modules/micromark-util-symbol": { + "node_modules/micromark-factory-label": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", "dev": true, "funding": [ { @@ -3854,44 +3932,18 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] - }, - "node_modules/micromark-core-commonmark/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-extension-frontmatter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", - "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", - "dev": true, + ], "dependencies": { - "fault": "^2.0.0", + "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", "dev": true, "funding": [ { @@ -3904,30 +3956,14 @@ } ], "dependencies": { - "micromark-util-symbol": "^2.0.0", + "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-types": { + "node_modules/micromark-factory-title": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", "dev": true, "funding": [ { @@ -3938,12 +3974,18 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } }, - "node_modules/micromark-factory-destination": { + "node_modules/micromark-factory-whitespace": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", "dev": true, "funding": [ { @@ -3956,15 +3998,16 @@ } ], "dependencies": { + "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-factory-destination/node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "dev": true, "funding": [ { @@ -3981,26 +4024,10 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-factory-destination/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-factory-destination/node_modules/micromark-util-types": { + "node_modules/micromark-util-chunked": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", "dev": true, "funding": [ { @@ -4011,12 +4038,15 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } }, - "node_modules/micromark-factory-label": { + "node_modules/micromark-util-classify-character": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", "dev": true, "funding": [ { @@ -4029,16 +4059,15 @@ } ], "dependencies": { - "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-factory-label/node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", "dev": true, "funding": [ { @@ -4051,46 +4080,14 @@ } ], "dependencies": { - "micromark-util-symbol": "^2.0.0", + "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-factory-label/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-factory-label/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", "dev": true, "funding": [ { @@ -4103,14 +4100,13 @@ } ], "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/micromark-factory-space/node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", "dev": true, "funding": [ { @@ -4123,14 +4119,16 @@ } ], "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/micromark-factory-space/node_modules/micromark-util-symbol": { + "node_modules/micromark-util-encode": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", "dev": true, "funding": [ { @@ -4143,10 +4141,10 @@ } ] }, - "node_modules/micromark-factory-space/node_modules/micromark-util-types": { + "node_modules/micromark-util-html-tag-name": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", "dev": true, "funding": [ { @@ -4159,10 +4157,10 @@ } ] }, - "node_modules/micromark-factory-title": { + "node_modules/micromark-util-normalize-identifier": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", "dev": true, "funding": [ { @@ -4175,16 +4173,13 @@ } ], "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/micromark-factory-title/node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", "dev": true, "funding": [ { @@ -4197,46 +4192,13 @@ } ], "dependencies": { - "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-factory-title/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-factory-title/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-factory-whitespace": { + "node_modules/micromark-util-sanitize-uri": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", "dev": true, "funding": [ { @@ -4249,16 +4211,15 @@ } ], "dependencies": { - "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/micromark-factory-whitespace/node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "node_modules/micromark-util-subtokenize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz", + "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==", "dev": true, "funding": [ { @@ -4271,11 +4232,13 @@ } ], "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-factory-whitespace/node_modules/micromark-util-symbol": { + "node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", @@ -4291,7 +4254,7 @@ } ] }, - "node_modules/micromark-factory-whitespace/node_modules/micromark-util-types": { + "node_modules/micromark-util-types": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", @@ -4307,870 +4270,427 @@ } ] }, - "node_modules/micromark-util-chunked": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" + "engines": { + "node": ">=4" } }, - "node_modules/micromark-util-chunked/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-classify-character": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "engines": { + "node": ">=4" } }, - "node_modules/micromark-util-classify-character/node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "peer": true, "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "node_modules/micromark-util-classify-character/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + "engines": { + "node": ">=16 || 14 >=14.17" + } }, - "node_modules/micromark-util-classify-character/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/micromark-util-combine-extensions": { + "node_modules/mkdirp-infer-owner": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", + "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + }, + "engines": { + "node": ">=10" } }, - "node_modules/micromark-util-combine-extensions/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, - "node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + "peer": true }, - "node_modules/micromark-util-html-tag-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "node_modules/nlcst-to-string": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz", + "integrity": "sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/micromark-util-normalize-identifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", - "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", + "node_modules/no-cliches": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/no-cliches/-/no-cliches-0.3.4.tgz", + "integrity": "sha512-oUqnng1vhKLaA4GR+OzVbLuZZ7OOguKCtMHxHMiyP8+9mXidKfoCyc030LbAyNI3xcgCHHyitK3Q8wP+w6DwVQ==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0" + "engines": { + "node": ">=6", + "npm": ">=5" + }, + "peerDependencies": { + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-react": "^7.21.5", + "eslint-plugin-react-hooks": "^4.0.0" } }, - "node_modules/micromark-util-resolve-all": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "dependencies": { - "micromark-util-types": "^2.0.0" + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" } }, - "node_modules/micromark-util-resolve-all/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true }, - "node_modules/micromark-util-subtokenize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz", - "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==", + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/micromark-util-subtokenize/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-subtokenize/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/micromark-util-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", - "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==", + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + "peer": true, + "engines": { + "node": ">= 0.4" + } }, - "node_modules/micromark/node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "peer": true, "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/micromark/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.0.tgz", - "integrity": "sha512-pIgcsGxpHEtTG/rPJRz/HOLSqp5VTuIIjXlPI+6JSDlK2oljApusG6KzpS8AF0ENUMCHlC/IBb5B9xdFiVlm5Q==", + "node_modules/object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "peer": true, "dependencies": { - "micromark-util-symbol": "^2.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/micromark/node_modules/micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "node_modules/object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "peer": true, "dependencies": { - "micromark-util-symbol": "^2.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/micromark/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "node_modules/object.hasown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", + "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + "peer": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "node_modules/object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "wrappy": "1" } }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "peer": true, "dependencies": { - "brace-expansion": "^1.1.7" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" }, "engines": { - "node": "*" + "node": ">= 0.8.0" } }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "node_modules/p-any": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-any/-/p-any-2.1.0.tgz", + "integrity": "sha512-JAERcaMBLYKMq+voYw36+x5Dgh47+/o7yuv2oQYuSSUml4YeqJEFznBrY2UeEkoSHqBua6hz518n/PsowTYLLg==", "dev": true, + "dependencies": { + "p-cancelable": "^2.0.0", + "p-some": "^4.0.0", + "type-fest": "^0.3.0" + }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=8" } }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/mkdirp-infer-owner": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", - "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true, - "peer": true + "engines": { + "node": ">=4" + } }, - "node_modules/nlcst-to-string": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz", - "integrity": "sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==", + "node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=6" } }, - "node_modules/no-cliches": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/no-cliches/-/no-cliches-0.3.4.tgz", - "integrity": "sha512-oUqnng1vhKLaA4GR+OzVbLuZZ7OOguKCtMHxHMiyP8+9mXidKfoCyc030LbAyNI3xcgCHHyitK3Q8wP+w6DwVQ==", + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true, "engines": { - "node": ">=6", - "npm": ">=5" - }, - "peerDependencies": { - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-react": "^7.21.5", - "eslint-plugin-react-hooks": "^4.0.0" + "node": ">=6" } }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "node_modules/p-memoize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-memoize/-/p-memoize-2.1.0.tgz", + "integrity": "sha512-c6+a2iV4JyX0r4+i2IBJYO0r6LZAT2fg/tcB6GQbv1uzZsfsmKT7Ej5DRT1G6Wi7XUJSV2ZiP9+YEtluvhCmkg==", "dev": true, "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" + "mem": "^4.0.0", + "mimic-fn": "^1.0.0" }, "engines": { "node": ">=6" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/p-some": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-some/-/p-some-4.1.0.tgz", + "integrity": "sha512-MF/HIbq6GeBqTrTIl5OJubzkGU+qfFhAFi0gnTAK6rgEIJIknEiABHOTtQu4e6JiXjIwuMPMUFQzyHh5QjCl1g==", "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0", + "p-cancelable": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "p-finally": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/npm-normalize-package-bin": { + "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "peer": true, + "dependencies": { + "callsites": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", "dev": true, - "peer": true, + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", - "dev": true, - "peer": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "peer": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-any": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-any/-/p-any-2.1.0.tgz", - "integrity": "sha512-JAERcaMBLYKMq+voYw36+x5Dgh47+/o7yuv2oQYuSSUml4YeqJEFznBrY2UeEkoSHqBua6hz518n/PsowTYLLg==", - "dev": true, - "dependencies": { - "p-cancelable": "^2.0.0", - "p-some": "^4.0.0", - "type-fest": "^0.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-memoize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-memoize/-/p-memoize-2.1.0.tgz", - "integrity": "sha512-c6+a2iV4JyX0r4+i2IBJYO0r6LZAT2fg/tcB6GQbv1uzZsfsmKT7Ej5DRT1G6Wi7XUJSV2ZiP9+YEtluvhCmkg==", - "dev": true, - "dependencies": { - "mem": "^4.0.0", - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-some": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-some/-/p-some-4.1.0.tgz", - "integrity": "sha512-MF/HIbq6GeBqTrTIl5OJubzkGU+qfFhAFi0gnTAK6rgEIJIknEiABHOTtQu4e6JiXjIwuMPMUFQzyHh5QjCl1g==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0", - "p-cancelable": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dev": true, - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "peer": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, "node_modules/parse-json": { @@ -5479,6 +4999,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/quotation": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/quotation/-/quotation-2.0.3.tgz", + "integrity": "sha512-yEc24TEgCFLXx7D4JHJJkK4JFVtatO8fziwUxY4nB/Jbea9o9CVS3gt22mA0W7rPYAGW2fWzYDSOtD94PwOyqA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -5579,12 +5109,12 @@ } }, "node_modules/remark-cli": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-12.0.0.tgz", - "integrity": "sha512-IGxCo2VsXC/GS2YdlF7+S8DsUiyULyiauik01NFoiMIrOlbDhXjrKLD8hYazwQdD67nw2k7cwOBIxcK/cbNd9Q==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-12.0.1.tgz", + "integrity": "sha512-2NAEOACoTgo+e+YAaCTODqbrWyhMVmlUyjxNCkTrDRHHQvH6+NbrnqVvQaLH/Q8Ket3v90A43dgAJmXv8y5Tkw==", "dev": true, "dependencies": { - "import-meta-resolve": "^3.0.0", + "import-meta-resolve": "^4.0.0", "markdown-extensions": "^2.0.0", "remark": "^15.0.0", "unified-args": "^11.0.0" @@ -5598,9 +5128,9 @@ } }, "node_modules/remark-cli/node_modules/import-meta-resolve": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz", - "integrity": "sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", "dev": true, "funding": { "type": "github", @@ -5790,14 +5320,14 @@ } }, "node_modules/remark-lint": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-9.1.2.tgz", - "integrity": "sha512-m9e/aPlh7tsvfJfj8tPxrQzD6oEdb9Foko+Ya/6OwUP9EoGMfehv1Qtv26W1DoH58Wn8rT8CD+KuprTWscMmIA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-10.0.0.tgz", + "integrity": "sha512-E8yHHDOJ8b+qI0G49BRu24pe8t0fNNBWv8ENQJpCGNrVeTeyBIGEbaUe1yuF7OG8faA6PVpcN/pqWjzW9fcBWQ==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "remark-message-control": "^7.0.0", - "unified": "^10.1.0" + "@types/mdast": "^4.0.0", + "remark-message-control": "^8.0.0", + "unified": "^11.0.0" }, "funding": { "type": "opencollective", @@ -5805,698 +5335,616 @@ } }, "node_modules/remark-lint-blockquote-indentation": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-3.1.2.tgz", - "integrity": "sha512-5DOrFsZd5dXqA4p/VZvWSrqIWNFbBXjX7IV/FkVkxlNhNF/0FMf/4v8x1I2W3mzaZ7yDsWS/egpZnmligq1ckQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-4.0.0.tgz", + "integrity": "sha512-hdUvn+KsJbBKpY9jLY01PmfpJ/WGhLu9GJMXQGU8ADXJc+F5DWSgKAr6GQ1IUKqvGYdEML/KZ61WomWFUuecVA==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", "pluralize": "^8.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-checkbox-character-style": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-checkbox-character-style/-/remark-lint-checkbox-character-style-4.1.2.tgz", - "integrity": "sha512-5ITz+1cCuJ3Jv/Q7rKgDEucCOnIgjWDnSHPJA1tb4TI/D316h+ALbDhZIpP8gyfAm6sBAh3Pwz9XZJN2uJB5UQ==", + "node_modules/remark-lint-blockquote-indentation/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "*" + } + }, + "node_modules/remark-lint-blockquote-indentation/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-blockquote-indentation/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-checkbox-content-indent": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-checkbox-content-indent/-/remark-lint-checkbox-content-indent-4.1.2.tgz", - "integrity": "sha512-8uaHAm4bSqB7XpnecLRObe00Lj9eoHiecV+44CfJeWyoo50cTPR/hIMfsMtDxsNt4LZP+6oCV9z+vACJqDv8Hg==", + "node_modules/remark-lint-blockquote-indentation/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0", - "vfile-location": "^4.0.0" + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-code": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-code/-/remark-lint-code-2.0.0.tgz", - "integrity": "sha1-A+DC6Qru2+h1qHlf6s9XmIt9lXw=", + "node_modules/remark-lint-blockquote-indentation/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, "dependencies": { - "unified-lint-rule": "^1.0.0", - "unist-util-visit": "^1.0.0" + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-code-block-style": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-3.1.2.tgz", - "integrity": "sha512-3wsWmzzdyEsB9sOzBOf46TSkwwVKXN2JpTEQb6feN0Tl6Vg75F7T9MHqMz7aqk/56bOXSxUzdpXDscGBhziLRA==", + "node_modules/remark-lint-blockquote-indentation/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-code/node_modules/unified-lint-rule": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", - "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", + "node_modules/remark-lint-blockquote-indentation/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, "dependencies": { - "wrapped": "^1.0.1" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-code/node_modules/unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", - "dev": true - }, - "node_modules/remark-lint-code/node_modules/unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "node_modules/remark-lint-blockquote-indentation/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, "dependencies": { - "unist-util-visit-parents": "^2.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-code/node_modules/unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "node_modules/remark-lint-blockquote-indentation/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, "dependencies": { - "unist-util-is": "^3.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-definition-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-definition-case/-/remark-lint-definition-case-3.1.2.tgz", - "integrity": "sha512-/VxucJKEFykOe2ILgi0LLia0RaSyOPQXpR+tuX4MK3iKxIm7aT2oINgR9ugLpI15xJ463LyTi5mXf+BGveXeWA==", + "node_modules/remark-lint-blockquote-indentation/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-definition-spacing": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-3.1.2.tgz", - "integrity": "sha512-l058jAKfZfCOmlbIzoTll+CrZm9Bh42ZVCHcODPSZC8Yx4terCKgIoks+RWJDEdUbEw0YQoYvPc59ZVmp3BIew==", + "node_modules/remark-lint-checkbox-character-style": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-checkbox-character-style/-/remark-lint-checkbox-character-style-5.0.0.tgz", + "integrity": "sha512-K0G/Nok59fb2q5KUxcemBVt+ymnhTkDVLJAatZ4PAh9At8y0DGctHdU27jWsuvO0Fs7Zy62Usk7IJE2VO89p1w==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-emphasis-marker": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-emphasis-marker/-/remark-lint-emphasis-marker-3.1.1.tgz", - "integrity": "sha512-VduuT+KAr0vA78xBLJdIcenCQja4mAd81aNACfdz7BUPLphIQa84D5uzl+nZatSaCXLebCNp5jP/bzVUsBmRKw==", + "node_modules/remark-lint-checkbox-character-style/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "*" + } + }, + "node_modules/remark-lint-checkbox-character-style/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-checkbox-character-style/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-fenced-code-flag": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-3.1.2.tgz", - "integrity": "sha512-yh4m3dlPmRsqM/BFhpqHYfrmBvFQ+D5dZZKDDYP2rf3YEoXlEVt8T8lWQueTTSxcq6yXAqL/XQL/iqqUHlLcHw==", + "node_modules/remark-lint-checkbox-character-style/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-fenced-code-marker": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-3.1.2.tgz", - "integrity": "sha512-6XNqjOuhT+0c7Q/22aCsMz61ne9g8HRpYF79EXQPdbzYa+PcfPXMiQKStONY3PfC8OE2/3WXI2zcs8w9x+8+VQ==", + "node_modules/remark-lint-checkbox-character-style/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-file-extension": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-2.1.2.tgz", - "integrity": "sha512-Nq54F5R7F1gyj/IMW6SvkAbVNrH+p38WK3//KCoZLDUYFrH0oXgXXFGHi9CT/O0VEopW+bWJfTn8YAJRs0qI5Q==", + "node_modules/remark-lint-checkbox-character-style/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-final-definition": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-3.1.2.tgz", - "integrity": "sha512-3O3JT6xqlrgq+UjhMPxshgMtwXn99w0BEO9JwbDls49N0XCu0n22Pq1n6X3tEVzskPLo3YYyVYfW2Z2C2rneKQ==", + "node_modules/remark-lint-checkbox-character-style/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-final-newline": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-final-newline/-/remark-lint-final-newline-2.1.2.tgz", - "integrity": "sha512-K0FdPGPyEB94PwNgopwVJFE8oRWi7IhY2ycXFVAMReI51el7EHB8F1gX14tB6p6zyGy6mUh69bCVU9mMTNeOUg==", + "node_modules/remark-lint-checkbox-character-style/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-hard-break-spaces": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-3.1.2.tgz", - "integrity": "sha512-HaW0xsl3TI7VFAqGWWcZtPqyz0NWu19KKjSO7OGFTUJU4S9YiRnhIxmSFM0ZLSsVAynE+dhzVKa8U7dOpWDcOg==", + "node_modules/remark-lint-checkbox-character-style/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-heading-increment": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-heading-increment/-/remark-lint-heading-increment-3.1.2.tgz", - "integrity": "sha512-+fMfZmFh6ie6MmbRCVW77Rha15zDmnHWKiA0Do08OTrfngPTv8ZKXYLmxhUpL+xV9ts9q+9Kz5rv0L4QD4sEwQ==", + "node_modules/remark-lint-checkbox-character-style/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-heading-style": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-3.1.2.tgz", - "integrity": "sha512-0RkcRPV/H2bPFgeInzBkK1cWUwtFTm83I+Db/Z5tDY02GzKOosHLvxtJyj/1391/opAH1LYbHtHWffir99IUgw==", + "node_modules/remark-lint-checkbox-content-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-checkbox-content-indent/-/remark-lint-checkbox-content-indent-5.0.0.tgz", + "integrity": "sha512-7L25a7TEfdogFSh4HDOnB+GTTTEiXJDMlceUPft9bzIjElI8Hm2+a2D8jUQn4ahj+j/3LmdZW4GjAeyfdPuqTA==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-heading-style": "^2.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-heading-whitespace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-heading-whitespace/-/remark-lint-heading-whitespace-1.0.0.tgz", - "integrity": "sha512-DykoBIXNbkihg64D+mztSOv3l82RTH4tIZW/HUB4QM4NpIEB+pVIPQpCYD0K4pTgvKiwoqsj4NY8qJ1EhNHAmQ==", + "node_modules/remark-lint-checkbox-content-indent/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, "dependencies": { - "mdast-util-to-string": "^1.0.4", - "unified-lint-rule": "^1.0.2", - "unist-util-visit": "^1.3.0" + "@types/unist": "*" } }, - "node_modules/remark-lint-heading-whitespace/node_modules/mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", + "node_modules/remark-lint-checkbox-content-indent/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-checkbox-content-indent/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-heading-whitespace/node_modules/unified-lint-rule": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", - "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", + "node_modules/remark-lint-checkbox-content-indent/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, "dependencies": { - "wrapped": "^1.0.1" + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-heading-whitespace/node_modules/unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", - "dev": true - }, - "node_modules/remark-lint-heading-whitespace/node_modules/unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "dev": true, - "dependencies": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "node_modules/remark-lint-heading-whitespace/node_modules/unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dev": true, - "dependencies": { - "unist-util-is": "^3.0.0" - } - }, - "node_modules/remark-lint-link-title-style": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-link-title-style/-/remark-lint-link-title-style-3.1.2.tgz", - "integrity": "sha512-if4MahYJVvQUWlrXDF8GSv4b9VtLSgMSDHeikQp1/hGYlihLl9uGw3nlL5Lf9DqTN0qaT6RPbXOjuuzHlk38sg==", + "node_modules/remark-lint-checkbox-content-indent/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0", - "vfile-location": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-list-item-bullet-indent": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-bullet-indent/-/remark-lint-list-item-bullet-indent-4.1.2.tgz", - "integrity": "sha512-WgU5nooqIEm6f35opcbHKBzWrdFJA3XcyTfB3nv/v0KX43/h6qFGmmMJ5kEiaFExuQp3dZSdatWuY0YZ9YRbUg==", + "node_modules/remark-lint-checkbox-content-indent/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "pluralize": "^8.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-list-item-content-indent": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-content-indent/-/remark-lint-list-item-content-indent-3.1.2.tgz", - "integrity": "sha512-TB0pmrWiRaQW80Y/PILFQTnHDghRxXNzMwyawlP+DBF9gNom3pEBmb4ZlGQlN0aa3r8VWeIKdv1ylHrfXE0vqA==", + "node_modules/remark-lint-checkbox-content-indent/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "pluralize": "^8.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-list-item-indent": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-3.1.2.tgz", - "integrity": "sha512-tkrra1pxZVE4OVJGfN435u/v0ljruXU+dHzWiKDYeifquD4aWhJxvSApu7+FbE098D/4usVXgMxwFkNhrpZcSQ==", + "node_modules/remark-lint-checkbox-content-indent/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "pluralize": "^8.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-list-item-spacing": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-spacing/-/remark-lint-list-item-spacing-4.1.1.tgz", - "integrity": "sha512-MqXmahPgYrvfA7SPqmcAC6fI40jIgXG33EeE/MhFvMLWh04k+fqGf2O2aH1KT664MlwM4oETbTI4xj3/KCIHZA==", + "node_modules/remark-lint-checkbox-content-indent/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-maximum-heading-length": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-maximum-heading-length/-/remark-lint-maximum-heading-length-3.1.2.tgz", - "integrity": "sha512-gkmZxjlzEmNjBRBwef0L/Qmoabxxof0mryOxWzRZSu1xz4Qsp+UFWMhiHGXbE9WJL6EBW8yNTOpgnNgUOzqDiQ==", + "node_modules/remark-lint-checkbox-content-indent/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-maximum-line-length": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-3.1.2.tgz", - "integrity": "sha512-KwddpVmNifTHNXwTQQgVufuUvv0hhu9kJVvmpNdEvfEc7tc3wBkaavyi3kKsUB8WwMhGtZuXVWy6OdPC1axzhw==", + "node_modules/remark-lint-code": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-code/-/remark-lint-code-2.0.0.tgz", + "integrity": "sha1-A+DC6Qru2+h1qHlf6s9XmIt9lXw=", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "unified-lint-rule": "^1.0.0", + "unist-util-visit": "^1.0.0" + } + }, + "node_modules/remark-lint-code-block-style": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-4.0.0.tgz", + "integrity": "sha512-LKBKMVruEO0tzDnnnqi1TfUcnwY6Mo7cVtZM4E4pKt3KMhtvgU2wD68/MxDOEJd0pmnLrEgIadv74bY0gWhZpg==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-auto-link-without-protocol": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-3.1.2.tgz", - "integrity": "sha512-mPIdFOGxdDhCMa2qIzjzjDzDoQeyK+/1BBgsseqThuBtoAoXR5l1TZfII2isNbBo6L8d+fMFdx1/3qALoDjtcA==", + "node_modules/remark-lint-code-block-style/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "*" + } + }, + "node_modules/remark-lint-code-block-style/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-code-block-style/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-blockquote-without-marker": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-5.1.2.tgz", - "integrity": "sha512-QPbqsrt7EfpSWqTkZJ9tepabPIhBDlNqZkuxxMQYD0OQ2N+tHDUq3zE1JxI5ts1V9o/mWApgySocqGd3jlcKmQ==", + "node_modules/remark-lint-code-block-style/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0", - "vfile-location": "^4.0.0" + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-consecutive-blank-lines": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-4.1.3.tgz", - "integrity": "sha512-yU3jH6UMHvaxX3DPBen+7CoPiCcqJ4BeteyOKeKX+tKWCWKILpiz+TVToRbeLnWO4IvFNnSRFMSXmcWSDdbY4w==", + "node_modules/remark-lint-code-block-style/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "pluralize": "^8.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-dead-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-dead-urls/-/remark-lint-no-dead-urls-1.1.0.tgz", - "integrity": "sha512-it3EZmMQ+hwGhUf60NkXN0mMIFuFkS0cxdbgEbhZ/Fj1PlUBpe3gDBtWJ/sqNwSNvQlNSzpvMQkNHSoAhlsVjA==", + "node_modules/remark-lint-code-block-style/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, "dependencies": { - "check-links": "^1.1.8", - "is-online": "^8.2.1", - "unified-lint-rule": "^1.0.4", - "unist-util-visit": "^2.0.1" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">=6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-dead-urls/node_modules/unified-lint-rule": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", - "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", + "node_modules/remark-lint-code-block-style/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, "dependencies": { - "wrapped": "^1.0.1" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-dead-urls/node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "node_modules/remark-lint-code-block-style/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-dead-urls/node_modules/unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "node_modules/remark-lint-code-block-style/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-dead-urls/node_modules/unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "node_modules/remark-lint-code-block-style/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-duplicate-definitions": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-definitions/-/remark-lint-no-duplicate-definitions-3.1.2.tgz", - "integrity": "sha512-vi0nXA7p+pjQOorZOkr9E+QDhG74JAdbzqglWPrWWNI3z2rUYWYHTNSyWJbwEXaIIcev1ZAw8SCAOis5MNm+pA==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-stringify-position": "^3.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-duplicate-headings": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-headings/-/remark-lint-no-duplicate-headings-3.1.2.tgz", - "integrity": "sha512-atBlykGOx9BhpXGp0BUMWxn/T89+hC0Gel8xOIMaFkDhRcLlLVt+/F/aJGhM2Sp0R9NTQ6ejn+JYMLl5Aw2Z+g==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-stringify-position": "^3.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-emphasis-as-heading": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-emphasis-as-heading/-/remark-lint-no-emphasis-as-heading-3.1.2.tgz", - "integrity": "sha512-2DDx0VkqSExR6oqBiQtOsmdDwT7f3hpnPwPvBCk7BDeDU53JWY1kBAkRObkEptgH3GfpwxIQymIdHXesBpAQAg==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-empty-sections": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-empty-sections/-/remark-lint-no-empty-sections-4.0.0.tgz", - "integrity": "sha512-Tx1nCu7Dq3dsJ500402sSvM0uVK/6khSuEjx8K8u9aHN+Y4vjL6h88xVzdzCmZq2J2yqyFnvMjG1y7lQv+DRvg==", - "dev": true, - "dependencies": { - "mdast-util-to-string": "^1.0.2", - "unified-lint-rule": "^1.0.0", - "unist-util-visit": "^1.0.0" - } - }, - "node_modules/remark-lint-no-empty-sections/node_modules/mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-lint-no-empty-sections/node_modules/unified-lint-rule": { + "node_modules/remark-lint-code/node_modules/unified-lint-rule": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", @@ -6509,13 +5957,13 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-empty-sections/node_modules/unist-util-is": { + "node_modules/remark-lint-code/node_modules/unist-util-is": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", "dev": true }, - "node_modules/remark-lint-no-empty-sections/node_modules/unist-util-visit": { + "node_modules/remark-lint-code/node_modules/unist-util-visit": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", @@ -6524,7 +5972,7 @@ "unist-util-visit-parents": "^2.0.0" } }, - "node_modules/remark-lint-no-empty-sections/node_modules/unist-util-visit-parents": { + "node_modules/remark-lint-code/node_modules/unist-util-visit-parents": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", @@ -6533,648 +5981,614 @@ "unist-util-is": "^3.0.0" } }, - "node_modules/remark-lint-no-empty-url": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-empty-url/-/remark-lint-no-empty-url-3.1.2.tgz", - "integrity": "sha512-uu1ka/jNC5fQlLb1tKp3NLfb/0DpS9vLMmxJ8JU7iC8AurMTpI8yk/rpHr3NHz59pfGWboHjXOCE8n6q55VENw==", + "node_modules/remark-lint-definition-case": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-definition-case/-/remark-lint-definition-case-4.0.0.tgz", + "integrity": "sha512-XBmMmj8ii0KZUuJf7ZaVXDGp2+DWE02re9qn/6mV23rBpsDmpz7U1lQWRlwFQIE5q5bxIxP5pX7hDeTH0Egy9Q==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-file-name-articles": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-2.1.2.tgz", - "integrity": "sha512-kM4vwBkne7f9euDKsuyxTtrsiafjH+KOwu8ZmuSVWh5U+u0EMcPyN5fxfaQIW+5FkrJA1jwnRu7ciXJBJt74Og==", + "node_modules/remark-lint-definition-case/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0" + "@types/unist": "*" + } + }, + "node_modules/remark-lint-definition-case/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-definition-case/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-file-name-consecutive-dashes": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-2.1.2.tgz", - "integrity": "sha512-gw06jaaFwBR3s+3E2kJlv+E7rAzS7Nj+MFU7TViwbsYnR7PA96htLVDCjClyNUE7JHUNcv93HdLm8ykg8kRyNA==", + "node_modules/remark-lint-definition-case/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0" + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-file-name-irregular-characters": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-irregular-characters/-/remark-lint-no-file-name-irregular-characters-2.1.2.tgz", - "integrity": "sha512-2tcqzLm39Jc4THNP2yvJruOz2HtV4yh+eePiySKmhfZk/6ifMyOF/wlKHKcswczSGE4InNTfxJnc/AoxOJEdkw==", + "node_modules/remark-lint-definition-case/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-file-name-mixed-case": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-mixed-case/-/remark-lint-no-file-name-mixed-case-2.1.2.tgz", - "integrity": "sha512-0mTrjxBB4/0rV7sef+xjV5Aeb6LuW19X4QbNHW2RW7aMy+mtgJU03wdb8Y0LTnWVFHjUbc+iHrsFeCA/Pu1kew==", + "node_modules/remark-lint-definition-case/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-file-name-outer-dashes": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-2.1.2.tgz", - "integrity": "sha512-VrbHg25Oo9k/bNbS7ye1X7F6ER4uZSubO+t5DHJ4WZ6iVbNtBar/JwzVelY1YxUAutv42OvHfuveh4vKlcNgVA==", + "node_modules/remark-lint-definition-case/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-heading-content-indent": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-content-indent/-/remark-lint-no-heading-content-indent-4.1.2.tgz", - "integrity": "sha512-TTxFsm1f4ZHFxZQCuz7j0QK4RvP6oArTiwazKLr16yaZe1608ypogMek4A30j2xX8WuO9+2uBzLXCY5OBo5x5Q==", + "node_modules/remark-lint-definition-case/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-heading-style": "^2.0.0", - "pluralize": "^8.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-heading-indent": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-indent/-/remark-lint-no-heading-indent-4.1.2.tgz", - "integrity": "sha512-XFoSebfsYV6EFYRCYkCzSw6xxgltN5l3aPH+UfCk/0geMnl3DrCQjbQt9qhxQzBSBa4gA91CGs2DRI5Xxbwzig==", + "node_modules/remark-lint-definition-case/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "pluralize": "^8.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-heading-like-paragraph": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-like-paragraph/-/remark-lint-no-heading-like-paragraph-3.1.2.tgz", - "integrity": "sha512-e+o6YG/htbE25dQByIYrgeZGhIu5YU2QdyN2n/J+S7z7ELVp0mfgv0AywbHYW0QrMhSQUimjyAFQ8KRSG858LA==", + "node_modules/remark-lint-definition-spacing": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-4.0.0.tgz", + "integrity": "sha512-t6nP8unz6z/DLBTWeOmDFHPFbX3E2PbNgt2fTazRbVnMC6z3o25hBzg5hI6DL0MPt2ZTRX++rJsGRjb+vgh/tQ==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "@types/mdast": "^4.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-heading-punctuation": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-punctuation/-/remark-lint-no-heading-punctuation-3.1.1.tgz", - "integrity": "sha512-ZexHx4rmsjKVF1/Fvdig0yOgpWl0wFa43+sqg880HT3PW9KmEczjSRkwlMaTlVgDzC0paNn2FXfQMuEQW4YDLg==", + "node_modules/remark-lint-definition-spacing/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "*" + } + }, + "node_modules/remark-lint-definition-spacing/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-definition-spacing/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-inline-padding": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-4.1.2.tgz", - "integrity": "sha512-dGyhWsiqCZS3Slob0EVBUfsFBbdpMIBCvb56LlCgaHbnLsnNYx8PpF/wA5CgsN8BXIbXfRpyPB5cIJwIq5taYg==", + "node_modules/remark-lint-definition-spacing/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-literal-urls": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-3.1.2.tgz", - "integrity": "sha512-4tV9JGLKxAMFSuWDMOqLozkFJ3HyRvhzgrPrxASoziaml23m7UXAozk5dkIrFny1cN2oG988Z8tORxX2FL1Ilw==", + "node_modules/remark-lint-definition-spacing/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-multiple-toplevel-headings": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-3.1.2.tgz", - "integrity": "sha512-9rJSsrwdzwKmtuloBjJobLzjGL7Lgtk3+vMNUyuH9z/nBfkUCN3qxn3Nt9AxL+wwSAsHV6e74W+W2S1ohBLt6A==", + "node_modules/remark-lint-definition-spacing/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-stringify-position": "^3.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-reference-like-url": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-reference-like-url/-/remark-lint-no-reference-like-url-3.1.2.tgz", - "integrity": "sha512-rAb0ux38D7gfceBo4DUyX+bb1abPad7LSkMko+GWlyXakHbDM63llAyYURyqoupKMNeBw7vR5MCz/X7+sBQ1Yw==", + "node_modules/remark-lint-definition-spacing/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-repeat-punctuation": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/remark-lint-no-repeat-punctuation/-/remark-lint-no-repeat-punctuation-0.1.4.tgz", - "integrity": "sha512-JJduCs4FimdBcR1AB576SqIYOjt+7t8OjTnnlZMvjnw7lzkuL0+nNNHyNXVPaK6jxaLjEUhrH2/smU6vZFUT7g==", - "dev": true, - "dependencies": { - "unified-lint-rule": "^1.0.3", - "unist-util-map": "^1.0.4", - "unist-util-to-list-of-char": "^0.1.3" - } - }, - "node_modules/remark-lint-no-repeat-punctuation/node_modules/unified-lint-rule": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", - "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", + "node_modules/remark-lint-definition-spacing/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, "dependencies": { - "wrapped": "^1.0.1" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-shell-dollars": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-3.1.2.tgz", - "integrity": "sha512-np2MDEhXHviXhbQFjnC1QYv5/fxCV1cIHfGMoJpqiW7Zcu/UGCOo5TE3XswZH4ukHZJ65c3X2A6qfLDW+ur3CQ==", + "node_modules/remark-lint-definition-spacing/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-shortcut-reference-image": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-3.1.2.tgz", - "integrity": "sha512-NX4XJFPyDeJJ77pmETxRj4oM/zayf7Lmn/O87HgExBkQIPz2NYbDeKD8QEyliLaV/oKA2rQufpzuFw55xa1Tww==", + "node_modules/remark-lint-emphasis-marker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-emphasis-marker/-/remark-lint-emphasis-marker-4.0.0.tgz", + "integrity": "sha512-xIRiB4PFWUOyIslN/UOPL6Lh+J0VD4R11+jo+W4hpGMNsg58l+2SgtdbinlXzDeoBxmaaka9n/sYpJ7cJWEIPQ==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-shortcut-reference-link": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-3.1.1.tgz", - "integrity": "sha512-oDJ92/jXQ842HgrBGgZdP7FA+N2jBMCBU2+jRElkS+OWVut0UaDILtNavNy/e85B3SLPj3RoXKF96M4vfJ7B2A==", + "node_modules/remark-lint-emphasis-marker/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "*" + } + }, + "node_modules/remark-lint-emphasis-marker/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-emphasis-marker/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-table-indentation": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-4.1.2.tgz", - "integrity": "sha512-5lkO+Yrtni/CDMZi7mlwbB2zzRQLH94DesboXg51aO2UfZlSn5dZNhmN5wkyCU2AiApUhlFNbxfKMHOWFPLdog==", + "node_modules/remark-lint-emphasis-marker/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0", - "vfile-location": "^4.0.0" + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-tabs": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-tabs/-/remark-lint-no-tabs-3.1.2.tgz", - "integrity": "sha512-PQQmRpGHRW9tMnAXtlQbMke8byIJu9hlotCH6pJZPO4FodpXvD4JW5EMM3BmO0JQDZsQWrx3qfqxCEMxrj8Qbg==", + "node_modules/remark-lint-emphasis-marker/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "vfile-location": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-undefined-references": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-undefined-references/-/remark-lint-no-undefined-references-4.1.1.tgz", - "integrity": "sha512-J20rKfTGflLiTI3T5JlLZSmINk6aDGmZi1y70lpU69LDfAyHAKgDK6sSW9XDeFmCPPdm8Ybxe5Gf2a70k+GcVQ==", + "node_modules/remark-lint-emphasis-marker/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0", - "vfile-location": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-unused-definitions": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-unused-definitions/-/remark-lint-no-unused-definitions-3.1.2.tgz", - "integrity": "sha512-bOcaJAnjKxT3kASFquUA3fO9xem9wZhVqt8TbqjA84+G4n40qjaLXDs/4vq73aMsSde73K0f3j1u0pMe7et8yQ==", + "node_modules/remark-lint-emphasis-marker/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-ordered-list-marker-style": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-3.1.2.tgz", - "integrity": "sha512-62iVE/YQsA0Azaqt8yAJWPplWLS47kDLjXeC2PlRIAzCqbNt9qH3HId8vZ15QTSrp8rHmJwrCMdcqV6AZUi7gQ==", + "node_modules/remark-lint-emphasis-marker/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-ordered-list-marker-value": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-3.1.2.tgz", - "integrity": "sha512-kG08nhsFk8rhoXK5EeDN/wN28CxefraDud/MaZnji8LEyxF3HAkzFuETr9laOn8Ey+n8h/C0mpqAwUf4thyJ5g==", + "node_modules/remark-lint-emphasis-marker/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-rule-style": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-3.1.2.tgz", - "integrity": "sha512-0CsX2XcX9pIhAP5N7Y8mhYXp3/Ld+NvxXY1p0LHAq0NZu17UsZLuegvx/s25uFbQs08DcmSqyKnepU9qGGqmTQ==", + "node_modules/remark-lint-emphasis-marker/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-strong-marker": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-3.1.2.tgz", - "integrity": "sha512-U/g4wngmiI0Q6WBRQG6pZxnDS33Wt/0QYA3+KNFBDykoi1vXsDEorIqy3dEag9z6XHwcMvFDsff6VRUhaOJWQg==", + "node_modules/remark-lint-fenced-code-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-4.0.0.tgz", + "integrity": "sha512-Zs0wJd4nRvBo/9NWQVfWg5Ykapbo0Zzw/SyZc3f0h73S1gTZZcfeU+bA5oDivlBdcUgLBsyHRE0QaoaVvN3/Wg==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "quotation": "^2.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-table-cell-padding": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-4.1.3.tgz", - "integrity": "sha512-N9xtnS6MG/H3srAMjqqaF26A7socr87pIgt64dr5rxoSbDRWRPChGQ8y7wKyV8VeyRNF37e3E5KB3bQVqjSYaQ==", + "node_modules/remark-lint-fenced-code-flag/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "*" + } + }, + "node_modules/remark-lint-fenced-code-flag/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-fenced-code-flag/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-table-pipe-alignment": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/remark-lint-table-pipe-alignment/-/remark-lint-table-pipe-alignment-3.1.3.tgz", - "integrity": "sha512-bnE8WrB4kSrN+Yr+xN2GHWVgGukeSFU43qPMrpCzTyOSbzep366wORlFKqZmyFPEkIZ/uAUFS0Qm9DND66Yz/A==", + "node_modules/remark-lint-fenced-code-flag/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-table-pipes": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-4.1.2.tgz", - "integrity": "sha512-Ex2cJDXA0hdD9CC5Nu0p3K5LP+AhzPvk4sIOSbevCTSRyCS/SkNk4CQ6pwWBxuPVuHQUkqXkT8lgu8wwr/9A3A==", + "node_modules/remark-lint-fenced-code-flag/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-unordered-list-marker-style": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-3.1.2.tgz", - "integrity": "sha512-JFiyB4ZprJGGndCaFB8FssXd48m4Kh+CUqzNgu3lBLEiW8dEAGRlD9M2AzyyA+Q29WJP/FntDCbP22DeON91UA==", + "node_modules/remark-lint-fenced-code-flag/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-write-good": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remark-lint-write-good/-/remark-lint-write-good-1.2.0.tgz", - "integrity": "sha512-HYiwM16RRBm979yDb/IVwPe1eFhzA1HATe1WucRiYWS10jcPRgJe9FihH7W5uzQFDqX5aRbTtu/yPdq+hPnYkw==", + "node_modules/remark-lint-fenced-code-flag/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, "dependencies": { - "nlcst-to-string": "^2.0.0", - "unified-lint-rule": "^1.0.1", - "unist-util-visit": "^1.1.1", - "write-good": "^1.0.2" + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-write-good/node_modules/unified-lint-rule": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", - "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", + "node_modules/remark-lint-fenced-code-flag/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, "dependencies": { - "wrapped": "^1.0.1" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-write-good/node_modules/unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", - "dev": true - }, - "node_modules/remark-lint-write-good/node_modules/unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "dev": true, - "dependencies": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "node_modules/remark-lint-write-good/node_modules/unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "node_modules/remark-lint-fenced-code-flag/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, "dependencies": { - "unist-util-is": "^3.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/remark-message-control": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-7.1.1.tgz", - "integrity": "sha512-xKRWl1NTBOKed0oEtCd8BUfH5m4s8WXxFFSoo7uUwx6GW/qdCy4zov5LfPyw7emantDmhfWn5PdIZgcbVcWMDQ==", + "node_modules/remark-lint-fenced-code-flag/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-comment-marker": "^2.0.0", - "unified": "^10.0.0", - "unified-message-control": "^4.0.0", - "vfile": "^5.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-parse": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", - "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "node_modules/remark-lint-fenced-code-marker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-4.0.0.tgz", + "integrity": "sha512-WFN88Rx78m4/HSbW3Kx2XAYbVfzYns4bJd9qpwDD90DA3nc59zciYd01xi6Bk3n9vSs5gIlmG7xkwxVHHJ8KCA==", "dev": true, "dependencies": { "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unified": "^11.0.0" + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-parse/node_modules/@types/mdast": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", - "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "node_modules/remark-lint-fenced-code-marker/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, "dependencies": { "@types/unist": "*" } }, - "node_modules/remark-parse/node_modules/@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "node_modules/remark-lint-fenced-code-marker/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "node_modules/remark-parse/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/remark-parse/node_modules/unified": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", - "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "node_modules/remark-lint-fenced-code-marker/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, "dependencies": { "@types/unist": "^3.0.0", @@ -7190,10 +6604,26 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-parse/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "node_modules/remark-lint-fenced-code-marker/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-fenced-code-marker/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, "dependencies": { "@types/unist": "^3.0.0" @@ -7203,186 +6633,109 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-parse/node_modules/vfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", - "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "node_modules/remark-lint-fenced-code-marker/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-parse/node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "node_modules/remark-lint-fenced-code-marker/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-preset-lint-consistent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/remark-preset-lint-consistent/-/remark-preset-lint-consistent-5.1.2.tgz", - "integrity": "sha512-RQrWBFmyIkKfXtp9P1Fui7UbGSfXth9nuvRJUVnO0vfevBJe02iyMZWPokXSwkDOI/cM539wj0i3vrQupz+v5A==", + "node_modules/remark-lint-fenced-code-marker/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "remark-lint": "^9.0.0", - "remark-lint-blockquote-indentation": "^3.0.0", - "remark-lint-checkbox-character-style": "^4.0.0", - "remark-lint-code-block-style": "^3.0.0", - "remark-lint-emphasis-marker": "^3.0.0", - "remark-lint-fenced-code-marker": "^3.0.0", - "remark-lint-heading-style": "^3.0.0", - "remark-lint-link-title-style": "^3.0.0", - "remark-lint-list-item-content-indent": "^3.0.0", - "remark-lint-ordered-list-marker-style": "^3.0.0", - "remark-lint-rule-style": "^3.0.0", - "remark-lint-strong-marker": "^3.0.0", - "remark-lint-table-cell-padding": "^4.0.0", - "unified": "^10.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-preset-lint-markdown-style-guide": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/remark-preset-lint-markdown-style-guide/-/remark-preset-lint-markdown-style-guide-5.1.3.tgz", - "integrity": "sha512-4zNSPoiwAh4LJCbXh2U8Q9SFUIMw0MwsYJWTXHNiD0bGIUMWYU8ATLzDpWqCkzra6Ih7rLZuqB8tQIlipcM4Hg==", + "node_modules/remark-lint-fenced-code-marker/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "remark-lint": "^9.0.0", - "remark-lint-blockquote-indentation": "^3.0.0", - "remark-lint-code-block-style": "^3.0.0", - "remark-lint-definition-case": "^3.0.0", - "remark-lint-definition-spacing": "^3.0.0", - "remark-lint-emphasis-marker": "^3.0.0", - "remark-lint-fenced-code-flag": "^3.0.0", - "remark-lint-fenced-code-marker": "^3.0.0", - "remark-lint-file-extension": "^2.0.0", - "remark-lint-final-definition": "^3.0.0", - "remark-lint-hard-break-spaces": "^3.0.0", - "remark-lint-heading-increment": "^3.0.0", - "remark-lint-heading-style": "^3.0.0", - "remark-lint-link-title-style": "^3.0.0", - "remark-lint-list-item-content-indent": "^3.0.0", - "remark-lint-list-item-indent": "^3.0.0", - "remark-lint-list-item-spacing": "^4.0.0", - "remark-lint-maximum-heading-length": "^3.0.0", - "remark-lint-maximum-line-length": "^3.0.0", - "remark-lint-no-blockquote-without-marker": "^5.0.0", - "remark-lint-no-consecutive-blank-lines": "^4.0.0", - "remark-lint-no-duplicate-headings": "^3.0.0", - "remark-lint-no-emphasis-as-heading": "^3.0.0", - "remark-lint-no-file-name-articles": "^2.0.0", - "remark-lint-no-file-name-consecutive-dashes": "^2.0.0", - "remark-lint-no-file-name-irregular-characters": "^2.0.0", - "remark-lint-no-file-name-mixed-case": "^2.0.0", - "remark-lint-no-file-name-outer-dashes": "^2.0.0", - "remark-lint-no-heading-punctuation": "^3.0.0", - "remark-lint-no-inline-padding": "^4.0.0", - "remark-lint-no-literal-urls": "^3.0.0", - "remark-lint-no-multiple-toplevel-headings": "^3.0.0", - "remark-lint-no-shell-dollars": "^3.0.0", - "remark-lint-no-shortcut-reference-image": "^3.0.0", - "remark-lint-no-shortcut-reference-link": "^3.0.0", - "remark-lint-no-table-indentation": "^4.0.0", - "remark-lint-ordered-list-marker-style": "^3.0.0", - "remark-lint-ordered-list-marker-value": "^3.0.0", - "remark-lint-rule-style": "^3.0.0", - "remark-lint-strong-marker": "^3.0.0", - "remark-lint-table-cell-padding": "^4.0.0", - "remark-lint-table-pipe-alignment": "^3.0.0", - "remark-lint-table-pipes": "^4.0.0", - "remark-lint-unordered-list-marker-style": "^3.0.0", - "unified": "^10.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-preset-lint-recommended": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/remark-preset-lint-recommended/-/remark-preset-lint-recommended-6.1.3.tgz", - "integrity": "sha512-DGjbeP2TsFmQeJflUiIvJWAOs1PxJt7SG3WQyMxOppkRr/up+mxWVkuv+6AUuaR0EsuaaFGz7WmZM5TrSSFWJw==", + "node_modules/remark-lint-fenced-code-marker/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, "dependencies": { - "@types/mdast": "^3.0.0", - "remark-lint": "^9.0.0", - "remark-lint-final-newline": "^2.0.0", - "remark-lint-hard-break-spaces": "^3.0.0", - "remark-lint-list-item-bullet-indent": "^4.0.0", - "remark-lint-list-item-indent": "^3.0.0", - "remark-lint-no-blockquote-without-marker": "^5.0.0", - "remark-lint-no-duplicate-definitions": "^3.0.0", - "remark-lint-no-heading-content-indent": "^4.0.0", - "remark-lint-no-inline-padding": "^4.0.0", - "remark-lint-no-literal-urls": "^3.0.0", - "remark-lint-no-shortcut-reference-image": "^3.0.0", - "remark-lint-no-shortcut-reference-link": "^3.0.0", - "remark-lint-no-undefined-references": "^4.0.0", - "remark-lint-no-unused-definitions": "^3.0.0", - "remark-lint-ordered-list-marker-style": "^3.0.0", - "unified": "^10.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-retext": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-6.0.0.tgz", - "integrity": "sha512-VYs0p+3G4DKm/KtWx7LV8YPbyX4CjBf1SZcEk2usEv3QK6JK4g5EfurDAPUmGVZOx/NcqOiNbozfGqpl2HQfTA==", + "node_modules/remark-lint-file-extension": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-3.0.0.tgz", + "integrity": "sha512-wrOKiGvcl/ftB7FkeX2/l13ALvhKXV77HGR8AXo86cVY2pD+K0WdOC52DV3ldgpUXpWzE9kcgF8bbkxwzKpFFg==", "dev": true, "dependencies": { "@types/mdast": "^4.0.0", - "@types/nlcst": "^2.0.0", - "mdast-util-to-nlcst": "^7.0.0", - "parse-latin": "^7.0.0", - "unified": "^11.0.0", - "vfile": "^6.0.0" + "quotation": "^2.0.0", + "unified-lint-rule": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-retext/node_modules/@types/mdast": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", - "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "node_modules/remark-lint-file-extension/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, "dependencies": { "@types/unist": "*" } }, - "node_modules/remark-retext/node_modules/@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "node_modules/remark-lint-file-extension/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "node_modules/remark-retext/node_modules/unified": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", - "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "node_modules/remark-lint-file-extension/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, "dependencies": { "@types/unist": "^3.0.0", @@ -7398,7 +6751,23 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-retext/node_modules/unist-util-stringify-position": { + "node_modules/remark-lint-file-extension/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-file-extension/node_modules/unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", @@ -7411,7 +6780,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-retext/node_modules/vfile": { + "node_modules/remark-lint-file-extension/node_modules/vfile": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", @@ -7426,7 +6795,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-retext/node_modules/vfile-message": { + "node_modules/remark-lint-file-extension/node_modules/vfile-message": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", @@ -7440,185 +6809,93 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-stringify": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", - "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "node_modules/remark-lint-final-definition": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-4.0.1.tgz", + "integrity": "sha512-51T9oSdA7wuhjSdgGo0snO1BY39Igt9cJQi7XpgtgFsbfQk8zSSAUAc/rLabY6+YCTpcPs6qmwvLXZ4mPX6Qlg==", "dev": true, "dependencies": { "@types/mdast": "^4.0.0", - "mdast-util-to-markdown": "^2.0.0", - "unified": "^11.0.0" + "devlop": "^1.0.0", + "mdast-util-mdx": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-stringify/node_modules/@types/mdast": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", - "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "node_modules/remark-lint-final-definition/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, "dependencies": { "@types/unist": "*" } }, - "node_modules/remark-stringify/node_modules/@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "node_modules/remark-lint-final-definition/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "node_modules/remark-stringify/node_modules/mdast-util-to-markdown": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", - "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "node_modules/remark-lint-final-definition/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, "dependencies": { - "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark-util-decode-string": "^2.0.0", - "unist-util-visit": "^5.0.0", - "zwitch": "^2.0.0" + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-stringify/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "node_modules/remark-lint-final-definition/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, "dependencies": { - "@types/mdast": "^4.0.0" + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-stringify/node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "node_modules/remark-lint-final-definition/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/remark-stringify/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.0.tgz", - "integrity": "sha512-pIgcsGxpHEtTG/rPJRz/HOLSqp5VTuIIjXlPI+6JSDlK2oljApusG6KzpS8AF0ENUMCHlC/IBb5B9xdFiVlm5Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/remark-stringify/node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/remark-stringify/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/remark-stringify/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/remark-stringify/node_modules/unified": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", - "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "bail": "^2.0.0", - "devlop": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-stringify/node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "node_modules/remark-lint-final-definition/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, "dependencies": { "@types/unist": "^3.0.0" @@ -7628,7 +6905,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-stringify/node_modules/unist-util-stringify-position": { + "node_modules/remark-lint-final-definition/node_modules/unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", @@ -7641,22 +6918,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-stringify/node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-stringify/node_modules/unist-util-visit-parents": { + "node_modules/remark-lint-final-definition/node_modules/unist-util-visit-parents": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", @@ -7670,7 +6932,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-stringify/node_modules/vfile": { + "node_modules/remark-lint-final-definition/node_modules/vfile": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", @@ -7685,7 +6947,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-stringify/node_modules/vfile-message": { + "node_modules/remark-lint-final-definition/node_modules/vfile-message": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", @@ -7699,129 +6961,181 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-textr": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/remark-textr/-/remark-textr-6.1.0.tgz", - "integrity": "sha512-3A61/6Dn8x5wS7f9BubnIjwZfttEw9+PWVFtwOvRzKXLmZDV1mgi9MJeaQ9BNzWhojsSRHWLNa2JHKCOOI5DfA==", + "node_modules/remark-lint-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-final-newline/-/remark-lint-final-newline-3.0.0.tgz", + "integrity": "sha512-NaPyn6FiOn3IV/6gIcwWfJmgraPT2IaVLjhakfPglZkKVfn/FrOfETyY8Bp+HLoSRI9967OH0yRDnK7/pPIWeQ==", "dev": true, "dependencies": { "@types/mdast": "^4.0.0", - "textr": "^0.3.0", - "unist-util-visit": "^5.0.0" + "devlop": "^1.0.0", + "unified-lint-rule": "^3.0.0", + "vfile-location": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-textr/node_modules/@types/mdast": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", - "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "node_modules/remark-lint-final-newline/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, "dependencies": { "@types/unist": "*" } }, - "node_modules/remark-textr/node_modules/@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "node_modules/remark-lint-final-newline/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "node_modules/remark-textr/node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "node_modules/remark-lint-final-newline/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, "dependencies": { - "@types/unist": "^3.0.0" + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-textr/node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "node_modules/remark-lint-final-newline/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, "dependencies": { "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-textr/node_modules/unist-util-visit-parents": { + "node_modules/remark-lint-final-newline/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-final-newline/node_modules/vfile": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, "dependencies": { "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-validate-links": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/remark-validate-links/-/remark-validate-links-13.0.0.tgz", - "integrity": "sha512-21/LrPvAhUxJnAXLbMvgBrjTvsKki4txEnwe58V/iKP5ptKLvYzWLnMueT7VZI7yVhsH8l8ZaoQ5WmKkm8ws/w==", + "node_modules/remark-lint-final-newline/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-hard-break-spaces": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-4.0.0.tgz", + "integrity": "sha512-zCTq7/xfM0ZL3bMopXse9DH2nk38wE1LrxmYwnTrqASBLnEAJWE2U2//tRGVMEBfSAnNvmIo96twz6zkLWjbGA==", "dev": true, "dependencies": { "@types/mdast": "^4.0.0", - "github-slugger": "^2.0.0", - "hosted-git-info": "^7.0.0", - "mdast-util-to-hast": "^13.0.0", - "mdast-util-to-string": "^4.0.0", - "propose": "0.0.5", - "trough": "^2.0.0", - "unified-engine": "^11.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-validate-links/node_modules/@types/mdast": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", - "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "node_modules/remark-lint-hard-break-spaces/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, "dependencies": { "@types/unist": "*" } }, - "node_modules/remark-validate-links/node_modules/@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "node_modules/remark-lint-hard-break-spaces/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "node_modules/remark-validate-links/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "node_modules/remark-lint-hard-break-spaces/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, "dependencies": { - "@types/mdast": "^4.0.0" + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-validate-links/node_modules/unist-util-is": { + "node_modules/remark-lint-hard-break-spaces/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-hard-break-spaces/node_modules/unist-util-is": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", @@ -7834,7 +7148,20 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-validate-links/node_modules/unist-util-stringify-position": { + "node_modules/remark-lint-hard-break-spaces/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-hard-break-spaces/node_modules/unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", @@ -7847,7 +7174,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-validate-links/node_modules/unist-util-visit": { + "node_modules/remark-lint-hard-break-spaces/node_modules/unist-util-visit": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", @@ -7862,7 +7189,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-validate-links/node_modules/unist-util-visit-parents": { + "node_modules/remark-lint-hard-break-spaces/node_modules/unist-util-visit-parents": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", @@ -7876,7 +7203,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-validate-links/node_modules/vfile": { + "node_modules/remark-lint-hard-break-spaces/node_modules/vfile": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", @@ -7891,7 +7218,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-validate-links/node_modules/vfile-message": { + "node_modules/remark-lint-hard-break-spaces/node_modules/vfile-message": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", @@ -7905,25 +7232,43 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark/node_modules/@types/mdast": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", - "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "node_modules/remark-lint-heading-increment": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-heading-increment/-/remark-lint-heading-increment-4.0.0.tgz", + "integrity": "sha512-TARnsjXWzY/yLwxh/y4+KnDSXO3Koue8Crp55T8G9pjj3vw+XgTAG35zSpIIY9HmGiQ2a3R0SOj2pAxATpnckg==", "dev": true, "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/remark/node_modules/@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-mdx": "^3.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-heading-increment/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-lint-heading-increment/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "node_modules/remark/node_modules/unified": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", - "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "node_modules/remark-lint-heading-increment/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, "dependencies": { "@types/unist": "^3.0.0", @@ -7939,7 +7284,36 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark/node_modules/unist-util-stringify-position": { + "node_modules/remark-lint-heading-increment/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-heading-increment/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-heading-increment/node_modules/unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", @@ -7952,7 +7326,21 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark/node_modules/vfile": { + "node_modules/remark-lint-heading-increment/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-heading-increment/node_modules/vfile": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", @@ -7967,7 +7355,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark/node_modules/vfile-message": { + "node_modules/remark-lint-heading-increment/node_modules/vfile-message": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", @@ -7981,627 +7369,457 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/resolve": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz", - "integrity": "sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==", + "node_modules/remark-lint-heading-style": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-4.0.0.tgz", + "integrity": "sha512-dQ6Jul5K0+aNUvrq4W7H0+osSoC9hsmwHZqBFq000+eMP/hWJqI8tuudw1rap8HHYuOsKLRbB5q+Fr7G+3Vw+Q==", "dev": true, - "peer": true, "dependencies": { - "is-core-module": "^2.8.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "@types/mdast": "^4.0.0", + "mdast-util-heading-style": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/remark-lint-heading-style/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "peer": true, - "engines": { - "node": ">=4" + "dependencies": { + "@types/unist": "*" } }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "node_modules/remark-lint-heading-style/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-heading-style/node_modules/mdast-util-heading-style": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-3.0.0.tgz", + "integrity": "sha512-tsUfM9Kj9msjlemA/38Z3pvraQay880E3zP2NgIthMoGcpU9bcPX9oSM6QC/+eFXGGB4ba+VCB1dKAPHB7Veug==", "dev": true, "dependencies": { - "lowercase-keys": "^2.0.0" + "@types/mdast": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/remark-lint-heading-style/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "peer": true, "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/remark-lint-heading-style/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, - "engines": { - "node": ">=10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/remark-lint-heading-style/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "node_modules/remark-lint-heading-style/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, - "peer": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "@types/unist": "^3.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/remark-lint-heading-style/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "engines": { - "node": ">=14" + "dependencies": { + "@types/unist": "^3.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/sliced": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", - "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=", - "dev": true - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/remark-lint-heading-style/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, "dependencies": { - "safe-buffer": "~5.2.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/string-width": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz", - "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==", + "node_modules/remark-lint-heading-style/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^10.2.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=16" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/remark-lint-heading-style/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/remark-lint-heading-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-heading-whitespace/-/remark-lint-heading-whitespace-1.0.0.tgz", + "integrity": "sha512-DykoBIXNbkihg64D+mztSOv3l82RTH4tIZW/HUB4QM4NpIEB+pVIPQpCYD0K4pTgvKiwoqsj4NY8qJ1EhNHAmQ==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "mdast-util-to-string": "^1.0.4", + "unified-lint-rule": "^1.0.2", + "unist-util-visit": "^1.3.0" } }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "node_modules/remark-lint-heading-whitespace/node_modules/mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/remark-lint-heading-whitespace/node_modules/unified-lint-rule": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", + "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "wrapped": "^1.0.1" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.2.1.tgz", - "integrity": "sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==", + "node_modules/remark-lint-heading-whitespace/node_modules/unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", "dev": true }, - "node_modules/string.prototype.matchall": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", - "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", + "node_modules/remark-lint-heading-whitespace/node_modules/unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", "dev": true, - "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.3.1", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "unist-util-visit-parents": "^2.0.0" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "node_modules/remark-lint-heading-whitespace/node_modules/unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", "dev": true, - "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "unist-util-is": "^3.0.0" + } + }, + "node_modules/remark-lint-link-title-style": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-link-title-style/-/remark-lint-link-title-style-4.0.0.tgz", + "integrity": "sha512-cihTO5dkhjMj/evYIDAvRdQHD82OQeF4fNAq8FLb81HmFKo77VlSF6CK55H1bvlZogfJG58uN/5d1tSsOdcEbg==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "node_modules/remark-lint-link-title-style/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "@types/unist": "*" + } + }, + "node_modules/remark-lint-link-title-style/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-link-title-style/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "node_modules/remark-lint-link-title-style/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/remark-lint-link-title-style/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/remark-lint-link-title-style/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "node_modules/remark-lint-link-title-style/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "peer": true, - "engines": { - "node": ">=4" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/remark-lint-link-title-style/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "peer": true, - "engines": { - "node": ">=8" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/remark-lint-link-title-style/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "node_modules/remark-lint-link-title-style/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/textr": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/textr/-/textr-0.3.0.tgz", - "integrity": "sha1-cXNhKGlirI3za3omGft3OhW5t/c=", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/remark-lint-list-item-bullet-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-bullet-indent/-/remark-lint-list-item-bullet-indent-5.0.0.tgz", + "integrity": "sha512-qq22QaxsDjfsL7aWGIPmP3P0N99CJBQQW1+iSrhYAMCDzqVlw6I3wPNAeR6s8mcoeHT8YlT6eQH3V8xJ0SlW6w==", "dev": true, "dependencies": { - "is-number": "^7.0.0" + "@types/mdast": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0" }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/too-wordy": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/too-wordy/-/too-wordy-0.3.4.tgz", - "integrity": "sha512-EU+UA4zHc06TkVQaravNNVdqX763/ENTIOKiKlqSJ6WKCPwLxHjvY3d0uEJYaq92iojyHPwD2iaYbZKjdw3icA==", - "dev": true, - "engines": { - "node": ">=6", - "npm": ">=5" - } - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trough": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.0.2.tgz", - "integrity": "sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w==", - "dev": true, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", - "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "peer": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/remark-lint-list-item-bullet-indent/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "peer": true, "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "dev": true, - "engines": { - "node": ">=6" + "@types/unist": "*" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "node_modules/remark-lint-list-item-bullet-indent/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "peer": true, - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unified": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.1.tgz", - "integrity": "sha512-v4ky1+6BN9X3pQrOdkFIPWAaeDsHPE1svRDxq7YpTc2plkIqFMwukfqM+l0ewpP9EfwARlt9pPFAeWYhHm8X9w==", + "node_modules/remark-lint-list-item-bullet-indent/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0", + "@types/unist": "^3.0.0", "bail": "^2.0.0", + "devlop": "^1.0.0", "extend": "^3.0.0", - "is-buffer": "^2.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified-args": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/unified-args/-/unified-args-11.0.0.tgz", - "integrity": "sha512-4q3OQ2EbNIaxVX1pMoB/QdFxw9BSOWBGUwn5LK3UJict+6i0ud18A1DZ177+2r5hC2nYFOw1jbCp27ydl44Zhg==", - "dev": true, - "dependencies": { - "@types/text-table": "^0.2.0", - "chalk": "^5.0.0", - "chokidar": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "json5": "^2.0.0", - "minimist": "^1.0.0", - "strip-ansi": "^7.0.0", - "text-table": "^0.2.0", - "unified-engine": "^11.0.0" + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unified-args/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/unified-engine": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-11.1.0.tgz", - "integrity": "sha512-RS3K5PgNjDRQN9eNIefLUDxpfyWIItmKcjBhD1VnYYT/h7xpheZoZBtb5gtwFyKWZlhKCGRVQknIm1M8qHZfIg==", + "node_modules/remark-lint-list-item-bullet-indent/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, "dependencies": { - "@types/concat-stream": "^2.0.0", - "@types/debug": "^4.0.0", - "@types/is-empty": "^1.0.0", - "@types/node": "^20.0.0", "@types/unist": "^3.0.0", - "@ungap/structured-clone": "^1.0.0", - "concat-stream": "^2.0.0", - "debug": "^4.0.0", - "glob": "^10.0.0", - "ignore": "^5.0.0", - "is-empty": "^1.0.0", - "is-plain-obj": "^4.0.0", - "load-plugin": "^5.0.0", - "parse-json": "^7.0.0", "trough": "^2.0.0", - "unist-util-inspect": "^8.0.0", - "vfile": "^6.0.0", - "vfile-message": "^4.0.0", - "vfile-reporter": "^8.0.0", - "vfile-statistics": "^3.0.0", - "yaml": "^2.0.0" + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unified-engine/node_modules/@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", - "dev": true - }, - "node_modules/unified-engine/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/unified-engine/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/unified-engine/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/remark-lint-list-item-bullet-indent/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "@types/unist": "^3.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/unified-engine/node_modules/unist-util-stringify-position": { + "node_modules/remark-lint-list-item-bullet-indent/node_modules/unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", @@ -8614,7 +7832,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unified-engine/node_modules/vfile": { + "node_modules/remark-lint-list-item-bullet-indent/node_modules/vfile": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", @@ -8629,7 +7847,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unified-engine/node_modules/vfile-message": { + "node_modules/remark-lint-list-item-bullet-indent/node_modules/vfile-message": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", @@ -8643,83 +7861,92 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unified-lint-rule": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-2.1.1.tgz", - "integrity": "sha512-vsLHyLZFstqtGse2gvrGwasOmH8M2y+r2kQMoDSWzSqUkQx2MjHjvZuGSv5FUaiv4RQO1bHRajy7lSGp7XWq5A==", + "node_modules/remark-lint-list-item-content-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-content-indent/-/remark-lint-list-item-content-indent-4.0.0.tgz", + "integrity": "sha512-L4GZgWQQ54qWKbnDle3dbEOtnq+qdmZJ70lpM3yMFEMHs4xejqPKsIoiYeUtIV0rYHHCWS7IlLzcgYUK9vENQw==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "trough": "^2.0.0", - "unified": "^10.0.0", - "vfile": "^5.0.0" - }, + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unified-message-control": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-4.0.0.tgz", - "integrity": "sha512-1b92N+VkPHftOsvXNOtkJm4wHlr+UDmTBF2dUzepn40oy9NxanJ9xS1RwUBTjXJwqr2K0kMbEyv1Krdsho7+Iw==", + "node_modules/remark-lint-list-item-content-indent/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit": "^3.0.0", - "vfile": "^5.0.0", - "vfile-location": "^4.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "@types/unist": "*" } }, - "node_modules/unified-message-control/node_modules/unist-util-visit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", - "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", + "node_modules/remark-lint-list-item-content-indent/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-list-item-content-indent/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^4.0.0" + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unified-message-control/node_modules/unist-util-visit-parents": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", - "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", + "node_modules/remark-lint-list-item-content-indent/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-generated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", - "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", + "node_modules/remark-lint-list-item-content-indent/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-inspect": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-8.0.0.tgz", - "integrity": "sha512-/3Wn/wU6/H6UEo4FoYUeo8KUePN8ERiZpQYFWYoihOsr1DoDuv80PeB0hobVZyYSvALa2e556bG1A1/AbwU4yg==", + "node_modules/remark-lint-list-item-content-indent/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, "dependencies": { "@types/unist": "^3.0.0" @@ -8729,272 +7956,308 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-inspect/node_modules/@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", - "dev": true - }, - "node_modules/unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", + "node_modules/remark-lint-list-item-content-indent/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-map": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unist-util-map/-/unist-util-map-1.0.5.tgz", - "integrity": "sha512-dFil/AN6vqhnQWNCZk0GF/G3+Q5YwsB+PqjnzvpO2wzdRtUJ1E8PN+XRE/PRr/G3FzKjRTJU0haqE0Ekl+O3Ag==", - "dev": true, - "dependencies": { - "object-assign": "^4.0.1" - } - }, - "node_modules/unist-util-modify-children": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", - "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", + "node_modules/remark-lint-list-item-content-indent/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, "dependencies": { "@types/unist": "^3.0.0", - "array-iterate": "^2.0.0" + "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-modify-children/node_modules/@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", - "dev": true - }, - "node_modules/unist-util-position": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.1.tgz", - "integrity": "sha512-mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA==", + "node_modules/remark-lint-list-item-content-indent/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-stringify-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", - "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", + "node_modules/remark-lint-list-item-content-indent/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-to-list-of-char": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/unist-util-to-list-of-char/-/unist-util-to-list-of-char-0.1.3.tgz", - "integrity": "sha512-f8GrLHdhBKfaW6mzJc25BKeUOqhsuiRXlGrXBtb3pmRT3QCuYS+jH4g7Uf52hjV7TLQN4PGnjzrTFMFXAQaprA==", + "node_modules/remark-lint-list-item-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-4.0.0.tgz", + "integrity": "sha512-Yd6/g8CH9e4vlPAPNgl7F575uKhP+pTo/qwGkE61GOcgEVNJ/529hjumUhyQ4sOAX0YAPAjxvq6fJvb4AhVOOA==", "dev": true, "dependencies": { - "unist-util-generated": "^1.1.6", - "unist-util-visit": "^1.4.0" - } - }, - "node_modules/unist-util-to-list-of-char/node_modules/unist-util-generated": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", - "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", - "dev": true, + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-to-list-of-char/node_modules/unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", - "dev": true - }, - "node_modules/unist-util-to-list-of-char/node_modules/unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "node_modules/remark-lint-list-item-indent/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, "dependencies": { - "unist-util-visit-parents": "^2.0.0" + "@types/unist": "*" } }, - "node_modules/unist-util-to-list-of-char/node_modules/unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dev": true, - "dependencies": { - "unist-util-is": "^3.0.0" - } + "node_modules/remark-lint-list-item-indent/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true }, - "node_modules/unist-util-visit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.0.tgz", - "integrity": "sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==", + "node_modules/remark-lint-list-item-indent/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.0.0" + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-visit-children": { + "node_modules/remark-lint-list-item-indent/node_modules/unified-lint-rule": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", - "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, "dependencies": { - "@types/unist": "^3.0.0" + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-visit-children/node_modules/@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", - "dev": true - }, - "node_modules/unist-util-visit-parents": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", - "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", + "node_modules/remark-lint-list-item-indent/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "peer": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true, - "peer": true - }, - "node_modules/vfile": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.0.tgz", - "integrity": "sha512-Tj44nY/48OQvarrE4FAjUfrv7GZOYzPbl5OD65HxVKwLJKMPU7zmfV8cCgCnzKWnSfYG2f3pxu+ALqs7j22xQQ==", + "node_modules/remark-lint-list-item-indent/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-location": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", - "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", + "node_modules/remark-lint-list-item-indent/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "vfile": "^5.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-message": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.0.tgz", - "integrity": "sha512-4QJbBk+DkPEhBXq3f260xSaWtjE4gPKOfulzfMFF8ZNwaPZieWsg3iVlcmF04+eebzpcpeXOOFMfrYzJHVYg+g==", + "node_modules/remark-lint-list-item-indent/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-reporter": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-8.1.0.tgz", - "integrity": "sha512-NfHyHdkCcy0BsXiLA3nId29TY7W7hgpc8nd8Soe3imATx5N4/+mkLYdMR+Y6Zvu6BXMMi0FZsD4FLCm1dN85Pg==", + "node_modules/remark-lint-list-item-indent/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, "dependencies": { - "@types/supports-color": "^8.0.0", - "string-width": "^6.0.0", - "supports-color": "^9.0.0", + "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0", - "vfile": "^6.0.0", - "vfile-message": "^4.0.0", - "vfile-sort": "^4.0.0", - "vfile-statistics": "^3.0.0" + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-reporter/node_modules/@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "node_modules/remark-lint-list-item-indent/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-list-item-spacing": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-spacing/-/remark-lint-list-item-spacing-5.0.0.tgz", + "integrity": "sha512-d6p+1tcwNE+Pp6Tu2DwiKlyC1zYY3f1igL6AlcBIH0RmROVEfZR4IDFH/LcVyTkzqh1lPMFAJXWK4bpScpcO3g==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-list-item-spacing/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-lint-list-item-spacing/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "node_modules/vfile-reporter/node_modules/supports-color": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", - "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "node_modules/remark-lint-list-item-spacing/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-reporter/node_modules/unist-util-stringify-position": { + "node_modules/remark-lint-list-item-spacing/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-list-item-spacing/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-list-item-spacing/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-list-item-spacing/node_modules/unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", @@ -9007,7 +8270,21 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-reporter/node_modules/vfile": { + "node_modules/remark-lint-list-item-spacing/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-list-item-spacing/node_modules/vfile": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", @@ -9022,7 +8299,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-reporter/node_modules/vfile-message": { + "node_modules/remark-lint-list-item-spacing/node_modules/vfile-message": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", @@ -9036,89 +8313,114 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-sort": { + "node_modules/remark-lint-maximum-heading-length": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-4.0.0.tgz", - "integrity": "sha512-lffPI1JrbHDTToJwcq0rl6rBmkjQmMuXkAxsZPRS9DXbaJQvc642eCg6EGxcX2i1L+esbuhq+2l9tBll5v8AeQ==", + "resolved": "https://registry.npmjs.org/remark-lint-maximum-heading-length/-/remark-lint-maximum-heading-length-4.0.0.tgz", + "integrity": "sha512-UCQxUd0zZyi6RUbpoK5KsxC50ppVqVk0hSgrSPot4wB6PHRgYMALU2fDkEcAjLDc/Y2TayG3IaZEKdqe+84Cwg==", "dev": true, "dependencies": { - "vfile": "^6.0.0", - "vfile-message": "^4.0.0" + "@types/mdast": "^4.0.0", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-string": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-sort/node_modules/@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "node_modules/remark-lint-maximum-heading-length/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-lint-maximum-heading-length/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "node_modules/vfile-sort/node_modules/unist-util-stringify-position": { + "node_modules/remark-lint-maximum-heading-length/node_modules/mdast-util-to-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", "dev": true, "dependencies": { - "@types/unist": "^3.0.0" + "@types/mdast": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-sort/node_modules/vfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", - "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "node_modules/remark-lint-maximum-heading-length/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, "dependencies": { "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-sort/node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "node_modules/remark-lint-maximum-heading-length/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, "dependencies": { "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-statistics": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-3.0.0.tgz", - "integrity": "sha512-/qlwqwWBWFOmpXujL/20P+Iuydil0rZZNglR+VNm6J0gpLHwuVM5s7g2TfVoswbXjZ4HuIhLMySEyIw5i7/D8w==", + "node_modules/remark-lint-maximum-heading-length/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, "dependencies": { - "vfile": "^6.0.0", - "vfile-message": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-statistics/node_modules/@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", - "dev": true + "node_modules/remark-lint-maximum-heading-length/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/vfile-statistics/node_modules/unist-util-stringify-position": { + "node_modules/remark-lint-maximum-heading-length/node_modules/unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", @@ -9131,7 +8433,21 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-statistics/node_modules/vfile": { + "node_modules/remark-lint-maximum-heading-length/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-maximum-heading-length/node_modules/vfile": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", @@ -9146,7 +8462,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-statistics/node_modules/vfile-message": { + "node_modules/remark-lint-maximum-heading-length/node_modules/vfile-message": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", @@ -9160,5326 +8476,18019 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/walk-up-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", - "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", - "dev": true - }, - "node_modules/weasel-words": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/weasel-words/-/weasel-words-0.1.1.tgz", - "integrity": "sha1-cTeUZYXHP+RIggE4U70ADF1oek4=", - "dev": true - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/remark-lint-maximum-line-length": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-4.0.1.tgz", + "integrity": "sha512-hQlh8UrRfhkO4FU7z7t1Bu5ethj1y2iBncO5AOWF38RAmlHaZdB2lQxNA8IvUZITGJYpT1aThdFTEf+58lv08Q==", "dev": true, "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "@types/mdast": "^4.0.0", + "mdast-util-mdx": "^3.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0" }, - "engines": { - "node": ">= 8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "node_modules/remark-lint-maximum-line-length/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "peer": true, "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "@types/unist": "*" + } + }, + "node_modules/remark-lint-maximum-line-length/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-maximum-line-length/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", + "node_modules/remark-lint-maximum-line-length/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/remark-lint-maximum-line-length/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" + "@types/unist": "^3.0.0" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/remark-lint-maximum-line-length/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" + "@types/unist": "^3.0.0" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/remark-lint-maximum-line-length/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/remark-lint-maximum-line-length/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "node_modules/remark-lint-maximum-line-length/node_modules/unist-util-visit-parents": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/remark-lint-maximum-line-length/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/remark-lint-maximum-line-length/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/wrapped": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wrapped/-/wrapped-1.0.1.tgz", - "integrity": "sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI=", + "node_modules/remark-lint-no-auto-link-without-protocol": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-3.1.2.tgz", + "integrity": "sha512-mPIdFOGxdDhCMa2qIzjzjDzDoQeyK+/1BBgsseqThuBtoAoXR5l1TZfII2isNbBo6L8d+fMFdx1/3qALoDjtcA==", "dev": true, "dependencies": { - "co": "3.1.0", - "sliced": "^1.0.1" + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "unified": "^10.0.0", + "unified-lint-rule": "^2.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/write-good": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/write-good/-/write-good-1.0.8.tgz", - "integrity": "sha512-P1Ct7+DNrOcr2JAxDZ3Q5i5sx2LSveu7iLaoUL0A+YiG0GKf0l5+9j3rwMeyh6JeTL1+HfQV1rnwEvzhNIvpFw==", + "node_modules/remark-lint-no-blockquote-without-marker": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-6.0.0.tgz", + "integrity": "sha512-fBhoTpkWcl5tG4FdwPdJIyb8XLrdr6MdLk1+K2BQ6Rom3rRsIYvuox4ohxOunNrXuth8xyw8kC6wDmODR44oFw==", "dev": true, "dependencies": { - "adverb-where": "^0.2.2", - "commander": "^2.19.0", - "e-prime": "^0.10.4", - "no-cliches": "^0.3.0", - "passive-voice": "^0.1.0", - "too-wordy": "^0.3.1", - "weasel-words": "^0.1.1" - }, - "bin": { - "write-good": "bin/write-good.js", - "writegood": "bin/write-good.js" + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-directive": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-location": "^5.0.0" }, - "engines": { - "node": ">=6", - "npm": ">=5" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/remark-lint-no-blockquote-without-marker/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-lint-no-blockquote-without-marker/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "node_modules/yaml": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", - "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", + "node_modules/remark-lint-no-blockquote-without-marker/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "engines": { - "node": ">= 14" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/zwitch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", - "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", + "node_modules/remark-lint-no-blockquote-without-marker/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-no-blockquote-without-marker/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true - }, - "@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "node_modules/remark-lint-no-blockquote-without-marker/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "@babel/runtime": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", - "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", + "node_modules/remark-lint-no-blockquote-without-marker/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "peer": true, - "requires": { - "regenerator-runtime": "^0.13.4" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "@babel/runtime-corejs3": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.8.tgz", - "integrity": "sha512-3fKhuICS1lMz0plI5ktOE/yEtBRMVxplzRkdn6mJQ197XiY0JnrzYV0+Mxozq3JZ8SBV9Ecurmw1XsGbwOf+Sg==", + "node_modules/remark-lint-no-blockquote-without-marker/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "peer": true, - "requires": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "@eslint/eslintrc": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", - "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", + "node_modules/remark-lint-no-blockquote-without-marker/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "peer": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.2.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, "dependencies": { - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "peer": true - } + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "@humanwhocodes/config-array": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", - "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==", + "node_modules/remark-lint-no-blockquote-without-marker/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "peer": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "node_modules/remark-lint-no-consecutive-blank-lines": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-5.0.0.tgz", + "integrity": "sha512-HsDZbFlelBVO3mEJDXd9v4z0HLB8pqxWnsV+I4ILYFp5lKYf6NxJaLBWFtP1gAg1+95WxityGLkGtYqmicDjpg==", "dev": true, - "peer": true - }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-directive": "^3.0.0", + "mdast-util-mdx": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-no-consecutive-blank-lines/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, "dependencies": { - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - } + "@types/unist": "*" } }, - "@leichtgewicht/ip-codec": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", - "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==", + "node_modules/remark-lint-no-consecutive-blank-lines/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "@npmcli/config": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-4.1.0.tgz", - "integrity": "sha512-cPQmIQ2Q0vuOfrenrA3isikdMFMAHgzlXV+EmvZ8f2JeJsU5xTU2bG7ipXECiMvPF9nM+QDnMLuIg8QLw9H4xg==", + "node_modules/remark-lint-no-consecutive-blank-lines/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "requires": { - "@npmcli/map-workspaces": "^2.0.2", - "ini": "^3.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "proc-log": "^2.0.0", - "read-package-json-fast": "^2.0.3", - "semver": "^7.3.5", - "walk-up-path": "^1.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "@npmcli/map-workspaces": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.3.tgz", - "integrity": "sha512-X6suAun5QyupNM8iHkNPh0AHdRC2rb1W+MTdMvvA/2ixgmqZwlq5cGUBgmKHUHT2LgrkKJMAXbfAoTxOigpK8Q==", + "node_modules/remark-lint-no-consecutive-blank-lines/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^8.0.1", - "minimatch": "^5.0.1", - "read-package-json-fast": "^2.0.3" - }, "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "@npmcli/name-from-folder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", - "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==", - "dev": true - }, - "@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/remark-lint-no-consecutive-blank-lines/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "optional": true - }, - "@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "node_modules/remark-lint-no-consecutive-blank-lines/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, - "requires": { - "defer-to-connect": "^2.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "node_modules/remark-lint-no-consecutive-blank-lines/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "requires": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", - "@types/node": "*", - "@types/responselike": "*" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "@types/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-t3YCerNM7NTVjLuICZo5gYAXYoDvpuuTceCcFQWcDQz26kxUR5uIWolxbIR5jRNIXpMqhOpW/b8imCR1LEmuJw==", + "node_modules/remark-lint-no-consecutive-blank-lines/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "requires": { - "@types/node": "*" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "node_modules/remark-lint-no-consecutive-blank-lines/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "requires": { - "@types/ms": "*" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", - "dev": true + "node_modules/remark-lint-no-consecutive-blank-lines/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "@types/estree-jsx": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-0.0.1.tgz", - "integrity": "sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==", + "node_modules/remark-lint-no-dead-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-dead-urls/-/remark-lint-no-dead-urls-1.1.0.tgz", + "integrity": "sha512-it3EZmMQ+hwGhUf60NkXN0mMIFuFkS0cxdbgEbhZ/Fj1PlUBpe3gDBtWJ/sqNwSNvQlNSzpvMQkNHSoAhlsVjA==", "dev": true, - "requires": { - "@types/estree": "*" + "dependencies": { + "check-links": "^1.1.8", + "is-online": "^8.2.1", + "unified-lint-rule": "^1.0.4", + "unist-util-visit": "^2.0.1" + }, + "engines": { + "node": ">=6" } }, - "@types/hast": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", - "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", + "node_modules/remark-lint-no-dead-urls/node_modules/unified-lint-rule": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", + "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", "dev": true, - "requires": { - "@types/unist": "*" + "dependencies": { + "wrapped": "^1.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true - }, - "@types/is-empty": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.1.tgz", - "integrity": "sha512-a3xgqnFTuNJDm1fjsTjHocYJ40Cz3t8utYpi5GNaxzrJC2HSD08ym+whIL7fNqiqBCdM9bcqD1H/tORWAFXoZw==", - "dev": true - }, - "@types/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==", - "dev": true - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "node_modules/remark-lint-no-dead-urls/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", "dev": true, - "peer": true + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "node_modules/remark-lint-no-dead-urls/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", "dev": true, - "requires": { - "@types/node": "*" + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "node_modules/remark-lint-no-dead-urls/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", "dev": true, - "requires": { - "@types/unist": "*" + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", - "dev": true - }, - "@types/nlcst": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.1.tgz", - "integrity": "sha512-+hL97wfmdLW/unulVgdR+e+8PXbbtZgoYOq3C12H3RKgAZZ38D55Jwej7JBttJ6+oFuwIRYy5qTbE/WugMsCxw==", + "node_modules/remark-lint-no-duplicate-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-definitions/-/remark-lint-no-duplicate-definitions-4.0.0.tgz", + "integrity": "sha512-21fcOACkCyhNsHkedKlpvqIywYx+5zGR507bW8e59gzdGhTbnBwQ9du4ACmN9jxPTfIBhUVMz0bWezkGrHE7Bg==", "dev": true, - "requires": { - "@types/unist": "*" + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "@types/node": { - "version": "20.8.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.0.tgz", - "integrity": "sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==", - "dev": true - }, - "@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "node_modules/remark-lint-no-duplicate-definitions/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "requires": { - "@types/node": "*" + "dependencies": { + "@types/unist": "*" } }, - "@types/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==", - "dev": true - }, - "@types/text-table": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@types/text-table/-/text-table-0.2.3.tgz", - "integrity": "sha512-MUW7DN7e178wJ2dB9rHuhwUWRUJGrl8fCng37BEWV0r2r5VpzkRFRiMfnX6sjXlu4tMn41lrjzsVh/z1XrKc+A==", - "dev": true - }, - "@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", - "dev": true - }, - "@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "node_modules/remark-lint-no-duplicate-definitions/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true, - "peer": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "node_modules/remark-lint-no-duplicate-definitions/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "peer": true, - "requires": {} - }, - "adverb-where": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/adverb-where/-/adverb-where-0.2.5.tgz", - "integrity": "sha512-JiQe2U1UR8l10jPrXv/PmlDhOLZpsxqjvTp+k6Dm5wYDUULdMZytDRmovkXU8X6V9o0sg0FBdetv3VXHAZZK5Q==", - "dev": true + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/remark-lint-no-duplicate-definitions/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/remark-lint-no-duplicate-definitions/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "peer": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "node_modules/remark-lint-no-duplicate-definitions/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "ansi-regex": { + "node_modules/remark-lint-no-duplicate-definitions/node_modules/unist-util-visit-parents": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "requires": { - "color-convert": "^2.0.1" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "node_modules/remark-lint-no-duplicate-definitions/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "peer": true + "node_modules/remark-lint-no-duplicate-definitions/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "node_modules/remark-lint-no-duplicate-headings": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-headings/-/remark-lint-no-duplicate-headings-4.0.0.tgz", + "integrity": "sha512-FgBU/JCdR5MitHM+hnOcgBGO5ZCNV8epzuHIglFlJeb8ow23YhhNgmGvyk7RGrZrYuU5R9uQq23N4dF0g9atCA==", "dev": true, - "peer": true, - "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-string": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "node_modules/remark-lint-no-duplicate-headings/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" + "dependencies": { + "@types/unist": "*" } }, - "array-iterate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", - "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", + "node_modules/remark-lint-no-duplicate-headings/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "array.prototype.flat": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", - "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "node_modules/remark-lint-no-duplicate-headings/node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "array.prototype.flatmap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", - "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "node_modules/remark-lint-no-duplicate-headings/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "node_modules/remark-lint-no-duplicate-headings/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "axe-core": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz", - "integrity": "sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==", + "node_modules/remark-lint-no-duplicate-headings/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "node_modules/remark-lint-no-duplicate-headings/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "peer": true - }, - "bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/remark-lint-no-duplicate-headings/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "peer": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/remark-lint-no-duplicate-headings/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "requires": { - "fill-range": "^7.0.1" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "node_modules/remark-lint-no-duplicate-headings/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "requires": { - "semver": "^7.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true - }, - "cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "node_modules/remark-lint-no-emphasis-as-heading": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-emphasis-as-heading/-/remark-lint-no-emphasis-as-heading-4.0.0.tgz", + "integrity": "sha512-JViGYbuO/xzZThK+qVTNjtLM0v1xMTWFTWt2OJzAkDaGS6T9ZB5ZtRVSBFEMG0SF3dvpJwxe+3ABTsuPBdlYsA==", "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/remark-lint-no-emphasis-as-heading/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "peer": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "dependencies": { + "@types/unist": "*" } }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/remark-lint-no-emphasis-as-heading/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-no-emphasis-as-heading/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "peer": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "character-entities": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.1.tgz", - "integrity": "sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ==", - "dev": true - }, - "check-links": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/check-links/-/check-links-1.1.8.tgz", - "integrity": "sha512-lxt1EeQ1CVkmiZzPfbPufperYK0t7MvhdLs3zlRH9areA6NVT1tcGymAdJONolNWQBdCFU/sek59RpeLmVHCnw==", + "node_modules/remark-lint-no-emphasis-as-heading/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": { - "got": "^11.8.5", - "is-relative-url": "^2.0.0", - "p-map": "^2.0.0", - "p-memoize": "^2.1.0" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/remark-lint-no-emphasis-as-heading/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "node_modules/remark-lint-no-emphasis-as-heading/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "requires": { - "mimic-response": "^1.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "co": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", - "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/remark-lint-no-emphasis-as-heading/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "requires": { - "color-name": "~1.1.4" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "compress-brotli": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", - "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", + "node_modules/remark-lint-no-emphasis-as-heading/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "requires": { - "@types/json-buffer": "~3.0.0", - "json-buffer": "~3.0.1" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "node_modules/remark-lint-no-emphasis-as-heading/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "node_modules/remark-lint-no-empty-sections": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-empty-sections/-/remark-lint-no-empty-sections-4.0.0.tgz", + "integrity": "sha512-Tx1nCu7Dq3dsJ500402sSvM0uVK/6khSuEjx8K8u9aHN+Y4vjL6h88xVzdzCmZq2J2yqyFnvMjG1y7lQv+DRvg==", "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" + "dependencies": { + "mdast-util-to-string": "^1.0.2", + "unified-lint-rule": "^1.0.0", + "unist-util-visit": "^1.0.0" } }, - "core-js-pure": { - "version": "3.20.2", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.2.tgz", - "integrity": "sha512-CmWHvSKn2vNL6p6StNp1EmMIfVY/pqn3JLAjfZQ8WZGPOlGoO92EkX9/Mk81i6GxvoPXjUqEQnpM3rJ5QxxIOg==", + "node_modules/remark-lint-no-empty-sections/node_modules/mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", "dev": true, - "peer": true + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/remark-lint-no-empty-sections/node_modules/unified-lint-rule": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", + "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "dependencies": { + "wrapped": "^1.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true, - "peer": true + "node_modules/remark-lint-no-empty-sections/node_modules/unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", + "dev": true }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "node_modules/remark-lint-no-empty-sections/node_modules/unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", "dev": true, - "requires": { - "ms": "2.1.2" + "dependencies": { + "unist-util-visit-parents": "^2.0.0" } }, - "decode-named-character-reference": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.1.tgz", - "integrity": "sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w==", + "node_modules/remark-lint-no-empty-sections/node_modules/unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", "dev": true, - "requires": { - "character-entities": "^2.0.0" + "dependencies": { + "unist-util-is": "^3.0.0" } }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "node_modules/remark-lint-no-empty-url": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-empty-url/-/remark-lint-no-empty-url-4.0.0.tgz", + "integrity": "sha512-2zJxrSnL42wGe+CSZepBzoj8d/FeL/QU8GM6TEO/5qGfXwvJD7s2v6q074UJU0CAaWlWRqSxElescwk3yGQddA==", "dev": true, - "requires": { - "mimic-response": "^3.1.0" - }, "dependencies": { - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true - } + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "node_modules/remark-lint-no-empty-url/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "*" + } }, - "defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "node_modules/remark-lint-no-empty-url/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "node_modules/remark-lint-no-empty-url/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "peer": true, - "requires": { - "object-keys": "^1.0.12" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "dequal": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", - "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==", - "dev": true - }, - "devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "node_modules/remark-lint-no-empty-url/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": { - "dequal": "^2.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "dns-packet": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", - "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "node_modules/remark-lint-no-empty-url/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "@leichtgewicht/ip-codec": "^2.0.1" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "dns-socket": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/dns-socket/-/dns-socket-4.2.2.tgz", - "integrity": "sha512-BDeBd8najI4/lS00HSKpdFia+OvUMytaVjfzR9n5Lq8MlZRSvtbI+uLtx1+XmQFls5wFU9dssccTmQQ6nfpjdg==", + "node_modules/remark-lint-no-empty-url/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "requires": { - "dns-packet": "^5.2.4" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/remark-lint-no-empty-url/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "peer": true, - "requires": { - "esutils": "^2.0.2" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "e-prime": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/e-prime/-/e-prime-0.10.4.tgz", - "integrity": "sha512-tzBmM2mFSnAq5BuxPSyin6qXb3yMe1wufJN7L7ZPcEWS5S+jI2dhKQEoqHVEcSMMXo/j5lcWpX5jzA6wLSmX6w==", - "dev": true - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "node_modules/remark-lint-no-empty-url/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "node_modules/remark-lint-no-empty-url/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "requires": { - "once": "^1.4.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "node_modules/remark-lint-no-file-name-articles": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-3.0.0.tgz", + "integrity": "sha512-il4IseupahbV2TVfFjfDVL/EQw7jBWVlMVsv4K2cgl5uPIjiCjFGQypqKnWl6pZDN0oNOs/DE8gBdyuDjldJaA==", "dev": true, - "peer": true, - "requires": { - "ansi-colors": "^4.1.1" + "dependencies": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/remark-lint-no-file-name-articles/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "requires": { - "is-arrayish": "^0.2.1" + "dependencies": { + "@types/unist": "*" } }, - "es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "node_modules/remark-lint-no-file-name-articles/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-no-file-name-articles/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/remark-lint-no-file-name-articles/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "peer": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "escape-string-regexp": { + "node_modules/remark-lint-no-file-name-articles/node_modules/unist-util-stringify-position": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "eslint": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.6.0.tgz", - "integrity": "sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==", + "node_modules/remark-lint-no-file-name-articles/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "peer": true, - "requires": { - "@eslint/eslintrc": "^1.0.5", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.3.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.2.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "peer": true - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "peer": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "peer": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "peer": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "node_modules/remark-lint-no-file-name-articles/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "peer": true, - "requires": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - }, "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "requires": { - "ms": "^2.1.1" - } - } + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "eslint-module-utils": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz", - "integrity": "sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==", + "node_modules/remark-lint-no-file-name-consecutive-dashes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-3.0.0.tgz", + "integrity": "sha512-3vSI1LOQlu8NSCpWLsKELa8dS9HU+YVZE0U43/DNkdEcnZmlJLpTHQjBTMZUHQipRgoOO+TOSyXFyN/H+2lbuQ==", "dev": true, - "peer": true, - "requires": { - "debug": "^3.2.7", - "find-up": "^2.1.0" - }, "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "requires": { - "ms": "^2.1.1" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "peer": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "peer": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "peer": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "peer": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "peer": true - } + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "eslint-plugin-import": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", - "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "node_modules/remark-lint-no-file-name-consecutive-dashes/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "peer": true, - "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.2", - "has": "^1.0.3", - "is-core-module": "^2.8.0", - "is-glob": "^4.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.12.0" - }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "peer": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "peer": true - } + "@types/unist": "*" } }, - "eslint-plugin-jsx-a11y": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", - "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", + "node_modules/remark-lint-no-file-name-consecutive-dashes/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-no-file-name-consecutive-dashes/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "peer": true, - "requires": { - "@babel/runtime": "^7.16.3", - "aria-query": "^4.2.2", - "array-includes": "^3.1.4", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.3.5", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.7", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.2.1", - "language-tags": "^1.0.5", - "minimatch": "^3.0.4" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "eslint-plugin-react": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", - "integrity": "sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==", + "node_modules/remark-lint-no-file-name-consecutive-dashes/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "peer": true, - "requires": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", - "prop-types": "^15.7.2", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-no-file-name-consecutive-dashes/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "peer": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", - "dev": true, - "peer": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "peer": true - } + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "eslint-plugin-react-hooks": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz", - "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==", + "node_modules/remark-lint-no-file-name-consecutive-dashes/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "peer": true, - "requires": {} + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "node_modules/remark-lint-no-file-name-consecutive-dashes/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "peer": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "eslint-utils": { + "node_modules/remark-lint-no-file-name-irregular-characters": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-irregular-characters/-/remark-lint-no-file-name-irregular-characters-3.0.0.tgz", + "integrity": "sha512-DhGreliHNU7lLTARQujsaLAn8fUPY0V+H0LSmOUuowBZPtIRWeNdQhunSp96RvsuYdqAdERXe0WuH58i3pRqrg==", "dev": true, - "peer": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "peer": true - } + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "node_modules/remark-lint-no-file-name-irregular-characters/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "*" + } }, - "espree": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", - "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", + "node_modules/remark-lint-no-file-name-irregular-characters/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-no-file-name-irregular-characters/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "peer": true, - "requires": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "node_modules/remark-lint-no-file-name-irregular-characters/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "peer": true, - "requires": { - "estraverse": "^5.1.0" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/remark-lint-no-file-name-irregular-characters/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "peer": true, - "requires": { - "estraverse": "^5.2.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/remark-lint-no-file-name-irregular-characters/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/remark-lint-no-file-name-irregular-characters/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "peer": true - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "node_modules/remark-lint-no-file-name-mixed-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-mixed-case/-/remark-lint-no-file-name-mixed-case-3.0.0.tgz", + "integrity": "sha512-MXXNHdGB6P46itkf8gRP0kxQL85KfAj9YOOBqNtGsgI/8J5rsyM/rz1Ac20Xe+5C5oGi71+7EO/TExKu/+7dfw==", "dev": true, - "peer": true + "dependencies": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "node_modules/remark-lint-no-file-name-mixed-case/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "*" + } }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "node_modules/remark-lint-no-file-name-mixed-case/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-no-file-name-mixed-case/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "fault": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", - "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "node_modules/remark-lint-no-file-name-mixed-case/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": { - "format": "^0.2.0" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/remark-lint-no-file-name-mixed-case/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "peer": true, - "requires": { - "flat-cache": "^3.0.4" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/remark-lint-no-file-name-mixed-case/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "requires": { - "to-regex-range": "^5.0.1" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "node_modules/remark-lint-no-file-name-mixed-case/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "peer": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", + "node_modules/remark-lint-no-file-name-outer-dashes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-3.0.0.tgz", + "integrity": "sha512-3kgamCp39mdlCtqF/+JLwwS4VpSj5wvVwRythUfrpW7993I9kF67dBsaU545aEzWSK+UJZqjb40i0m2VfnBRfQ==", "dev": true, - "peer": true + "dependencies": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "node_modules/remark-lint-no-file-name-outer-dashes/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "dependencies": { + "@types/unist": "*" } }, - "format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", + "node_modules/remark-lint-no-file-name-outer-dashes/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "node_modules/remark-lint-no-file-name-outer-dashes/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "node_modules/remark-lint-no-file-name-outer-dashes/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "optional": true + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "node_modules/remark-lint-no-file-name-outer-dashes/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "node_modules/remark-lint-no-file-name-outer-dashes/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "node_modules/remark-lint-no-file-name-outer-dashes/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "peer": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "node_modules/remark-lint-no-heading-content-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-content-indent/-/remark-lint-no-heading-content-indent-5.0.0.tgz", + "integrity": "sha512-psYSlD2BjcVkgpeXOLwPcYFBrbtJWp8E8JX1J4vSfoHPeY6aIxgYxXkf57cjGTApfRL8xawBmMDiF1FgQvpZYg==", "dev": true, - "requires": { - "pump": "^3.0.0" + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "node_modules/remark-lint-no-heading-content-indent/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "dependencies": { + "@types/unist": "*" } }, - "github-slugger": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "node_modules/remark-lint-no-heading-content-indent/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/remark-lint-no-heading-content-indent/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "peer": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/remark-lint-no-heading-content-indent/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": { - "is-glob": "^4.0.1" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "node_modules/remark-lint-no-heading-content-indent/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "peer": true, - "requires": { - "type-fest": "^0.20.2" - }, "dependencies": { - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "peer": true - } + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "node_modules/remark-lint-no-heading-content-indent/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, - "requires": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/remark-lint-no-heading-content-indent/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "peer": true, - "requires": { - "function-bind": "^1.1.1" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "node_modules/remark-lint-no-heading-content-indent/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/remark-lint-no-heading-content-indent/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "node_modules/remark-lint-no-heading-content-indent/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "node_modules/remark-lint-no-heading-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-indent/-/remark-lint-no-heading-indent-5.0.0.tgz", + "integrity": "sha512-JWGIWhaEzH00HywI0DHex92tJ5Mw7l11shQ6/MGhRjYsHMRWcwWcVeOuktVMe/BiQbg0hRoE4+g0z2VgUD6Cqw==", "dev": true, - "peer": true, - "requires": { - "has-symbols": "^1.0.2" + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "hosted-git-info": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", - "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "node_modules/remark-lint-no-heading-indent/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "requires": { - "lru-cache": "^10.0.1" - }, "dependencies": { - "lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", - "dev": true - } + "@types/unist": "*" } }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "node_modules/remark-lint-no-heading-indent/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "node_modules/remark-lint-no-heading-indent/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "requires": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/remark-lint-no-heading-indent/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "peer": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "import-meta-resolve": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.0.3.tgz", - "integrity": "sha512-fpAppnBpZ3ymQ/dPP97TNsco1HB5+V9SYJ3chY50PP8xn4U/w+Y6ovWBmTImB/prmGsTjzPh8pQYY+EVBlr9mw==", + "node_modules/remark-lint-no-heading-indent/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "builtins": "^5.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "node_modules/remark-lint-no-heading-indent/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "indent-string": { + "node_modules/remark-lint-no-heading-indent/node_modules/unist-util-stringify-position": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.0.tgz", - "integrity": "sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw==", - "dev": true - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "node_modules/remark-lint-no-heading-indent/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "peer": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", - "dev": true - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "node_modules/remark-lint-no-heading-indent/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/remark-lint-no-heading-indent/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "peer": true, - "requires": { - "has-bigints": "^1.0.1" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/remark-lint-no-heading-like-paragraph": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-like-paragraph/-/remark-lint-no-heading-like-paragraph-4.0.0.tgz", + "integrity": "sha512-6P22xHF+2omrQUA9ujQ5yBUlZr3goaAxoa1t3wNSIydzqkbgwLS+RlpGsVvilW1Q8h4JgWpB42Zpflat6xr90g==", "dev": true, - "requires": { - "binary-extensions": "^2.0.0" + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "node_modules/remark-lint-no-heading-like-paragraph/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "dependencies": { + "@types/unist": "*" } }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "node_modules/remark-lint-no-heading-like-paragraph/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "node_modules/remark-lint-no-heading-like-paragraph/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "node_modules/remark-lint-no-heading-like-paragraph/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "peer": true, - "requires": { - "has": "^1.0.3" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "node_modules/remark-lint-no-heading-like-paragraph/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "peer": true, - "requires": { - "has-tostringtag": "^1.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "is-empty": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", - "integrity": "sha1-3pu1snhzigWgsJpX4ftNSjQan2s=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/remark-lint-no-heading-like-paragraph/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, - "requires": { - "is-extglob": "^2.1.1" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", + "node_modules/remark-lint-no-heading-like-paragraph/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "requires": { - "ip-regex": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "node_modules/remark-lint-no-heading-like-paragraph/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "peer": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "node_modules/remark-lint-no-heading-like-paragraph/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "peer": true, - "requires": { - "has-tostringtag": "^1.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "is-online": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/is-online/-/is-online-8.5.1.tgz", - "integrity": "sha512-RKyTQx/rJqw2QOXHwy7TmXdlkpe0Hhj7GBsr6TQJaj4ebNOfameZCMspU5vYbwBBzJ2brWArdSvNVox6T6oCTQ==", + "node_modules/remark-lint-no-heading-like-paragraph/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "requires": { - "got": "^11.8.5", - "p-any": "^2.0.0", - "p-timeout": "^3.0.0", - "public-ip": "^4.0.1" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "is-plain-obj": { + "node_modules/remark-lint-no-heading-punctuation": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz", - "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-punctuation/-/remark-lint-no-heading-punctuation-4.0.0.tgz", + "integrity": "sha512-7V23C3Q4yX9zEOLZdbv6o8wVxxeWB/F+h9by55zPyk2AwbqF2t2xevnAmN3XFmKZABDTqLwjQxtK6bCVv/S1PQ==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-string": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "is-relative-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-relative-url/-/is-relative-url-2.0.0.tgz", - "integrity": "sha1-cpAtf+BLPUeS59sV+duEtyBMnO8=", + "node_modules/remark-lint-no-heading-punctuation/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "requires": { - "is-absolute-url": "^2.0.0" + "dependencies": { + "@types/unist": "*" } }, - "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "dev": true, - "peer": true + "node_modules/remark-lint-no-heading-punctuation/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/remark-lint-no-heading-punctuation/node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", "dev": true, - "peer": true, - "requires": { - "has-tostringtag": "^1.0.0" + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/remark-lint-no-heading-punctuation/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "peer": true, - "requires": { - "has-symbols": "^1.0.2" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "node_modules/remark-lint-no-heading-punctuation/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "node_modules/remark-lint-no-heading-punctuation/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "js-tokens": { + "node_modules/remark-lint-no-heading-punctuation/node_modules/unist-util-stringify-position": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "peer": true, - "requires": { - "argparse": "^2.0.1" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "node_modules/remark-lint-no-heading-punctuation/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "node_modules/remark-lint-no-heading-punctuation/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "peer": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "jsx-ast-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", - "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", + "node_modules/remark-lint-no-heading-punctuation/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "peer": true, - "requires": { - "array-includes": "^3.1.3", - "object.assign": "^4.1.2" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "keyv": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.4.1.tgz", - "integrity": "sha512-PzByhNxfBLnSBW2MZi1DF+W5+qB/7BMpOokewqIvqS8GFtP7xHm2oeGU72Y1fhtfOv/FiEnI4+nyViYDmUChnw==", + "node_modules/remark-lint-no-inline-padding": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-4.1.2.tgz", + "integrity": "sha512-dGyhWsiqCZS3Slob0EVBUfsFBbdpMIBCvb56LlCgaHbnLsnNYx8PpF/wA5CgsN8BXIbXfRpyPB5cIJwIq5taYg==", "dev": true, - "requires": { - "compress-brotli": "^1.3.8", - "json-buffer": "3.0.1" + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "unified": "^10.0.0", + "unified-lint-rule": "^2.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "language-subtag-registry": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", - "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", + "node_modules/remark-lint-no-literal-urls": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-4.0.0.tgz", + "integrity": "sha512-rl/3Ai4Ax9IH/fRpOJZuXk1HgYX6oFTauhmBOilpqbq/YT2kN3FuXaneXdRfKv1bgMdHaLKxHWxGj/mDyA2n8w==", "dev": true, - "peer": true + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-character": "^2.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "node_modules/remark-lint-no-literal-urls/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "peer": true, - "requires": { - "language-subtag-registry": "~0.3.2" + "dependencies": { + "@types/unist": "*" } }, - "levenshtein-edit-distance": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/levenshtein-edit-distance/-/levenshtein-edit-distance-1.0.0.tgz", - "integrity": "sha1-iVuvR4zOi1waDSfkXXwdl4pmHkk=", + "node_modules/remark-lint-no-literal-urls/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/remark-lint-no-literal-urls/node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", "dev": true, - "peer": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "lines-and-columns": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", - "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", - "dev": true + "node_modules/remark-lint-no-literal-urls/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "load-plugin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-5.0.0.tgz", - "integrity": "sha512-jTz8tvC0BTMtof27lTSV5SAOnCRT0Z++k+S3QeQ5CrF8ZAS5L2nhi3euf4ZhJyDkds+nOQGyPcFqdQZ9s8ELkg==", + "node_modules/remark-lint-no-literal-urls/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": { - "@npmcli/config": "^4.0.0", - "import-meta-resolve": "^2.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "node_modules/remark-lint-no-literal-urls/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "longest-streak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", - "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==", - "dev": true + "node_modules/remark-lint-no-literal-urls/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/remark-lint-no-literal-urls/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "peer": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true + "node_modules/remark-lint-no-literal-urls/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/remark-lint-no-literal-urls/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "requires": { - "yallist": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "node_modules/remark-lint-no-literal-urls/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "requires": { - "p-defer": "^1.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "markdown-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", - "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", - "dev": true + "node_modules/remark-lint-no-multiple-toplevel-headings": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-4.0.0.tgz", + "integrity": "sha512-JW11iYxza7asDdhQuKfr8SH1u4NBOCQ4U7Ru0HrKCPcT4y/AB1C1il5uMQzbcervgYPBq69xzyQ24+AJeL0t3A==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-mdx": "^3.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "mdast-comment-marker": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-2.1.0.tgz", - "integrity": "sha512-/+Cfm8A83PjkqjQDB9iYqHESGuXlriCWAwRGPJjkYmxXrF4r6saxeUlOKNrf+SogTwg9E8uyHRCFHLG6/BAAdA==", + "node_modules/remark-lint-no-multiple-toplevel-headings/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "requires": { - "mdast-util-mdx-expression": "^1.1.0" + "dependencies": { + "@types/unist": "*" } }, - "mdast-util-from-markdown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", - "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", + "node_modules/remark-lint-no-multiple-toplevel-headings/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-no-multiple-toplevel-headings/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "requires": { - "@types/mdast": "^4.0.0", + "dependencies": { "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", + "bail": "^2.0.0", "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-no-multiple-toplevel-headings/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, "dependencies": { - "@types/mdast": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", - "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", - "dev": true, - "requires": { - "@types/unist": "*" - } - }, - "@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", - "dev": true - }, - "mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dev": true, - "requires": { - "@types/mdast": "^4.0.0" - } - }, - "micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "micromark-util-decode-numeric-character-reference": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.0.tgz", - "integrity": "sha512-pIgcsGxpHEtTG/rPJRz/HOLSqp5VTuIIjXlPI+6JSDlK2oljApusG6KzpS8AF0ENUMCHlC/IBb5B9xdFiVlm5Q==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0" - } - }, - "micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "dev": true, - "requires": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0" - } - }, - "micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true - }, - "micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true - }, - "unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0" - } - } + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "mdast-util-frontmatter": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", - "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", + "node_modules/remark-lint-no-multiple-toplevel-headings/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "escape-string-regexp": "^5.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "micromark-extension-frontmatter": "^2.0.0" + "dependencies": { + "@types/unist": "^3.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-no-multiple-toplevel-headings/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, "dependencies": { - "@types/mdast": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", - "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", - "dev": true, - "requires": { - "@types/unist": "*" - } - }, - "@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", - "dev": true - }, - "escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true - }, - "mdast-util-to-markdown": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", - "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", - "dev": true, - "requires": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark-util-decode-string": "^2.0.0", - "unist-util-visit": "^5.0.0", - "zwitch": "^2.0.0" - } - }, - "mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dev": true, - "requires": { - "@types/mdast": "^4.0.0" - } - }, - "micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "micromark-util-decode-numeric-character-reference": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.0.tgz", - "integrity": "sha512-pIgcsGxpHEtTG/rPJRz/HOLSqp5VTuIIjXlPI+6JSDlK2oljApusG6KzpS8AF0ENUMCHlC/IBb5B9xdFiVlm5Q==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0" - } - }, - "micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "dev": true, - "requires": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true - }, - "micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true - }, - "unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0" - } - }, - "unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - } - }, - "unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - } - } + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "mdast-util-heading-style": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-2.0.0.tgz", - "integrity": "sha512-q9+WW2hJduW51LgV2r/fcU5wIt2GLFf0yYHxyi0f2aaxnC63ErBSOAJlhP6nbQ6yeG5rTCozbwOi4QNDPKV0zw==", + "node_modules/remark-lint-no-multiple-toplevel-headings/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "mdast-util-mdx-expression": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.1.1.tgz", - "integrity": "sha512-RDLRkBFmBKCJl6/fQdxxKL2BqNtoPFoNBmQAlj5ZNKOijIWRKjdhPkeufsUOaexLj+78mhJc+L7d1MYka8/LdQ==", + "node_modules/remark-lint-no-multiple-toplevel-headings/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "requires": { - "@types/estree-jsx": "^0.0.1" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "mdast-util-phrasing": { + "node_modules/remark-lint-no-multiple-toplevel-headings/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-no-reference-like-url": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.0.0.tgz", - "integrity": "sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==", + "resolved": "https://registry.npmjs.org/remark-lint-no-reference-like-url/-/remark-lint-no-reference-like-url-4.0.0.tgz", + "integrity": "sha512-YkP8qWdrWDr9s8JLbJoC/U5Z0fU7hpa59Nin0i8zEOtD9coiYoI/YtXRKqSXuAKDmweb+JckhqtKuGJS5u77+w==", "dev": true, - "requires": { + "dependencies": { "@types/mdast": "^4.0.0", - "unist-util-is": "^6.0.0" + "devlop": "^1.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-no-reference-like-url/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, "dependencies": { - "@types/mdast": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", - "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", - "dev": true, - "requires": { - "@types/unist": "*" - } - }, - "@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", - "dev": true - }, - "unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0" - } - } + "@types/unist": "*" } }, - "mdast-util-to-hast": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.0.2.tgz", - "integrity": "sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==", + "node_modules/remark-lint-no-reference-like-url/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-no-reference-like-url/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "requires": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0" + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, - "dependencies": { - "@types/mdast": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", - "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", - "dev": true, - "requires": { - "@types/unist": "*" - } - }, - "@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", - "dev": true - }, - "unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0" - } - }, - "unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0" - } - }, - "unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - } - }, - "unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - } - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "mdast-util-to-nlcst": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-7.0.0.tgz", - "integrity": "sha512-YfWgABD6izaK7Tzx37V4268THKeusHU+S2qet98h9vrffMxwd/2jqFKxNYz9cCAPYA8p/5BXQuF313JuVFDC9A==", + "node_modules/remark-lint-no-reference-like-url/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": { - "@types/mdast": "^4.0.0", - "@types/nlcst": "^2.0.0", + "dependencies": { "@types/unist": "^3.0.0", - "nlcst-to-string": "^3.0.0", - "unist-util-position": "^5.0.0", - "vfile": "^6.0.0", - "vfile-location": "^5.0.0" + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, - "dependencies": { - "@types/mdast": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", - "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", - "dev": true, - "requires": { - "@types/unist": "*" - } - }, - "@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", - "dev": true - }, - "nlcst-to-string": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-3.1.1.tgz", - "integrity": "sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==", - "dev": true, - "requires": { - "@types/nlcst": "^1.0.0" - }, - "dependencies": { - "@types/nlcst": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-1.0.2.tgz", - "integrity": "sha512-ykxL/GDDUhqikjU0LIywZvEwb1NTYXTEWf+XgMSS2o6IXIakafPccxZmxgZcvJPZ3yFl2kdL1gJZz3U3iZF3QA==", - "dev": true, - "requires": { - "@types/unist": "^2" - } - }, - "@types/unist": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.8.tgz", - "integrity": "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==", - "dev": true - } - } - }, - "unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0" - } - }, - "unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0" - } - }, - "vfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", - "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - } - }, - "vfile-location": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", - "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "vfile": "^6.0.0" - } - }, - "vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - } - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "node_modules/remark-lint-no-reference-like-url/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "node_modules/remark-lint-no-reference-like-url/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, "dependencies": { - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - } + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "micromark": { + "node_modules/remark-lint-no-reference-like-url/node_modules/unist-util-stringify-position": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "requires": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, "dependencies": { - "micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "micromark-util-decode-numeric-character-reference": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.0.tgz", - "integrity": "sha512-pIgcsGxpHEtTG/rPJRz/HOLSqp5VTuIIjXlPI+6JSDlK2oljApusG6KzpS8AF0ENUMCHlC/IBb5B9xdFiVlm5Q==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0" - } - }, - "micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0" - } - }, - "micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true - }, - "micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true - } + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "micromark-core-commonmark": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz", - "integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==", + "node_modules/remark-lint-no-reference-like-url/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "requires": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, "dependencies": { - "micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0" - } - }, - "micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true - }, - "micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true - } + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "micromark-extension-frontmatter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", - "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", + "node_modules/remark-lint-no-reference-like-url/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "requires": { - "fault": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, "dependencies": { - "micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true - }, - "micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true - } + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "micromark-factory-destination": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "node_modules/remark-lint-no-reference-like-url/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "requires": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, "dependencies": { - "micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true - }, - "micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true - } + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "micromark-factory-label": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "node_modules/remark-lint-no-repeat-punctuation": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/remark-lint-no-repeat-punctuation/-/remark-lint-no-repeat-punctuation-0.1.4.tgz", + "integrity": "sha512-JJduCs4FimdBcR1AB576SqIYOjt+7t8OjTnnlZMvjnw7lzkuL0+nNNHyNXVPaK6jxaLjEUhrH2/smU6vZFUT7g==", "dev": true, - "requires": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, "dependencies": { - "micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true - }, - "micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true - } + "unified-lint-rule": "^1.0.3", + "unist-util-map": "^1.0.4", + "unist-util-to-list-of-char": "^0.1.3" } }, - "micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "node_modules/remark-lint-no-repeat-punctuation/node_modules/unified-lint-rule": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", + "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", "dev": true, - "requires": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, "dependencies": { - "micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true - }, - "micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true - } + "wrapped": "^1.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "micromark-factory-title": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "node_modules/remark-lint-no-shell-dollars": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-4.0.0.tgz", + "integrity": "sha512-ye2h8FzjsgqqQV0HHN2g9N4FqI3eD9Gpgu7tU5ADIJyQ3mUJdwBoFn7IlGnpmumR1fb/l6u/AhRavIZxXYqG+Q==", "dev": true, - "requires": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, "dependencies": { - "micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true - }, - "micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true - } + "@types/mdast": "^4.0.0", + "collapse-white-space": "^2.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "micromark-factory-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "node_modules/remark-lint-no-shell-dollars/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "requires": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, "dependencies": { - "micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true - }, - "micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true - } + "@types/unist": "*" } }, - "micromark-util-chunked": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "node_modules/remark-lint-no-shell-dollars/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-no-shell-dollars/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0" - }, "dependencies": { - "micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true - } + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "micromark-util-classify-character": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "node_modules/remark-lint-no-shell-dollars/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, "dependencies": { - "micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true - }, - "micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true - } + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "micromark-util-combine-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "node_modules/remark-lint-no-shell-dollars/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, "dependencies": { - "micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true - } + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "dev": true - }, - "micromark-util-html-tag-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", - "dev": true - }, - "micromark-util-normalize-identifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", - "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", + "node_modules/remark-lint-no-shell-dollars/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "requires": { - "micromark-util-symbol": "^1.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "micromark-util-resolve-all": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "node_modules/remark-lint-no-shell-dollars/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "requires": { - "micromark-util-types": "^2.0.0" - }, "dependencies": { - "micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true - } + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "node_modules/remark-lint-no-shell-dollars/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "requires": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - }, "dependencies": { - "micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true - }, - "micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true - } + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "micromark-util-subtokenize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz", - "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==", + "node_modules/remark-lint-no-shell-dollars/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "requires": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, "dependencies": { - "micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true - }, - "micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true - } + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "micromark-util-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", - "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==", - "dev": true - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/remark-lint-no-shortcut-reference-image": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-4.0.0.tgz", + "integrity": "sha512-YEiCpW5F/8/LZyxlOuVK2L/n0NJ1AB0AJK7oP39OVyEk3Xl7w+JQi6nZ3KiH6REh+PWGqKn6M0KEPL9cT/iAOw==", "dev": true, - "peer": true, - "requires": { - "brace-expansion": "^1.1.7" + "dependencies": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "mkdirp-infer-owner": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", - "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", + "node_modules/remark-lint-no-shortcut-reference-image/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "requires": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" + "dependencies": { + "@types/unist": "*" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/remark-lint-no-shortcut-reference-image/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "node_modules/remark-lint-no-shortcut-reference-image/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "peer": true - }, - "nlcst-to-string": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz", - "integrity": "sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==", - "dev": true + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "no-cliches": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/no-cliches/-/no-cliches-0.3.4.tgz", - "integrity": "sha512-oUqnng1vhKLaA4GR+OzVbLuZZ7OOguKCtMHxHMiyP8+9mXidKfoCyc030LbAyNI3xcgCHHyitK3Q8wP+w6DwVQ==", + "node_modules/remark-lint-no-shortcut-reference-image/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": {} - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "requires": { - "abbrev": "1" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true + "node_modules/remark-lint-no-shortcut-reference-image/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "node_modules/remark-lint-no-shortcut-reference-image/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "node_modules/remark-lint-no-shortcut-reference-image/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/remark-lint-no-shortcut-reference-image/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "node_modules/remark-lint-no-shortcut-reference-image/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "node_modules/remark-lint-no-shortcut-reference-link": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-4.0.0.tgz", + "integrity": "sha512-6jka2Zz3I6G2MvDcKrwADYhTOxHMFMK854u1cfBEIH5/XnCCXROtoqiiDtbZw+NJqbmwsBKvGL4t2gnmEJUmgg==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "dependencies": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "node_modules/remark-lint-no-shortcut-reference-link/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "dependencies": { + "@types/unist": "*" } }, - "object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "node_modules/remark-lint-no-shortcut-reference-link/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-no-shortcut-reference-link/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "peer": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "node_modules/remark-lint-no-shortcut-reference-link/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "node_modules/remark-lint-no-shortcut-reference-link/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "wrappy": "1" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "node_modules/remark-lint-no-shortcut-reference-link/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "peer": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "p-any": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-any/-/p-any-2.1.0.tgz", - "integrity": "sha512-JAERcaMBLYKMq+voYw36+x5Dgh47+/o7yuv2oQYuSSUml4YeqJEFznBrY2UeEkoSHqBua6hz518n/PsowTYLLg==", + "node_modules/remark-lint-no-shortcut-reference-link/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "requires": { - "p-cancelable": "^2.0.0", - "p-some": "^4.0.0", - "type-fest": "^0.3.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true + "node_modules/remark-lint-no-shortcut-reference-link/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true + "node_modules/remark-lint-no-shortcut-reference-link/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "node_modules/remark-lint-no-table-indentation": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-5.0.0.tgz", + "integrity": "sha512-MaLmnzgirpnRiRjWwrsyOX0RmP2eG4YAv169MtsxTVa6O3CpUDwTuTzivudE9L0kVvTlyF9DXEmdyjm85LDyVA==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-location": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true + "node_modules/remark-lint-no-table-indentation/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "node_modules/remark-lint-no-table-indentation/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "p-memoize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-memoize/-/p-memoize-2.1.0.tgz", - "integrity": "sha512-c6+a2iV4JyX0r4+i2IBJYO0r6LZAT2fg/tcB6GQbv1uzZsfsmKT7Ej5DRT1G6Wi7XUJSV2ZiP9+YEtluvhCmkg==", + "node_modules/remark-lint-no-table-indentation/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "requires": { - "mem": "^4.0.0", - "mimic-fn": "^1.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "p-some": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-some/-/p-some-4.1.0.tgz", - "integrity": "sha512-MF/HIbq6GeBqTrTIl5OJubzkGU+qfFhAFi0gnTAK6rgEIJIknEiABHOTtQu4e6JiXjIwuMPMUFQzyHh5QjCl1g==", + "node_modules/remark-lint-no-table-indentation/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": { - "aggregate-error": "^3.0.0", - "p-cancelable": "^2.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "node_modules/remark-lint-no-table-indentation/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "p-finally": "^1.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/remark-lint-no-table-indentation/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, - "peer": true, - "requires": { - "callsites": "^3.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "parse-json": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.0.tgz", - "integrity": "sha512-ihtdrgbqdONYD156Ap6qTcaGcGdkdAxodO1wLqQ/j7HP1u2sFYppINiq4jyC8F+Nm+4fVufylCV00QmkTHkSUg==", + "node_modules/remark-lint-no-table-indentation/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "requires": { - "@babel/code-frame": "^7.21.4", - "error-ex": "^1.3.2", - "json-parse-even-better-errors": "^3.0.0", - "lines-and-columns": "^2.0.3", - "type-fest": "^3.8.0" - }, "dependencies": { - "json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", - "dev": true - }, - "type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "dev": true - } + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "parse-latin": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", - "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", + "node_modules/remark-lint-no-table-indentation/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "requires": { - "@types/nlcst": "^2.0.0", + "dependencies": { "@types/unist": "^3.0.0", - "nlcst-to-string": "^4.0.0", - "unist-util-modify-children": "^4.0.0", - "unist-util-visit-children": "^3.0.0", - "vfile": "^6.0.0" + "unist-util-is": "^6.0.0" }, - "dependencies": { - "@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", - "dev": true - }, - "nlcst-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", - "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", - "dev": true, - "requires": { - "@types/nlcst": "^2.0.0" - } - }, - "unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0" - } - }, - "vfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", - "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - } - }, - "vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - } - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "passive-voice": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/passive-voice/-/passive-voice-0.1.0.tgz", - "integrity": "sha1-Fv+RrkC6DpLEPmcXY/3IQqcCcLE=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "node_modules/remark-lint-no-table-indentation/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "node_modules/remark-lint-no-table-indentation/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "node_modules/remark-lint-no-tabs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-tabs/-/remark-lint-no-tabs-4.0.0.tgz", + "integrity": "sha512-rQR7LDdcw047ajB3D+v9uzdB8aZfZtEdlUJvQXKkcVDteWiuXGC3PcIrmM/8n3J/wlFMuwoAaW2IcdlJf8HzXQ==", "dev": true, - "peer": true + "dependencies": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "vfile-location": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "node_modules/remark-lint-no-tabs/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "requires": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, "dependencies": { - "lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", - "dev": true - } + "@types/unist": "*" } }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "node_modules/remark-lint-no-tabs/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "node_modules/remark-lint-no-tabs/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "peer": true - }, - "proc-log": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", - "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", - "dev": true + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "node_modules/remark-lint-no-tabs/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "node_modules/remark-lint-no-tabs/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "peer": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "propose": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/propose/-/propose-0.0.5.tgz", - "integrity": "sha1-SKBl2ex9TIZn9AULFcSi2F28pWs=", + "node_modules/remark-lint-no-tabs/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "requires": { - "levenshtein-edit-distance": "^1.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "public-ip": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/public-ip/-/public-ip-4.0.4.tgz", - "integrity": "sha512-EJ0VMV2vF6Cu7BIPo3IMW1Maq6ME+fbR0NcPmqDfpfNGIRPue1X8QrGjrg/rfjDkOsIkKHIf2S5FlEa48hFMTA==", + "node_modules/remark-lint-no-tabs/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "requires": { - "dns-socket": "^4.2.2", - "got": "^11.8.5", - "is-ip": "^3.1.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "node_modules/remark-lint-no-undefined-references": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-undefined-references/-/remark-lint-no-undefined-references-5.0.0.tgz", + "integrity": "sha512-O0q8bHpRHK1T85oqO+uep4BkvQnZZp3y+wahDeeLLq9dCJfF56sq6Tt5OOTt1BAOZlpobS3OPQHUiJWYP6hX1w==", "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "dependencies": { + "@types/mdast": "^4.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-location": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "node_modules/remark-lint-no-undefined-references/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "*" + } }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "node_modules/remark-lint-no-undefined-references/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "node_modules/remark-lint-no-undefined-references/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "node_modules/remark-lint-no-undefined-references/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/remark-lint-no-undefined-references/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/remark-lint-no-undefined-references/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, - "requires": { - "picomatch": "^2.2.1" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "node_modules/remark-lint-no-undefined-references/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "node_modules/remark-lint-no-undefined-references/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "node_modules/remark-lint-no-undefined-references/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "remark": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", - "integrity": "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==", + "node_modules/remark-lint-no-undefined-references/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "requires": { - "@types/mdast": "^4.0.0", - "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "unified": "^11.0.0" - }, "dependencies": { - "@types/mdast": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", - "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", - "dev": true, - "requires": { - "@types/unist": "*" - } - }, - "@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", - "dev": true - }, - "unified": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", - "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "bail": "^2.0.0", - "devlop": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^6.0.0" - } - }, - "unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0" - } - }, - "vfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", - "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - } - }, - "vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - } - } + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-cli": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-12.0.0.tgz", - "integrity": "sha512-IGxCo2VsXC/GS2YdlF7+S8DsUiyULyiauik01NFoiMIrOlbDhXjrKLD8hYazwQdD67nw2k7cwOBIxcK/cbNd9Q==", + "node_modules/remark-lint-no-unused-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-unused-definitions/-/remark-lint-no-unused-definitions-4.0.0.tgz", + "integrity": "sha512-YCZ6k575NCTx7mnN+9ls0G6YgMsZHi0LYQqfLW8MNVHBtbpTBvfmk8I39bmsvuKWeBD98weZoXSDqIiIGg+Q/g==", "dev": true, - "requires": { - "import-meta-resolve": "^3.0.0", - "markdown-extensions": "^2.0.0", - "remark": "^15.0.0", - "unified-args": "^11.0.0" + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit": "^5.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-no-unused-definitions/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, "dependencies": { - "import-meta-resolve": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz", - "integrity": "sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==", - "dev": true - } + "@types/unist": "*" } }, - "remark-frontmatter": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", - "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", + "node_modules/remark-lint-no-unused-definitions/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-no-unused-definitions/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "requires": { - "@types/mdast": "^4.0.0", - "mdast-util-frontmatter": "^2.0.0", - "micromark-extension-frontmatter": "^2.0.0", - "unified": "^11.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-no-unused-definitions/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, "dependencies": { - "@types/mdast": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", - "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", - "dev": true, - "requires": { - "@types/unist": "*" - } - }, - "@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", - "dev": true - }, - "unified": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", - "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "bail": "^2.0.0", - "devlop": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^6.0.0" - } - }, - "unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0" - } - }, - "vfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", - "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - } - }, - "vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - } - } + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-heading-gap": { + "node_modules/remark-lint-no-unused-definitions/node_modules/unist-util-is": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/remark-heading-gap/-/remark-heading-gap-6.0.0.tgz", - "integrity": "sha512-xsJJZ0BC9J6XFY0c7segxuSKrJ95EDHEh06+b5FOgbhyJ9Z7yWKxWEJpsa2Bp4gkeMAEkoODH4mjWIV0JD2Urg==", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "@types/mdast": "^4.0.0", - "unified": "^11.0.0" + "dependencies": { + "@types/unist": "^3.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-no-unused-definitions/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, "dependencies": { - "@types/mdast": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", - "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", - "dev": true, - "requires": { - "@types/unist": "*" - } - }, - "@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", - "dev": true - }, - "unified": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", - "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "bail": "^2.0.0", - "devlop": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^6.0.0" - } - }, - "unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0" - } - }, - "vfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", - "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - } - }, - "vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - } - } + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-9.1.2.tgz", - "integrity": "sha512-m9e/aPlh7tsvfJfj8tPxrQzD6oEdb9Foko+Ya/6OwUP9EoGMfehv1Qtv26W1DoH58Wn8rT8CD+KuprTWscMmIA==", + "node_modules/remark-lint-no-unused-definitions/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "remark-message-control": "^7.0.0", - "unified": "^10.1.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-blockquote-indentation": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-3.1.2.tgz", - "integrity": "sha512-5DOrFsZd5dXqA4p/VZvWSrqIWNFbBXjX7IV/FkVkxlNhNF/0FMf/4v8x1I2W3mzaZ7yDsWS/egpZnmligq1ckQ==", + "node_modules/remark-lint-no-unused-definitions/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "pluralize": "^8.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-checkbox-character-style": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-checkbox-character-style/-/remark-lint-checkbox-character-style-4.1.2.tgz", - "integrity": "sha512-5ITz+1cCuJ3Jv/Q7rKgDEucCOnIgjWDnSHPJA1tb4TI/D316h+ALbDhZIpP8gyfAm6sBAh3Pwz9XZJN2uJB5UQ==", + "node_modules/remark-lint-no-unused-definitions/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-checkbox-content-indent": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-checkbox-content-indent/-/remark-lint-checkbox-content-indent-4.1.2.tgz", - "integrity": "sha512-8uaHAm4bSqB7XpnecLRObe00Lj9eoHiecV+44CfJeWyoo50cTPR/hIMfsMtDxsNt4LZP+6oCV9z+vACJqDv8Hg==", + "node_modules/remark-lint-no-unused-definitions/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0", - "vfile-location": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-code": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-code/-/remark-lint-code-2.0.0.tgz", - "integrity": "sha1-A+DC6Qru2+h1qHlf6s9XmIt9lXw=", + "node_modules/remark-lint-ordered-list-marker-style": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-4.0.0.tgz", + "integrity": "sha512-xZ7Xppy5fzACH4b9h1b4lTzVtNY2AlUkNTfl1Oe6cIKN8tk3juFxN0wL2RpktPtSZ7iRIabzFmg6l8WPhlASJA==", "dev": true, - "requires": { - "unified-lint-rule": "^1.0.0", - "unist-util-visit": "^1.0.0" - }, "dependencies": { - "unified-lint-rule": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", - "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", - "dev": true, - "requires": { - "wrapped": "^1.0.1" - } - }, - "unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", - "dev": true - }, - "unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "dev": true, - "requires": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dev": true, - "requires": { - "unist-util-is": "^3.0.0" - } - } + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "micromark-util-character": "^2.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-code-block-style": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-3.1.2.tgz", - "integrity": "sha512-3wsWmzzdyEsB9sOzBOf46TSkwwVKXN2JpTEQb6feN0Tl6Vg75F7T9MHqMz7aqk/56bOXSxUzdpXDscGBhziLRA==", + "node_modules/remark-lint-ordered-list-marker-style/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "*" } }, - "remark-lint-definition-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-definition-case/-/remark-lint-definition-case-3.1.2.tgz", - "integrity": "sha512-/VxucJKEFykOe2ILgi0LLia0RaSyOPQXpR+tuX4MK3iKxIm7aT2oINgR9ugLpI15xJ463LyTi5mXf+BGveXeWA==", + "node_modules/remark-lint-ordered-list-marker-style/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-ordered-list-marker-style/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-definition-spacing": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-3.1.2.tgz", - "integrity": "sha512-l058jAKfZfCOmlbIzoTll+CrZm9Bh42ZVCHcODPSZC8Yx4terCKgIoks+RWJDEdUbEw0YQoYvPc59ZVmp3BIew==", + "node_modules/remark-lint-ordered-list-marker-style/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-emphasis-marker": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-emphasis-marker/-/remark-lint-emphasis-marker-3.1.1.tgz", - "integrity": "sha512-VduuT+KAr0vA78xBLJdIcenCQja4mAd81aNACfdz7BUPLphIQa84D5uzl+nZatSaCXLebCNp5jP/bzVUsBmRKw==", + "node_modules/remark-lint-ordered-list-marker-style/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-fenced-code-flag": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-3.1.2.tgz", - "integrity": "sha512-yh4m3dlPmRsqM/BFhpqHYfrmBvFQ+D5dZZKDDYP2rf3YEoXlEVt8T8lWQueTTSxcq6yXAqL/XQL/iqqUHlLcHw==", + "node_modules/remark-lint-ordered-list-marker-style/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-fenced-code-marker": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-3.1.2.tgz", - "integrity": "sha512-6XNqjOuhT+0c7Q/22aCsMz61ne9g8HRpYF79EXQPdbzYa+PcfPXMiQKStONY3PfC8OE2/3WXI2zcs8w9x+8+VQ==", + "node_modules/remark-lint-ordered-list-marker-style/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-file-extension": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-2.1.2.tgz", - "integrity": "sha512-Nq54F5R7F1gyj/IMW6SvkAbVNrH+p38WK3//KCoZLDUYFrH0oXgXXFGHi9CT/O0VEopW+bWJfTn8YAJRs0qI5Q==", + "node_modules/remark-lint-ordered-list-marker-style/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-final-definition": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-3.1.2.tgz", - "integrity": "sha512-3O3JT6xqlrgq+UjhMPxshgMtwXn99w0BEO9JwbDls49N0XCu0n22Pq1n6X3tEVzskPLo3YYyVYfW2Z2C2rneKQ==", + "node_modules/remark-lint-ordered-list-marker-style/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-final-newline": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-final-newline/-/remark-lint-final-newline-2.1.2.tgz", - "integrity": "sha512-K0FdPGPyEB94PwNgopwVJFE8oRWi7IhY2ycXFVAMReI51el7EHB8F1gX14tB6p6zyGy6mUh69bCVU9mMTNeOUg==", + "node_modules/remark-lint-ordered-list-marker-style/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-hard-break-spaces": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-3.1.2.tgz", - "integrity": "sha512-HaW0xsl3TI7VFAqGWWcZtPqyz0NWu19KKjSO7OGFTUJU4S9YiRnhIxmSFM0ZLSsVAynE+dhzVKa8U7dOpWDcOg==", + "node_modules/remark-lint-ordered-list-marker-value": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-4.0.0.tgz", + "integrity": "sha512-7UjNU2Nv9LGEONTU9GPmTVoNoGKD5aL1X2xHzMbSJiTc50bfcazYqZawO+qj1pQ04WPhto1qHnl0HRB5wwSVwA==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-phrasing": "^4.0.0", + "micromark-util-character": "^2.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-heading-increment": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-heading-increment/-/remark-lint-heading-increment-3.1.2.tgz", - "integrity": "sha512-+fMfZmFh6ie6MmbRCVW77Rha15zDmnHWKiA0Do08OTrfngPTv8ZKXYLmxhUpL+xV9ts9q+9Kz5rv0L4QD4sEwQ==", + "node_modules/remark-lint-ordered-list-marker-value/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "*" } }, - "remark-lint-heading-style": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-3.1.2.tgz", - "integrity": "sha512-0RkcRPV/H2bPFgeInzBkK1cWUwtFTm83I+Db/Z5tDY02GzKOosHLvxtJyj/1391/opAH1LYbHtHWffir99IUgw==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-heading-style": "^2.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" - } + "node_modules/remark-lint-ordered-list-marker-value/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true }, - "remark-lint-heading-whitespace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-heading-whitespace/-/remark-lint-heading-whitespace-1.0.0.tgz", - "integrity": "sha512-DykoBIXNbkihg64D+mztSOv3l82RTH4tIZW/HUB4QM4NpIEB+pVIPQpCYD0K4pTgvKiwoqsj4NY8qJ1EhNHAmQ==", + "node_modules/remark-lint-ordered-list-marker-value/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "requires": { - "mdast-util-to-string": "^1.0.4", - "unified-lint-rule": "^1.0.2", - "unist-util-visit": "^1.3.0" - }, "dependencies": { - "mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", - "dev": true - }, - "unified-lint-rule": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", - "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", - "dev": true, - "requires": { - "wrapped": "^1.0.1" - } - }, - "unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", - "dev": true - }, - "unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "dev": true, - "requires": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dev": true, - "requires": { - "unist-util-is": "^3.0.0" - } - } + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-link-title-style": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-link-title-style/-/remark-lint-link-title-style-3.1.2.tgz", - "integrity": "sha512-if4MahYJVvQUWlrXDF8GSv4b9VtLSgMSDHeikQp1/hGYlihLl9uGw3nlL5Lf9DqTN0qaT6RPbXOjuuzHlk38sg==", + "node_modules/remark-lint-ordered-list-marker-value/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0", - "vfile-location": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-list-item-bullet-indent": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-bullet-indent/-/remark-lint-list-item-bullet-indent-4.1.2.tgz", - "integrity": "sha512-WgU5nooqIEm6f35opcbHKBzWrdFJA3XcyTfB3nv/v0KX43/h6qFGmmMJ5kEiaFExuQp3dZSdatWuY0YZ9YRbUg==", + "node_modules/remark-lint-ordered-list-marker-value/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "pluralize": "^8.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-list-item-content-indent": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-content-indent/-/remark-lint-list-item-content-indent-3.1.2.tgz", - "integrity": "sha512-TB0pmrWiRaQW80Y/PILFQTnHDghRxXNzMwyawlP+DBF9gNom3pEBmb4ZlGQlN0aa3r8VWeIKdv1ylHrfXE0vqA==", + "node_modules/remark-lint-ordered-list-marker-value/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "pluralize": "^8.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-list-item-indent": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-3.1.2.tgz", - "integrity": "sha512-tkrra1pxZVE4OVJGfN435u/v0ljruXU+dHzWiKDYeifquD4aWhJxvSApu7+FbE098D/4usVXgMxwFkNhrpZcSQ==", + "node_modules/remark-lint-ordered-list-marker-value/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "pluralize": "^8.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-list-item-spacing": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-spacing/-/remark-lint-list-item-spacing-4.1.1.tgz", - "integrity": "sha512-MqXmahPgYrvfA7SPqmcAC6fI40jIgXG33EeE/MhFvMLWh04k+fqGf2O2aH1KT664MlwM4oETbTI4xj3/KCIHZA==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "node_modules/remark-lint-ordered-list-marker-value/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-maximum-heading-length": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-maximum-heading-length/-/remark-lint-maximum-heading-length-3.1.2.tgz", - "integrity": "sha512-gkmZxjlzEmNjBRBwef0L/Qmoabxxof0mryOxWzRZSu1xz4Qsp+UFWMhiHGXbE9WJL6EBW8yNTOpgnNgUOzqDiQ==", + "node_modules/remark-lint-ordered-list-marker-value/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-maximum-line-length": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-3.1.2.tgz", - "integrity": "sha512-KwddpVmNifTHNXwTQQgVufuUvv0hhu9kJVvmpNdEvfEc7tc3wBkaavyi3kKsUB8WwMhGtZuXVWy6OdPC1axzhw==", + "node_modules/remark-lint-ordered-list-marker-value/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-auto-link-without-protocol": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-3.1.2.tgz", - "integrity": "sha512-mPIdFOGxdDhCMa2qIzjzjDzDoQeyK+/1BBgsseqThuBtoAoXR5l1TZfII2isNbBo6L8d+fMFdx1/3qALoDjtcA==", + "node_modules/remark-lint-rule-style": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-4.0.0.tgz", + "integrity": "sha512-Kt7IHMB5IbLgRFKaFUmB895sV3PTD0MBgN9CvXKxr1wHFF43S6tabjFIBSoQqyJRlhH0S3rK6Lvopofa009gLg==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-blockquote-without-marker": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-5.1.2.tgz", - "integrity": "sha512-QPbqsrt7EfpSWqTkZJ9tepabPIhBDlNqZkuxxMQYD0OQ2N+tHDUq3zE1JxI5ts1V9o/mWApgySocqGd3jlcKmQ==", + "node_modules/remark-lint-rule-style/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0", - "vfile-location": "^4.0.0" + "dependencies": { + "@types/unist": "*" } }, - "remark-lint-no-consecutive-blank-lines": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-4.1.3.tgz", - "integrity": "sha512-yU3jH6UMHvaxX3DPBen+7CoPiCcqJ4BeteyOKeKX+tKWCWKILpiz+TVToRbeLnWO4IvFNnSRFMSXmcWSDdbY4w==", + "node_modules/remark-lint-rule-style/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-rule-style/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "pluralize": "^8.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-dead-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-dead-urls/-/remark-lint-no-dead-urls-1.1.0.tgz", - "integrity": "sha512-it3EZmMQ+hwGhUf60NkXN0mMIFuFkS0cxdbgEbhZ/Fj1PlUBpe3gDBtWJ/sqNwSNvQlNSzpvMQkNHSoAhlsVjA==", + "node_modules/remark-lint-rule-style/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": { - "check-links": "^1.1.8", - "is-online": "^8.2.1", - "unified-lint-rule": "^1.0.4", - "unist-util-visit": "^2.0.1" - }, "dependencies": { - "unified-lint-rule": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", - "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", - "dev": true, - "requires": { - "wrapped": "^1.0.1" - } - }, - "unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "dev": true - }, - "unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - } - }, - "unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - } - } + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-duplicate-definitions": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-definitions/-/remark-lint-no-duplicate-definitions-3.1.2.tgz", - "integrity": "sha512-vi0nXA7p+pjQOorZOkr9E+QDhG74JAdbzqglWPrWWNI3z2rUYWYHTNSyWJbwEXaIIcev1ZAw8SCAOis5MNm+pA==", + "node_modules/remark-lint-rule-style/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-stringify-position": "^3.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-duplicate-headings": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-headings/-/remark-lint-no-duplicate-headings-3.1.2.tgz", - "integrity": "sha512-atBlykGOx9BhpXGp0BUMWxn/T89+hC0Gel8xOIMaFkDhRcLlLVt+/F/aJGhM2Sp0R9NTQ6ejn+JYMLl5Aw2Z+g==", + "node_modules/remark-lint-rule-style/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-stringify-position": "^3.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-emphasis-as-heading": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-emphasis-as-heading/-/remark-lint-no-emphasis-as-heading-3.1.2.tgz", - "integrity": "sha512-2DDx0VkqSExR6oqBiQtOsmdDwT7f3hpnPwPvBCk7BDeDU53JWY1kBAkRObkEptgH3GfpwxIQymIdHXesBpAQAg==", + "node_modules/remark-lint-rule-style/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-empty-sections": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-empty-sections/-/remark-lint-no-empty-sections-4.0.0.tgz", - "integrity": "sha512-Tx1nCu7Dq3dsJ500402sSvM0uVK/6khSuEjx8K8u9aHN+Y4vjL6h88xVzdzCmZq2J2yqyFnvMjG1y7lQv+DRvg==", + "node_modules/remark-lint-rule-style/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "requires": { - "mdast-util-to-string": "^1.0.2", - "unified-lint-rule": "^1.0.0", - "unist-util-visit": "^1.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-rule-style/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, "dependencies": { - "mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", - "dev": true - }, - "unified-lint-rule": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", - "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", - "dev": true, - "requires": { - "wrapped": "^1.0.1" - } - }, - "unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", - "dev": true - }, - "unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "dev": true, - "requires": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dev": true, - "requires": { - "unist-util-is": "^3.0.0" - } - } + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-empty-url": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-empty-url/-/remark-lint-no-empty-url-3.1.2.tgz", - "integrity": "sha512-uu1ka/jNC5fQlLb1tKp3NLfb/0DpS9vLMmxJ8JU7iC8AurMTpI8yk/rpHr3NHz59pfGWboHjXOCE8n6q55VENw==", + "node_modules/remark-lint-rule-style/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-file-name-articles": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-2.1.2.tgz", - "integrity": "sha512-kM4vwBkne7f9euDKsuyxTtrsiafjH+KOwu8ZmuSVWh5U+u0EMcPyN5fxfaQIW+5FkrJA1jwnRu7ciXJBJt74Og==", + "node_modules/remark-lint-strong-marker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-4.0.0.tgz", + "integrity": "sha512-YcvuzakYhQWdCH+1E30sUY+wyvq+PNa77NZAMAYO/cS/pZczFB+q4Ccttw4Q+No/chX8oMfe0GYtm8dDWLei/g==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0" + "dependencies": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-file-name-consecutive-dashes": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-2.1.2.tgz", - "integrity": "sha512-gw06jaaFwBR3s+3E2kJlv+E7rAzS7Nj+MFU7TViwbsYnR7PA96htLVDCjClyNUE7JHUNcv93HdLm8ykg8kRyNA==", + "node_modules/remark-lint-strong-marker/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0" + "dependencies": { + "@types/unist": "*" } }, - "remark-lint-no-file-name-irregular-characters": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-irregular-characters/-/remark-lint-no-file-name-irregular-characters-2.1.2.tgz", - "integrity": "sha512-2tcqzLm39Jc4THNP2yvJruOz2HtV4yh+eePiySKmhfZk/6ifMyOF/wlKHKcswczSGE4InNTfxJnc/AoxOJEdkw==", + "node_modules/remark-lint-strong-marker/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-strong-marker/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-file-name-mixed-case": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-mixed-case/-/remark-lint-no-file-name-mixed-case-2.1.2.tgz", - "integrity": "sha512-0mTrjxBB4/0rV7sef+xjV5Aeb6LuW19X4QbNHW2RW7aMy+mtgJU03wdb8Y0LTnWVFHjUbc+iHrsFeCA/Pu1kew==", + "node_modules/remark-lint-strong-marker/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-file-name-outer-dashes": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-2.1.2.tgz", - "integrity": "sha512-VrbHg25Oo9k/bNbS7ye1X7F6ER4uZSubO+t5DHJ4WZ6iVbNtBar/JwzVelY1YxUAutv42OvHfuveh4vKlcNgVA==", + "node_modules/remark-lint-strong-marker/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-heading-content-indent": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-content-indent/-/remark-lint-no-heading-content-indent-4.1.2.tgz", - "integrity": "sha512-TTxFsm1f4ZHFxZQCuz7j0QK4RvP6oArTiwazKLr16yaZe1608ypogMek4A30j2xX8WuO9+2uBzLXCY5OBo5x5Q==", + "node_modules/remark-lint-strong-marker/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-heading-style": "^2.0.0", - "pluralize": "^8.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-heading-indent": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-indent/-/remark-lint-no-heading-indent-4.1.2.tgz", - "integrity": "sha512-XFoSebfsYV6EFYRCYkCzSw6xxgltN5l3aPH+UfCk/0geMnl3DrCQjbQt9qhxQzBSBa4gA91CGs2DRI5Xxbwzig==", + "node_modules/remark-lint-strong-marker/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "pluralize": "^8.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-heading-like-paragraph": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-like-paragraph/-/remark-lint-no-heading-like-paragraph-3.1.2.tgz", - "integrity": "sha512-e+o6YG/htbE25dQByIYrgeZGhIu5YU2QdyN2n/J+S7z7ELVp0mfgv0AywbHYW0QrMhSQUimjyAFQ8KRSG858LA==", + "node_modules/remark-lint-strong-marker/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-heading-punctuation": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-punctuation/-/remark-lint-no-heading-punctuation-3.1.1.tgz", - "integrity": "sha512-ZexHx4rmsjKVF1/Fvdig0yOgpWl0wFa43+sqg880HT3PW9KmEczjSRkwlMaTlVgDzC0paNn2FXfQMuEQW4YDLg==", + "node_modules/remark-lint-strong-marker/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-inline-padding": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-4.1.2.tgz", - "integrity": "sha512-dGyhWsiqCZS3Slob0EVBUfsFBbdpMIBCvb56LlCgaHbnLsnNYx8PpF/wA5CgsN8BXIbXfRpyPB5cIJwIq5taYg==", + "node_modules/remark-lint-strong-marker/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-literal-urls": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-3.1.2.tgz", - "integrity": "sha512-4tV9JGLKxAMFSuWDMOqLozkFJ3HyRvhzgrPrxASoziaml23m7UXAozk5dkIrFny1cN2oG988Z8tORxX2FL1Ilw==", + "node_modules/remark-lint-table-cell-padding": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-5.0.0.tgz", + "integrity": "sha512-LNyiHDQZBIOqcQGG1tYsZHW7g0v8OyRmRgDrD5WEsMaAYfM6EiECUokN/Q4py9h4oM/2KUSrdZbtfuZmy87/kA==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-multiple-toplevel-headings": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-3.1.2.tgz", - "integrity": "sha512-9rJSsrwdzwKmtuloBjJobLzjGL7Lgtk3+vMNUyuH9z/nBfkUCN3qxn3Nt9AxL+wwSAsHV6e74W+W2S1ohBLt6A==", + "node_modules/remark-lint-table-cell-padding/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-stringify-position": "^3.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "*" } }, - "remark-lint-no-reference-like-url": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-reference-like-url/-/remark-lint-no-reference-like-url-3.1.2.tgz", - "integrity": "sha512-rAb0ux38D7gfceBo4DUyX+bb1abPad7LSkMko+GWlyXakHbDM63llAyYURyqoupKMNeBw7vR5MCz/X7+sBQ1Yw==", + "node_modules/remark-lint-table-cell-padding/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-table-cell-padding/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-repeat-punctuation": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/remark-lint-no-repeat-punctuation/-/remark-lint-no-repeat-punctuation-0.1.4.tgz", - "integrity": "sha512-JJduCs4FimdBcR1AB576SqIYOjt+7t8OjTnnlZMvjnw7lzkuL0+nNNHyNXVPaK6jxaLjEUhrH2/smU6vZFUT7g==", + "node_modules/remark-lint-table-cell-padding/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": { - "unified-lint-rule": "^1.0.3", - "unist-util-map": "^1.0.4", - "unist-util-to-list-of-char": "^0.1.3" - }, "dependencies": { - "unified-lint-rule": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", - "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", - "dev": true, - "requires": { - "wrapped": "^1.0.1" - } - } + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-shell-dollars": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-3.1.2.tgz", - "integrity": "sha512-np2MDEhXHviXhbQFjnC1QYv5/fxCV1cIHfGMoJpqiW7Zcu/UGCOo5TE3XswZH4ukHZJ65c3X2A6qfLDW+ur3CQ==", + "node_modules/remark-lint-table-cell-padding/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-shortcut-reference-image": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-3.1.2.tgz", - "integrity": "sha512-NX4XJFPyDeJJ77pmETxRj4oM/zayf7Lmn/O87HgExBkQIPz2NYbDeKD8QEyliLaV/oKA2rQufpzuFw55xa1Tww==", + "node_modules/remark-lint-table-cell-padding/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-shortcut-reference-link": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-3.1.1.tgz", - "integrity": "sha512-oDJ92/jXQ842HgrBGgZdP7FA+N2jBMCBU2+jRElkS+OWVut0UaDILtNavNy/e85B3SLPj3RoXKF96M4vfJ7B2A==", + "node_modules/remark-lint-table-cell-padding/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-table-indentation": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-4.1.2.tgz", - "integrity": "sha512-5lkO+Yrtni/CDMZi7mlwbB2zzRQLH94DesboXg51aO2UfZlSn5dZNhmN5wkyCU2AiApUhlFNbxfKMHOWFPLdog==", + "node_modules/remark-lint-table-cell-padding/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0", - "vfile-location": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-tabs": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-tabs/-/remark-lint-no-tabs-3.1.2.tgz", - "integrity": "sha512-PQQmRpGHRW9tMnAXtlQbMke8byIJu9hlotCH6pJZPO4FodpXvD4JW5EMM3BmO0JQDZsQWrx3qfqxCEMxrj8Qbg==", + "node_modules/remark-lint-table-cell-padding/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "vfile-location": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-undefined-references": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-undefined-references/-/remark-lint-no-undefined-references-4.1.1.tgz", - "integrity": "sha512-J20rKfTGflLiTI3T5JlLZSmINk6aDGmZi1y70lpU69LDfAyHAKgDK6sSW9XDeFmCPPdm8Ybxe5Gf2a70k+GcVQ==", + "node_modules/remark-lint-table-cell-padding/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0", - "vfile-location": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-no-unused-definitions": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-unused-definitions/-/remark-lint-no-unused-definitions-3.1.2.tgz", - "integrity": "sha512-bOcaJAnjKxT3kASFquUA3fO9xem9wZhVqt8TbqjA84+G4n40qjaLXDs/4vq73aMsSde73K0f3j1u0pMe7et8yQ==", + "node_modules/remark-lint-table-pipe-alignment": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-table-pipe-alignment/-/remark-lint-table-pipe-alignment-4.0.0.tgz", + "integrity": "sha512-nx+xpEIWQRLOcq9hIbUIvhSE1NYRmDJmCY3cMoHJ1sIW7dRXMHyWfpWTgu7mpREKwSQdE0q4qnzk8McQQSkIcg==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-ordered-list-marker-style": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-3.1.2.tgz", - "integrity": "sha512-62iVE/YQsA0Azaqt8yAJWPplWLS47kDLjXeC2PlRIAzCqbNt9qH3HId8vZ15QTSrp8rHmJwrCMdcqV6AZUi7gQ==", + "node_modules/remark-lint-table-pipe-alignment/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "*" } }, - "remark-lint-ordered-list-marker-value": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-3.1.2.tgz", - "integrity": "sha512-kG08nhsFk8rhoXK5EeDN/wN28CxefraDud/MaZnji8LEyxF3HAkzFuETr9laOn8Ey+n8h/C0mpqAwUf4thyJ5g==", + "node_modules/remark-lint-table-pipe-alignment/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-table-pipe-alignment/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-rule-style": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-3.1.2.tgz", - "integrity": "sha512-0CsX2XcX9pIhAP5N7Y8mhYXp3/Ld+NvxXY1p0LHAq0NZu17UsZLuegvx/s25uFbQs08DcmSqyKnepU9qGGqmTQ==", + "node_modules/remark-lint-table-pipe-alignment/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-strong-marker": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-3.1.2.tgz", - "integrity": "sha512-U/g4wngmiI0Q6WBRQG6pZxnDS33Wt/0QYA3+KNFBDykoi1vXsDEorIqy3dEag9z6XHwcMvFDsff6VRUhaOJWQg==", + "node_modules/remark-lint-table-pipe-alignment/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "remark-lint-table-cell-padding": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-4.1.3.tgz", - "integrity": "sha512-N9xtnS6MG/H3srAMjqqaF26A7socr87pIgt64dr5rxoSbDRWRPChGQ8y7wKyV8VeyRNF37e3E5KB3bQVqjSYaQ==", - "dev": true, + "node_modules/remark-lint-table-pipe-alignment/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-table-pipe-alignment/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-table-pipe-alignment/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-table-pipe-alignment/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-table-pipe-alignment/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-table-pipes": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-5.0.0.tgz", + "integrity": "sha512-e7jzAScDrt5+eMomh099TZJBN2K9ldDxBu9iYhNu5C0YsdAvnckJkgilsuClxFpmx4LCVYaX0EGbt/hQ3LB3xg==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-table-pipes/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-lint-table-pipes/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-table-pipes/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-table-pipes/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-table-pipes/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-table-pipes/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-table-pipes/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-table-pipes/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-table-pipes/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-table-pipes/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-unordered-list-marker-style": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-4.0.0.tgz", + "integrity": "sha512-XlP4Wr4KJNovyWVv0H5axfUlF23iE9Kt2SxaVq4+ieum5YcMmKE6KsL+aqt3kiJb60SH1u6a0bxKFvdM/9riOA==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-unordered-list-marker-style/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-lint-unordered-list-marker-style/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint-unordered-list-marker-style/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-unordered-list-marker-style/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-unordered-list-marker-style/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-unordered-list-marker-style/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-unordered-list-marker-style/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-unordered-list-marker-style/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-unordered-list-marker-style/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-unordered-list-marker-style/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-write-good": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remark-lint-write-good/-/remark-lint-write-good-1.2.0.tgz", + "integrity": "sha512-HYiwM16RRBm979yDb/IVwPe1eFhzA1HATe1WucRiYWS10jcPRgJe9FihH7W5uzQFDqX5aRbTtu/yPdq+hPnYkw==", + "dev": true, + "dependencies": { + "nlcst-to-string": "^2.0.0", + "unified-lint-rule": "^1.0.1", + "unist-util-visit": "^1.1.1", + "write-good": "^1.0.2" + } + }, + "node_modules/remark-lint-write-good/node_modules/unified-lint-rule": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", + "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", + "dev": true, + "dependencies": { + "wrapped": "^1.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-write-good/node_modules/unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", + "dev": true + }, + "node_modules/remark-lint-write-good/node_modules/unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "dev": true, + "dependencies": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "node_modules/remark-lint-write-good/node_modules/unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "dev": true, + "dependencies": { + "unist-util-is": "^3.0.0" + } + }, + "node_modules/remark-lint/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-lint/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-lint/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-message-control": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-8.0.0.tgz", + "integrity": "sha512-brpzOO+jdyE/mLqvqqvbogmhGxKygjpCUCG/PwSCU43+JZQ+RM+sSzkCWBcYvgF3KIAVNIoPsvXjBkzO7EdsYQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-comment-marker": "^3.0.0", + "unified-message-control": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-message-control/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-message-control/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-message-control/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-message-control/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-message-control/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse/node_modules/@types/mdast": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", + "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-parse/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "node_modules/remark-parse/node_modules/unified": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", + "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-preset-lint-consistent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-preset-lint-consistent/-/remark-preset-lint-consistent-6.0.0.tgz", + "integrity": "sha512-W3fwxajdietwjnFyTH5x2le63hxWGVOXxIs7KjRqU+5wkkN6ZQyuwPeeomblmS9wQr50fkidhXNHNDyCXtqgxQ==", + "dev": true, + "dependencies": { + "remark-lint": "^10.0.0", + "remark-lint-blockquote-indentation": "^4.0.0", + "remark-lint-checkbox-character-style": "^5.0.0", + "remark-lint-code-block-style": "^4.0.0", + "remark-lint-emphasis-marker": "^4.0.0", + "remark-lint-fenced-code-marker": "^4.0.0", + "remark-lint-heading-style": "^4.0.0", + "remark-lint-link-title-style": "^4.0.0", + "remark-lint-list-item-content-indent": "^4.0.0", + "remark-lint-ordered-list-marker-style": "^4.0.0", + "remark-lint-ordered-list-marker-value": "^4.0.0", + "remark-lint-rule-style": "^4.0.0", + "remark-lint-strong-marker": "^4.0.0", + "remark-lint-table-cell-padding": "^5.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-preset-lint-consistent/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-preset-lint-consistent/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-preset-lint-consistent/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-preset-lint-consistent/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-preset-lint-consistent/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-preset-lint-markdown-style-guide": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-preset-lint-markdown-style-guide/-/remark-preset-lint-markdown-style-guide-6.0.0.tgz", + "integrity": "sha512-izsfNTHeqrRP64VWV6OdJnSUDwKFSthMKiiDcu14ODpPV0t7YiotCQWzgc7L4eW9Ctcp4aB4nHNLSuDmwhEWrQ==", + "dev": true, + "dependencies": { + "remark-lint": "^10.0.0", + "remark-lint-blockquote-indentation": "^4.0.0", + "remark-lint-code-block-style": "^4.0.0", + "remark-lint-definition-case": "^4.0.0", + "remark-lint-definition-spacing": "^4.0.0", + "remark-lint-emphasis-marker": "^4.0.0", + "remark-lint-fenced-code-flag": "^4.0.0", + "remark-lint-fenced-code-marker": "^4.0.0", + "remark-lint-file-extension": "^3.0.0", + "remark-lint-final-definition": "^4.0.0", + "remark-lint-hard-break-spaces": "^4.0.0", + "remark-lint-heading-increment": "^4.0.0", + "remark-lint-heading-style": "^4.0.0", + "remark-lint-link-title-style": "^4.0.0", + "remark-lint-list-item-content-indent": "^4.0.0", + "remark-lint-list-item-indent": "^4.0.0", + "remark-lint-list-item-spacing": "^5.0.0", + "remark-lint-maximum-heading-length": "^4.0.0", + "remark-lint-maximum-line-length": "^4.0.0", + "remark-lint-no-blockquote-without-marker": "^6.0.0", + "remark-lint-no-consecutive-blank-lines": "^5.0.0", + "remark-lint-no-duplicate-headings": "^4.0.0", + "remark-lint-no-emphasis-as-heading": "^4.0.0", + "remark-lint-no-file-name-articles": "^3.0.0", + "remark-lint-no-file-name-consecutive-dashes": "^3.0.0", + "remark-lint-no-file-name-irregular-characters": "^3.0.0", + "remark-lint-no-file-name-mixed-case": "^3.0.0", + "remark-lint-no-file-name-outer-dashes": "^3.0.0", + "remark-lint-no-heading-punctuation": "^4.0.0", + "remark-lint-no-literal-urls": "^4.0.0", + "remark-lint-no-multiple-toplevel-headings": "^4.0.0", + "remark-lint-no-shell-dollars": "^4.0.0", + "remark-lint-no-shortcut-reference-image": "^4.0.0", + "remark-lint-no-shortcut-reference-link": "^4.0.0", + "remark-lint-no-table-indentation": "^5.0.0", + "remark-lint-ordered-list-marker-style": "^4.0.0", + "remark-lint-ordered-list-marker-value": "^4.0.0", + "remark-lint-rule-style": "^4.0.0", + "remark-lint-strong-marker": "^4.0.0", + "remark-lint-table-cell-padding": "^5.0.0", + "remark-lint-table-pipe-alignment": "^4.0.0", + "remark-lint-table-pipes": "^5.0.0", + "remark-lint-unordered-list-marker-style": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-preset-lint-markdown-style-guide/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-preset-lint-markdown-style-guide/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-preset-lint-markdown-style-guide/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-preset-lint-markdown-style-guide/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-preset-lint-markdown-style-guide/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-preset-lint-recommended": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/remark-preset-lint-recommended/-/remark-preset-lint-recommended-7.0.0.tgz", + "integrity": "sha512-A9aPDL78OO12xG2a83DVd+M2QzdBMjn545fbXj40BFJdpt9t//MADkPAwRfpMCBkKi+iECPUTFCb3Jm8SsFG2w==", + "dev": true, + "dependencies": { + "remark-lint": "^10.0.0", + "remark-lint-final-newline": "^3.0.0", + "remark-lint-hard-break-spaces": "^4.0.0", + "remark-lint-list-item-bullet-indent": "^5.0.0", + "remark-lint-list-item-indent": "^4.0.0", + "remark-lint-no-blockquote-without-marker": "^6.0.0", + "remark-lint-no-duplicate-definitions": "^4.0.0", + "remark-lint-no-heading-content-indent": "^5.0.0", + "remark-lint-no-literal-urls": "^4.0.0", + "remark-lint-no-shortcut-reference-image": "^4.0.0", + "remark-lint-no-shortcut-reference-link": "^4.0.0", + "remark-lint-no-undefined-references": "^5.0.0", + "remark-lint-no-unused-definitions": "^4.0.0", + "remark-lint-ordered-list-marker-style": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-preset-lint-recommended/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/remark-preset-lint-recommended/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-preset-lint-recommended/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-preset-lint-recommended/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-preset-lint-recommended/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-retext": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-6.0.0.tgz", + "integrity": "sha512-VYs0p+3G4DKm/KtWx7LV8YPbyX4CjBf1SZcEk2usEv3QK6JK4g5EfurDAPUmGVZOx/NcqOiNbozfGqpl2HQfTA==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/nlcst": "^2.0.0", + "mdast-util-to-nlcst": "^7.0.0", + "parse-latin": "^7.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-retext/node_modules/@types/mdast": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", + "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-retext/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "node_modules/remark-retext/node_modules/unified": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", + "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-retext/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-retext/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-retext/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify/node_modules/@types/mdast": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", + "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-stringify/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "node_modules/remark-stringify/node_modules/unified": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", + "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-textr": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/remark-textr/-/remark-textr-6.1.0.tgz", + "integrity": "sha512-3A61/6Dn8x5wS7f9BubnIjwZfttEw9+PWVFtwOvRzKXLmZDV1mgi9MJeaQ9BNzWhojsSRHWLNa2JHKCOOI5DfA==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "textr": "^0.3.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-textr/node_modules/@types/mdast": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", + "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-textr/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "node_modules/remark-textr/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-textr/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-textr/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-validate-links": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/remark-validate-links/-/remark-validate-links-13.0.1.tgz", + "integrity": "sha512-GWDZWJAQU0+Fsm1GCLNeJoVcE9L3XTVrWCgQZOYREfXqRFIYaSoIBbARZizLm/vBESq+a3GwEBnIflSCNw26tw==", + "dev": true, + "dependencies": { + "@types/hosted-git-info": "^3.0.0", + "@types/mdast": "^4.0.0", + "github-slugger": "^2.0.0", + "hosted-git-info": "^7.0.0", + "mdast-util-to-hast": "^13.0.0", + "mdast-util-to-string": "^4.0.0", + "propose": "0.0.5", + "trough": "^2.0.0", + "unified-engine": "^11.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-validate-links/node_modules/@types/mdast": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", + "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-validate-links/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "node_modules/remark-validate-links/node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-validate-links/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-validate-links/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-validate-links/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-validate-links/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-validate-links/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-validate-links/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark/node_modules/@types/mdast": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", + "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "node_modules/remark/node_modules/unified": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", + "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/resolve": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz", + "integrity": "sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==", + "dev": true, + "peer": true, + "dependencies": { + "is-core-module": "^2.8.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "peer": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=", + "dev": true + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz", + "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^10.2.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.2.1.tgz", + "integrity": "sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==", + "dev": true + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", + "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.3.1", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/textr": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/textr/-/textr-0.3.0.tgz", + "integrity": "sha1-cXNhKGlirI3za3omGft3OhW5t/c=", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/too-wordy": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/too-wordy/-/too-wordy-0.3.4.tgz", + "integrity": "sha512-EU+UA4zHc06TkVQaravNNVdqX763/ENTIOKiKlqSJ6WKCPwLxHjvY3d0uEJYaq92iojyHPwD2iaYbZKjdw3icA==", + "dev": true, + "engines": { + "node": ">=6", + "npm": ">=5" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.0.2.tgz", + "integrity": "sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", + "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "peer": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "peer": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unified": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.1.tgz", + "integrity": "sha512-v4ky1+6BN9X3pQrOdkFIPWAaeDsHPE1svRDxq7YpTc2plkIqFMwukfqM+l0ewpP9EfwARlt9pPFAeWYhHm8X9w==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-args": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/unified-args/-/unified-args-11.0.0.tgz", + "integrity": "sha512-4q3OQ2EbNIaxVX1pMoB/QdFxw9BSOWBGUwn5LK3UJict+6i0ud18A1DZ177+2r5hC2nYFOw1jbCp27ydl44Zhg==", + "dev": true, + "dependencies": { + "@types/text-table": "^0.2.0", + "chalk": "^5.0.0", + "chokidar": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "json5": "^2.0.0", + "minimist": "^1.0.0", + "strip-ansi": "^7.0.0", + "text-table": "^0.2.0", + "unified-engine": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-args/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/unified-engine": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-11.1.0.tgz", + "integrity": "sha512-RS3K5PgNjDRQN9eNIefLUDxpfyWIItmKcjBhD1VnYYT/h7xpheZoZBtb5gtwFyKWZlhKCGRVQknIm1M8qHZfIg==", + "dev": true, + "dependencies": { + "@types/concat-stream": "^2.0.0", + "@types/debug": "^4.0.0", + "@types/is-empty": "^1.0.0", + "@types/node": "^20.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "concat-stream": "^2.0.0", + "debug": "^4.0.0", + "glob": "^10.0.0", + "ignore": "^5.0.0", + "is-empty": "^1.0.0", + "is-plain-obj": "^4.0.0", + "load-plugin": "^5.0.0", + "parse-json": "^7.0.0", + "trough": "^2.0.0", + "unist-util-inspect": "^8.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0", + "vfile-reporter": "^8.0.0", + "vfile-statistics": "^3.0.0", + "yaml": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-engine/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "node_modules/unified-engine/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/unified-engine/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/unified-engine/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/unified-engine/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-engine/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-engine/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-lint-rule": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-2.1.1.tgz", + "integrity": "sha512-vsLHyLZFstqtGse2gvrGwasOmH8M2y+r2kQMoDSWzSqUkQx2MjHjvZuGSv5FUaiv4RQO1bHRajy7lSGp7XWq5A==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "trough": "^2.0.0", + "unified": "^10.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-message-control": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-5.0.0.tgz", + "integrity": "sha512-B2cSAkpuMVVmPP90KCfKdBhm1e9KYJ+zK3x5BCa0N65zpq1Ybkc9C77+M5qwR8FWO7RF3LM5QRRPZtgjW6DUCw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-message-control/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/unified-message-control/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-message-control/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-message-control/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-message-control/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-message-control/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-message-control/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-generated": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", + "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-inspect": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-8.0.0.tgz", + "integrity": "sha512-/3Wn/wU6/H6UEo4FoYUeo8KUePN8ERiZpQYFWYoihOsr1DoDuv80PeB0hobVZyYSvALa2e556bG1A1/AbwU4yg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-inspect/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "node_modules/unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-map": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unist-util-map/-/unist-util-map-1.0.5.tgz", + "integrity": "sha512-dFil/AN6vqhnQWNCZk0GF/G3+Q5YwsB+PqjnzvpO2wzdRtUJ1E8PN+XRE/PRr/G3FzKjRTJU0haqE0Ekl+O3Ag==", + "dev": true, + "dependencies": { + "object-assign": "^4.0.1" + } + }, + "node_modules/unist-util-modify-children": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", + "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "array-iterate": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-modify-children/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "node_modules/unist-util-position": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.1.tgz", + "integrity": "sha512-mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/unist-util-remove-position/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", + "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-to-list-of-char": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/unist-util-to-list-of-char/-/unist-util-to-list-of-char-0.1.3.tgz", + "integrity": "sha512-f8GrLHdhBKfaW6mzJc25BKeUOqhsuiRXlGrXBtb3pmRT3QCuYS+jH4g7Uf52hjV7TLQN4PGnjzrTFMFXAQaprA==", + "dev": true, + "dependencies": { + "unist-util-generated": "^1.1.6", + "unist-util-visit": "^1.4.0" + } + }, + "node_modules/unist-util-to-list-of-char/node_modules/unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-to-list-of-char/node_modules/unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", + "dev": true + }, + "node_modules/unist-util-to-list-of-char/node_modules/unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "dev": true, + "dependencies": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "node_modules/unist-util-to-list-of-char/node_modules/unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "dev": true, + "dependencies": { + "unist-util-is": "^3.0.0" + } + }, + "node_modules/unist-util-visit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.0.tgz", + "integrity": "sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-children": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", + "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-children/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "node_modules/unist-util-visit-parents": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", + "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "peer": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true, + "peer": true + }, + "node_modules/vfile": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.0.tgz", + "integrity": "sha512-Tj44nY/48OQvarrE4FAjUfrv7GZOYzPbl5OD65HxVKwLJKMPU7zmfV8cCgCnzKWnSfYG2f3pxu+ALqs7j22xQQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", + "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/vfile-location/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.0.tgz", + "integrity": "sha512-4QJbBk+DkPEhBXq3f260xSaWtjE4gPKOfulzfMFF8ZNwaPZieWsg3iVlcmF04+eebzpcpeXOOFMfrYzJHVYg+g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-8.1.0.tgz", + "integrity": "sha512-NfHyHdkCcy0BsXiLA3nId29TY7W7hgpc8nd8Soe3imATx5N4/+mkLYdMR+Y6Zvu6BXMMi0FZsD4FLCm1dN85Pg==", + "dev": true, + "dependencies": { + "@types/supports-color": "^8.0.0", + "string-width": "^6.0.0", + "supports-color": "^9.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0", + "vfile-sort": "^4.0.0", + "vfile-statistics": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "node_modules/vfile-reporter/node_modules/supports-color": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/vfile-reporter/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-sort": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-4.0.0.tgz", + "integrity": "sha512-lffPI1JrbHDTToJwcq0rl6rBmkjQmMuXkAxsZPRS9DXbaJQvc642eCg6EGxcX2i1L+esbuhq+2l9tBll5v8AeQ==", + "dev": true, + "dependencies": { + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-sort/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "node_modules/vfile-sort/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-sort/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-sort/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-statistics": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-3.0.0.tgz", + "integrity": "sha512-/qlwqwWBWFOmpXujL/20P+Iuydil0rZZNglR+VNm6J0gpLHwuVM5s7g2TfVoswbXjZ4HuIhLMySEyIw5i7/D8w==", + "dev": true, + "dependencies": { + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-statistics/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "node_modules/vfile-statistics/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-statistics/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-statistics/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/walk-up-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", + "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", + "dev": true + }, + "node_modules/weasel-words": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/weasel-words/-/weasel-words-0.1.1.tgz", + "integrity": "sha1-cTeUZYXHP+RIggE4U70ADF1oek4=", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "peer": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrapped": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wrapped/-/wrapped-1.0.1.tgz", + "integrity": "sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI=", + "dev": true, + "dependencies": { + "co": "3.1.0", + "sliced": "^1.0.1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/write-good": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/write-good/-/write-good-1.0.8.tgz", + "integrity": "sha512-P1Ct7+DNrOcr2JAxDZ3Q5i5sx2LSveu7iLaoUL0A+YiG0GKf0l5+9j3rwMeyh6JeTL1+HfQV1rnwEvzhNIvpFw==", + "dev": true, + "dependencies": { + "adverb-where": "^0.2.2", + "commander": "^2.19.0", + "e-prime": "^0.10.4", + "no-cliches": "^0.3.0", + "passive-voice": "^0.1.0", + "too-wordy": "^0.3.1", + "weasel-words": "^0.1.1" + }, + "bin": { + "write-good": "bin/write-good.js", + "writegood": "bin/write-good.js" + }, + "engines": { + "node": ">=6", + "npm": ">=5" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", + "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/zwitch": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", + "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "requires": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true + }, + "@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/runtime": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", + "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", + "dev": true, + "peer": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.8.tgz", + "integrity": "sha512-3fKhuICS1lMz0plI5ktOE/yEtBRMVxplzRkdn6mJQ197XiY0JnrzYV0+Mxozq3JZ8SBV9Ecurmw1XsGbwOf+Sg==", + "dev": true, + "peer": true, + "requires": { + "core-js-pure": "^3.20.2", + "regenerator-runtime": "^0.13.4" + } + }, + "@eslint/eslintrc": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", + "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", + "dev": true, + "peer": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.2.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "peer": true + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", + "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==", + "dev": true, + "peer": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true, + "peer": true + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + } + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", + "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==", + "dev": true + }, + "@npmcli/config": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-4.1.0.tgz", + "integrity": "sha512-cPQmIQ2Q0vuOfrenrA3isikdMFMAHgzlXV+EmvZ8f2JeJsU5xTU2bG7ipXECiMvPF9nM+QDnMLuIg8QLw9H4xg==", + "dev": true, + "requires": { + "@npmcli/map-workspaces": "^2.0.2", + "ini": "^3.0.0", + "mkdirp-infer-owner": "^2.0.0", + "nopt": "^5.0.0", + "proc-log": "^2.0.0", + "read-package-json-fast": "^2.0.3", + "semver": "^7.3.5", + "walk-up-path": "^1.0.0" + } + }, + "@npmcli/map-workspaces": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.3.tgz", + "integrity": "sha512-X6suAun5QyupNM8iHkNPh0AHdRC2rb1W+MTdMvvA/2ixgmqZwlq5cGUBgmKHUHT2LgrkKJMAXbfAoTxOigpK8Q==", + "dev": true, + "requires": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^8.0.1", + "minimatch": "^5.0.1", + "read-package-json-fast": "^2.0.3" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@npmcli/name-from-folder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", + "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==", + "dev": true + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, + "@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "dev": true, + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, + "@types/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-t3YCerNM7NTVjLuICZo5gYAXYoDvpuuTceCcFQWcDQz26kxUR5uIWolxbIR5jRNIXpMqhOpW/b8imCR1LEmuJw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "requires": { + "@types/ms": "*" + } + }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/hosted-git-info": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-Dmngh7U003cOHPhKGyA7LWqrnvcTyILNgNPmNCxlx7j8MIi54iBliiT8XqVLIQ3GchoOjVAyBzNJVyuaJjqokg==", + "dev": true + }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "@types/is-empty": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.1.tgz", + "integrity": "sha512-a3xgqnFTuNJDm1fjsTjHocYJ40Cz3t8utYpi5GNaxzrJC2HSD08ym+whIL7fNqiqBCdM9bcqD1H/tORWAFXoZw==", + "dev": true + }, + "@types/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true, + "peer": true + }, + "@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "@types/nlcst": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.1.tgz", + "integrity": "sha512-+hL97wfmdLW/unulVgdR+e+8PXbbtZgoYOq3C12H3RKgAZZ38D55Jwej7JBttJ6+oFuwIRYy5qTbE/WugMsCxw==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/node": { + "version": "20.8.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.0.tgz", + "integrity": "sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==", + "dev": true + }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==", + "dev": true + }, + "@types/text-table": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@types/text-table/-/text-table-0.2.3.tgz", + "integrity": "sha512-MUW7DN7e178wJ2dB9rHuhwUWRUJGrl8fCng37BEWV0r2r5VpzkRFRiMfnX6sjXlu4tMn41lrjzsVh/z1XrKc+A==", + "dev": true + }, + "@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "peer": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peer": true, + "requires": {} + }, + "adverb-where": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/adverb-where/-/adverb-where-0.2.5.tgz", + "integrity": "sha512-JiQe2U1UR8l10jPrXv/PmlDhOLZpsxqjvTp+k6Dm5wYDUULdMZytDRmovkXU8X6V9o0sg0FBdetv3VXHAZZK5Q==", + "dev": true + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "peer": true + }, + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "peer": true + }, + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "peer": true, + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + } + }, + "array-iterate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", + "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", + "dev": true + }, + "array.prototype.flat": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + } + }, + "array.prototype.flatmap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", + "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + } + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true, + "peer": true + }, + "axe-core": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz", + "integrity": "sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==", + "dev": true, + "peer": true + }, + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true, + "peer": true + }, + "bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "peer": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "requires": { + "semver": "^7.0.0" + } + }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true + }, + "cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "peer": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "peer": true + }, + "ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "character-entities": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.1.tgz", + "integrity": "sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ==", + "dev": true + }, + "character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true + }, + "character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true + }, + "character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "dev": true + }, + "check-links": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/check-links/-/check-links-1.1.8.tgz", + "integrity": "sha512-lxt1EeQ1CVkmiZzPfbPufperYK0t7MvhdLs3zlRH9areA6NVT1tcGymAdJONolNWQBdCFU/sek59RpeLmVHCnw==", + "dev": true, + "requires": { + "got": "^11.8.5", + "is-relative-url": "^2.0.0", + "p-map": "^2.0.0", + "p-memoize": "^2.1.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "co": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", + "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=", + "dev": true + }, + "collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "compress-brotli": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", + "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", + "dev": true, + "requires": { + "@types/json-buffer": "~3.0.0", + "json-buffer": "~3.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true, + "peer": true + }, + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "core-js-pure": { + "version": "3.20.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.2.tgz", + "integrity": "sha512-CmWHvSKn2vNL6p6StNp1EmMIfVY/pqn3JLAjfZQ8WZGPOlGoO92EkX9/Mk81i6GxvoPXjUqEQnpM3rJ5QxxIOg==", + "dev": true, + "peer": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "peer": true + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decode-named-character-reference": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.1.tgz", + "integrity": "sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w==", + "dev": true, + "requires": { + "character-entities": "^2.0.0" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true + } + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "peer": true + }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "peer": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "dequal": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", + "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==", + "dev": true + }, + "devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "requires": { + "dequal": "^2.0.0" + } + }, + "dns-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "dev": true, + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "dns-socket": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/dns-socket/-/dns-socket-4.2.2.tgz", + "integrity": "sha512-BDeBd8najI4/lS00HSKpdFia+OvUMytaVjfzR9n5Lq8MlZRSvtbI+uLtx1+XmQFls5wFU9dssccTmQQ6nfpjdg==", + "dev": true, + "requires": { + "dns-packet": "^5.2.4" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "peer": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "e-prime": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/e-prime/-/e-prime-0.10.4.tgz", + "integrity": "sha512-tzBmM2mFSnAq5BuxPSyin6qXb3yMe1wufJN7L7ZPcEWS5S+jI2dhKQEoqHVEcSMMXo/j5lcWpX5jzA6wLSmX6w==", + "dev": true + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "peer": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "peer": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "peer": true + }, + "eslint": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.6.0.tgz", + "integrity": "sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==", + "dev": true, + "peer": true, + "requires": { + "@eslint/eslintrc": "^1.0.5", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.0", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.3.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.2.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "peer": true + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "peer": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "peer": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "peer": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "peer": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "peer": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-module-utils": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz", + "integrity": "sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==", + "dev": true, + "peer": true, + "requires": { + "debug": "^3.2.7", + "find-up": "^2.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "peer": true, + "requires": { + "ms": "^2.1.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "peer": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "peer": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "peer": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "peer": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "peer": true + } + } + }, + "eslint-plugin-import": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", + "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "dev": true, + "peer": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.2", + "has": "^1.0.3", + "is-core-module": "^2.8.0", + "is-glob": "^4.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.5", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.12.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "peer": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "peer": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true, + "peer": true + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", + "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", + "dev": true, + "peer": true, + "requires": { + "@babel/runtime": "^7.16.3", + "aria-query": "^4.2.2", + "array-includes": "^3.1.4", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.3.5", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.7", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.2.1", + "language-tags": "^1.0.5", + "minimatch": "^3.0.4" + } + }, + "eslint-plugin-react": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", + "integrity": "sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==", + "dev": true, + "peer": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flatmap": "^1.2.5", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.0.4", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.0", + "object.values": "^1.1.5", + "prop-types": "^15.7.2", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.6" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "peer": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "dev": true, + "peer": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "peer": true + } + } + }, + "eslint-plugin-react-hooks": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz", + "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==", + "dev": true, + "peer": true, + "requires": {} + }, + "eslint-scope": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", + "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "dev": true, + "peer": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "peer": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "peer": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "dev": true, + "peer": true + }, + "espree": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", + "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", + "dev": true, + "peer": true, + "requires": { + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.1.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "peer": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "peer": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "peer": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "peer": true + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "peer": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "peer": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true, + "peer": true + }, + "fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "dev": true, + "requires": { + "format": "^0.2.0" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "peer": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "peer": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", + "dev": true, + "peer": true + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true, + "peer": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true, + "peer": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "peer": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "dev": true + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "peer": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "dev": true, + "peer": true, + "requires": { + "type-fest": "^0.20.2" + }, + "dependencies": { + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "peer": true + } + } + }, + "got": { + "version": "11.8.5", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", + "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "dev": true, + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "peer": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "peer": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "peer": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "requires": { + "lru-cache": "^10.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "dev": true + } + } + }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "peer": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-meta-resolve": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.0.3.tgz", + "integrity": "sha512-fpAppnBpZ3ymQ/dPP97TNsco1HB5+V9SYJ3chY50PP8xn4U/w+Y6ovWBmTImB/prmGsTjzPh8pQYY+EVBlr9mw==", + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "peer": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.0.tgz", + "integrity": "sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw==", + "dev": true + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "peer": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "dev": true + }, + "is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dev": true, + "requires": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "peer": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true, + "peer": true + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "peer": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "peer": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "dev": true + }, + "is-empty": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", + "integrity": "sha1-3pu1snhzigWgsJpX4ftNSjQan2s=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "dev": true + }, + "is-ip": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", + "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", + "dev": true, + "requires": { + "ip-regex": "^4.0.0" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "peer": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "peer": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-online": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/is-online/-/is-online-8.5.1.tgz", + "integrity": "sha512-RKyTQx/rJqw2QOXHwy7TmXdlkpe0Hhj7GBsr6TQJaj4ebNOfameZCMspU5vYbwBBzJ2brWArdSvNVox6T6oCTQ==", + "dev": true, + "requires": { + "got": "^11.8.5", + "p-any": "^2.0.0", + "p-timeout": "^3.0.0", + "public-ip": "^4.0.1" + } + }, + "is-plain-obj": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz", + "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-relative-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-relative-url/-/is-relative-url-2.0.0.tgz", + "integrity": "sha1-cpAtf+BLPUeS59sV+duEtyBMnO8=", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "peer": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "peer": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "peer": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "peer": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "peer": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true, + "peer": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "jsx-ast-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", + "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", + "dev": true, + "peer": true, + "requires": { + "array-includes": "^3.1.3", + "object.assign": "^4.1.2" + } + }, + "keyv": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.4.1.tgz", + "integrity": "sha512-PzByhNxfBLnSBW2MZi1DF+W5+qB/7BMpOokewqIvqS8GFtP7xHm2oeGU72Y1fhtfOv/FiEnI4+nyViYDmUChnw==", + "dev": true, + "requires": { + "compress-brotli": "^1.3.8", + "json-buffer": "3.0.1" + } + }, + "language-subtag-registry": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", + "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", + "dev": true, + "peer": true + }, + "language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "dev": true, + "peer": true, + "requires": { + "language-subtag-registry": "~0.3.2" + } + }, + "levenshtein-edit-distance": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/levenshtein-edit-distance/-/levenshtein-edit-distance-1.0.0.tgz", + "integrity": "sha1-iVuvR4zOi1waDSfkXXwdl4pmHkk=", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "peer": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lines-and-columns": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", + "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "dev": true + }, + "load-plugin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-5.0.0.tgz", + "integrity": "sha512-jTz8tvC0BTMtof27lTSV5SAOnCRT0Z++k+S3QeQ5CrF8ZAS5L2nhi3euf4ZhJyDkds+nOQGyPcFqdQZ9s8ELkg==", + "dev": true, + "requires": { + "@npmcli/config": "^4.0.0", + "import-meta-resolve": "^2.0.0" + } + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "peer": true + }, + "longest-streak": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", + "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "peer": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "dev": true + }, + "mdast-comment-marker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-3.0.0.tgz", + "integrity": "sha512-bt08sLmTNg00/UtVDiqZKocxqvQqqyQZAg1uaRuO/4ysXV5motg7RolF5o5yy/sY1rG0v2XgZEqFWho1+2UquA==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-mdx-expression": "^2.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + } + } + }, + "mdast-util-directive": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz", + "integrity": "sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + } + } + }, + "mdast-util-from-markdown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", + "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", + "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + } + } + }, + "mdast-util-frontmatter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", + "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "escape-string-regexp": "^5.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", + "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true + } + } + }, + "mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "dev": true, + "requires": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + } + }, + "mdast-util-mdx-expression": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", + "dev": true, + "requires": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + } + } + }, + "mdast-util-mdx-jsx": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz", + "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", + "dev": true, + "requires": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^5.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dev": true, + "requires": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + } + } + }, + "mdast-util-phrasing": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.0.0.tgz", + "integrity": "sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", + "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + } + } + }, + "mdast-util-to-hast": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.0.2.tgz", + "integrity": "sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", + "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + } + } + }, + "mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + } + } + }, + "mdast-util-to-nlcst": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-7.0.0.tgz", + "integrity": "sha512-YfWgABD6izaK7Tzx37V4268THKeusHU+S2qet98h9vrffMxwd/2jqFKxNYz9cCAPYA8p/5BXQuF313JuVFDC9A==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "@types/nlcst": "^2.0.0", + "@types/unist": "^3.0.0", + "nlcst-to-string": "^3.0.0", + "unist-util-position": "^5.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", + "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "nlcst-to-string": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-3.1.1.tgz", + "integrity": "sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==", + "dev": true, + "requires": { + "@types/nlcst": "^1.0.0" + }, + "dependencies": { + "@types/nlcst": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-1.0.2.tgz", + "integrity": "sha512-ykxL/GDDUhqikjU0LIywZvEwb1NTYXTEWf+XgMSS2o6IXIakafPccxZmxgZcvJPZ3yFl2kdL1gJZz3U3iZF3QA==", + "dev": true, + "requires": { + "@types/unist": "^2" + } + }, + "@types/unist": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.8.tgz", + "integrity": "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==", + "dev": true + } + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "mdast-util-to-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", + "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + } + } + }, + "micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "dev": true, + "requires": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "micromark-core-commonmark": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz", + "integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==", + "dev": true, + "requires": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "micromark-extension-frontmatter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", + "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", + "dev": true, + "requires": { + "fault": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "dev": true, + "requires": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "dev": true, + "requires": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "dev": true, + "requires": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "dev": true, + "requires": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "dev": true, + "requires": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "dev": true, + "requires": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "dev": true, + "requires": { + "micromark-util-symbol": "^2.0.0" + } + }, + "micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "dev": true, + "requires": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "dev": true, + "requires": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "dev": true, + "requires": { + "micromark-util-symbol": "^2.0.0" + } + }, + "micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "dev": true, + "requires": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "dev": true + }, + "micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "dev": true + }, + "micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "dev": true, + "requires": { + "micromark-util-symbol": "^2.0.0" + } + }, + "micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "dev": true, + "requires": { + "micromark-util-types": "^2.0.0" + } + }, + "micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "dev": true, + "requires": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "micromark-util-subtokenize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz", + "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==", + "dev": true, + "requires": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "dev": true + }, + "micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "dev": true + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "peer": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "mkdirp-infer-owner": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", + "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true, + "peer": true + }, + "nlcst-to-string": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz", + "integrity": "sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==", + "dev": true + }, + "no-cliches": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/no-cliches/-/no-cliches-0.3.4.tgz", + "integrity": "sha512-oUqnng1vhKLaA4GR+OzVbLuZZ7OOguKCtMHxHMiyP8+9mXidKfoCyc030LbAyNI3xcgCHHyitK3Q8wP+w6DwVQ==", + "dev": true, + "requires": {} + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true, + "peer": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "peer": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.hasown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", + "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "dev": true, + "peer": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "peer": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-any": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-any/-/p-any-2.1.0.tgz", + "integrity": "sha512-JAERcaMBLYKMq+voYw36+x5Dgh47+/o7yuv2oQYuSSUml4YeqJEFznBrY2UeEkoSHqBua6hz518n/PsowTYLLg==", + "dev": true, + "requires": { + "p-cancelable": "^2.0.0", + "p-some": "^4.0.0", + "type-fest": "^0.3.0" + } + }, + "p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-memoize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-memoize/-/p-memoize-2.1.0.tgz", + "integrity": "sha512-c6+a2iV4JyX0r4+i2IBJYO0r6LZAT2fg/tcB6GQbv1uzZsfsmKT7Ej5DRT1G6Wi7XUJSV2ZiP9+YEtluvhCmkg==", + "dev": true, + "requires": { + "mem": "^4.0.0", + "mimic-fn": "^1.0.0" + } + }, + "p-some": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-some/-/p-some-4.1.0.tgz", + "integrity": "sha512-MF/HIbq6GeBqTrTIl5OJubzkGU+qfFhAFi0gnTAK6rgEIJIknEiABHOTtQu4e6JiXjIwuMPMUFQzyHh5QjCl1g==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0", + "p-cancelable": "^2.0.0" + } + }, + "p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "peer": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + } + }, + "parse-json": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.0.tgz", + "integrity": "sha512-ihtdrgbqdONYD156Ap6qTcaGcGdkdAxodO1wLqQ/j7HP1u2sFYppINiq4jyC8F+Nm+4fVufylCV00QmkTHkSUg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "dependencies": { + "json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true + }, + "type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true + } + } + }, + "parse-latin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", + "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", + "dev": true, + "requires": { + "@types/nlcst": "^2.0.0", + "@types/unist": "^3.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-modify-children": "^4.0.0", + "unist-util-visit-children": "^3.0.0", + "vfile": "^6.0.0" + }, + "dependencies": { + "@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "nlcst-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", + "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", + "dev": true, + "requires": { + "@types/nlcst": "^2.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "passive-voice": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/passive-voice/-/passive-voice-0.1.0.tgz", + "integrity": "sha1-Fv+RrkC6DpLEPmcXY/3IQqcCcLE=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "peer": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "peer": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "peer": true + }, + "path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "requires": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "dev": true + } + } + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "peer": true + }, + "proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "peer": true + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "peer": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "propose": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/propose/-/propose-0.0.5.tgz", + "integrity": "sha1-SKBl2ex9TIZn9AULFcSi2F28pWs=", + "dev": true, + "requires": { + "levenshtein-edit-distance": "^1.0.0" + } + }, + "public-ip": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/public-ip/-/public-ip-4.0.4.tgz", + "integrity": "sha512-EJ0VMV2vF6Cu7BIPo3IMW1Maq6ME+fbR0NcPmqDfpfNGIRPue1X8QrGjrg/rfjDkOsIkKHIf2S5FlEa48hFMTA==", + "dev": true, + "requires": { + "dns-socket": "^4.2.2", + "got": "^11.8.5", + "is-ip": "^3.1.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "peer": true + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true + }, + "quotation": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/quotation/-/quotation-2.0.3.tgz", + "integrity": "sha512-yEc24TEgCFLXx7D4JHJJkK4JFVtatO8fziwUxY4nB/Jbea9o9CVS3gt22mA0W7rPYAGW2fWzYDSOtD94PwOyqA==", + "dev": true + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "peer": true + }, + "read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true, + "peer": true + }, + "regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "peer": true + }, + "remark": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", + "integrity": "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", + "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "unified": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", + "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-cli": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-12.0.1.tgz", + "integrity": "sha512-2NAEOACoTgo+e+YAaCTODqbrWyhMVmlUyjxNCkTrDRHHQvH6+NbrnqVvQaLH/Q8Ket3v90A43dgAJmXv8y5Tkw==", + "dev": true, + "requires": { + "import-meta-resolve": "^4.0.0", + "markdown-extensions": "^2.0.0", + "remark": "^15.0.0", + "unified-args": "^11.0.0" + }, + "dependencies": { + "import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "dev": true + } + } + }, + "remark-frontmatter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", + "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-frontmatter": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0", + "unified": "^11.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", + "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "unified": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", + "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-heading-gap": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-heading-gap/-/remark-heading-gap-6.0.0.tgz", + "integrity": "sha512-xsJJZ0BC9J6XFY0c7segxuSKrJ95EDHEh06+b5FOgbhyJ9Z7yWKxWEJpsa2Bp4gkeMAEkoODH4mjWIV0JD2Urg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "unified": "^11.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", + "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "unified": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", + "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-10.0.0.tgz", + "integrity": "sha512-E8yHHDOJ8b+qI0G49BRu24pe8t0fNNBWv8ENQJpCGNrVeTeyBIGEbaUe1yuF7OG8faA6PVpcN/pqWjzW9fcBWQ==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "remark-message-control": "^8.0.0", + "unified": "^11.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-blockquote-indentation": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-4.0.0.tgz", + "integrity": "sha512-hdUvn+KsJbBKpY9jLY01PmfpJ/WGhLu9GJMXQGU8ADXJc+F5DWSgKAr6GQ1IUKqvGYdEML/KZ61WomWFUuecVA==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-checkbox-character-style": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-checkbox-character-style/-/remark-lint-checkbox-character-style-5.0.0.tgz", + "integrity": "sha512-K0G/Nok59fb2q5KUxcemBVt+ymnhTkDVLJAatZ4PAh9At8y0DGctHdU27jWsuvO0Fs7Zy62Usk7IJE2VO89p1w==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-checkbox-content-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-checkbox-content-indent/-/remark-lint-checkbox-content-indent-5.0.0.tgz", + "integrity": "sha512-7L25a7TEfdogFSh4HDOnB+GTTTEiXJDMlceUPft9bzIjElI8Hm2+a2D8jUQn4ahj+j/3LmdZW4GjAeyfdPuqTA==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-code": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-code/-/remark-lint-code-2.0.0.tgz", + "integrity": "sha1-A+DC6Qru2+h1qHlf6s9XmIt9lXw=", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-visit": "^1.0.0" + }, + "dependencies": { + "unified-lint-rule": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", + "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", + "dev": true, + "requires": { + "wrapped": "^1.0.1" + } + }, + "unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", + "dev": true + }, + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "dev": true, + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "dev": true, + "requires": { + "unist-util-is": "^3.0.0" + } + } + } + }, + "remark-lint-code-block-style": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-4.0.0.tgz", + "integrity": "sha512-LKBKMVruEO0tzDnnnqi1TfUcnwY6Mo7cVtZM4E4pKt3KMhtvgU2wD68/MxDOEJd0pmnLrEgIadv74bY0gWhZpg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-definition-case": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-definition-case/-/remark-lint-definition-case-4.0.0.tgz", + "integrity": "sha512-XBmMmj8ii0KZUuJf7ZaVXDGp2+DWE02re9qn/6mV23rBpsDmpz7U1lQWRlwFQIE5q5bxIxP5pX7hDeTH0Egy9Q==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-definition-spacing": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-4.0.0.tgz", + "integrity": "sha512-t6nP8unz6z/DLBTWeOmDFHPFbX3E2PbNgt2fTazRbVnMC6z3o25hBzg5hI6DL0MPt2ZTRX++rJsGRjb+vgh/tQ==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-emphasis-marker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-emphasis-marker/-/remark-lint-emphasis-marker-4.0.0.tgz", + "integrity": "sha512-xIRiB4PFWUOyIslN/UOPL6Lh+J0VD4R11+jo+W4hpGMNsg58l+2SgtdbinlXzDeoBxmaaka9n/sYpJ7cJWEIPQ==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-fenced-code-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-4.0.0.tgz", + "integrity": "sha512-Zs0wJd4nRvBo/9NWQVfWg5Ykapbo0Zzw/SyZc3f0h73S1gTZZcfeU+bA5oDivlBdcUgLBsyHRE0QaoaVvN3/Wg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "quotation": "^2.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-fenced-code-marker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-4.0.0.tgz", + "integrity": "sha512-WFN88Rx78m4/HSbW3Kx2XAYbVfzYns4bJd9qpwDD90DA3nc59zciYd01xi6Bk3n9vSs5gIlmG7xkwxVHHJ8KCA==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-file-extension": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-3.0.0.tgz", + "integrity": "sha512-wrOKiGvcl/ftB7FkeX2/l13ALvhKXV77HGR8AXo86cVY2pD+K0WdOC52DV3ldgpUXpWzE9kcgF8bbkxwzKpFFg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "quotation": "^2.0.0", + "unified-lint-rule": "^3.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-final-definition": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-4.0.1.tgz", + "integrity": "sha512-51T9oSdA7wuhjSdgGo0snO1BY39Igt9cJQi7XpgtgFsbfQk8zSSAUAc/rLabY6+YCTpcPs6qmwvLXZ4mPX6Qlg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-mdx": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-final-newline/-/remark-lint-final-newline-3.0.0.tgz", + "integrity": "sha512-NaPyn6FiOn3IV/6gIcwWfJmgraPT2IaVLjhakfPglZkKVfn/FrOfETyY8Bp+HLoSRI9967OH0yRDnK7/pPIWeQ==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "unified-lint-rule": "^3.0.0", + "vfile-location": "^5.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-hard-break-spaces": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-4.0.0.tgz", + "integrity": "sha512-zCTq7/xfM0ZL3bMopXse9DH2nk38wE1LrxmYwnTrqASBLnEAJWE2U2//tRGVMEBfSAnNvmIo96twz6zkLWjbGA==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-heading-increment": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-heading-increment/-/remark-lint-heading-increment-4.0.0.tgz", + "integrity": "sha512-TARnsjXWzY/yLwxh/y4+KnDSXO3Koue8Crp55T8G9pjj3vw+XgTAG35zSpIIY9HmGiQ2a3R0SOj2pAxATpnckg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-mdx": "^3.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-heading-style": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-4.0.0.tgz", + "integrity": "sha512-dQ6Jul5K0+aNUvrq4W7H0+osSoC9hsmwHZqBFq000+eMP/hWJqI8tuudw1rap8HHYuOsKLRbB5q+Fr7G+3Vw+Q==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-heading-style": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "mdast-util-heading-style": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-3.0.0.tgz", + "integrity": "sha512-tsUfM9Kj9msjlemA/38Z3pvraQay880E3zP2NgIthMoGcpU9bcPX9oSM6QC/+eFXGGB4ba+VCB1dKAPHB7Veug==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0" + } + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-heading-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-heading-whitespace/-/remark-lint-heading-whitespace-1.0.0.tgz", + "integrity": "sha512-DykoBIXNbkihg64D+mztSOv3l82RTH4tIZW/HUB4QM4NpIEB+pVIPQpCYD0K4pTgvKiwoqsj4NY8qJ1EhNHAmQ==", + "dev": true, + "requires": { + "mdast-util-to-string": "^1.0.4", + "unified-lint-rule": "^1.0.2", + "unist-util-visit": "^1.3.0" + }, + "dependencies": { + "mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", + "dev": true + }, + "unified-lint-rule": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", + "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", + "dev": true, + "requires": { + "wrapped": "^1.0.1" + } + }, + "unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", + "dev": true + }, + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "dev": true, + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "dev": true, + "requires": { + "unist-util-is": "^3.0.0" + } + } + } + }, + "remark-lint-link-title-style": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-link-title-style/-/remark-lint-link-title-style-4.0.0.tgz", + "integrity": "sha512-cihTO5dkhjMj/evYIDAvRdQHD82OQeF4fNAq8FLb81HmFKo77VlSF6CK55H1bvlZogfJG58uN/5d1tSsOdcEbg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-list-item-bullet-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-bullet-indent/-/remark-lint-list-item-bullet-indent-5.0.0.tgz", + "integrity": "sha512-qq22QaxsDjfsL7aWGIPmP3P0N99CJBQQW1+iSrhYAMCDzqVlw6I3wPNAeR6s8mcoeHT8YlT6eQH3V8xJ0SlW6w==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-list-item-content-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-content-indent/-/remark-lint-list-item-content-indent-4.0.0.tgz", + "integrity": "sha512-L4GZgWQQ54qWKbnDle3dbEOtnq+qdmZJ70lpM3yMFEMHs4xejqPKsIoiYeUtIV0rYHHCWS7IlLzcgYUK9vENQw==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-list-item-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-4.0.0.tgz", + "integrity": "sha512-Yd6/g8CH9e4vlPAPNgl7F575uKhP+pTo/qwGkE61GOcgEVNJ/529hjumUhyQ4sOAX0YAPAjxvq6fJvb4AhVOOA==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-list-item-spacing": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-spacing/-/remark-lint-list-item-spacing-5.0.0.tgz", + "integrity": "sha512-d6p+1tcwNE+Pp6Tu2DwiKlyC1zYY3f1igL6AlcBIH0RmROVEfZR4IDFH/LcVyTkzqh1lPMFAJXWK4bpScpcO3g==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-maximum-heading-length": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-maximum-heading-length/-/remark-lint-maximum-heading-length-4.0.0.tgz", + "integrity": "sha512-UCQxUd0zZyi6RUbpoK5KsxC50ppVqVk0hSgrSPot4wB6PHRgYMALU2fDkEcAjLDc/Y2TayG3IaZEKdqe+84Cwg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-string": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0" + } + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-maximum-line-length": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-4.0.1.tgz", + "integrity": "sha512-hQlh8UrRfhkO4FU7z7t1Bu5ethj1y2iBncO5AOWF38RAmlHaZdB2lQxNA8IvUZITGJYpT1aThdFTEf+58lv08Q==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-mdx": "^3.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-auto-link-without-protocol": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-3.1.2.tgz", + "integrity": "sha512-mPIdFOGxdDhCMa2qIzjzjDzDoQeyK+/1BBgsseqThuBtoAoXR5l1TZfII2isNbBo6L8d+fMFdx1/3qALoDjtcA==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "unified": "^10.0.0", + "unified-lint-rule": "^2.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + } + }, + "remark-lint-no-blockquote-without-marker": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-6.0.0.tgz", + "integrity": "sha512-fBhoTpkWcl5tG4FdwPdJIyb8XLrdr6MdLk1+K2BQ6Rom3rRsIYvuox4ohxOunNrXuth8xyw8kC6wDmODR44oFw==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-directive": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-location": "^5.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-consecutive-blank-lines": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-5.0.0.tgz", + "integrity": "sha512-HsDZbFlelBVO3mEJDXd9v4z0HLB8pqxWnsV+I4ILYFp5lKYf6NxJaLBWFtP1gAg1+95WxityGLkGtYqmicDjpg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-directive": "^3.0.0", + "mdast-util-mdx": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-dead-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-dead-urls/-/remark-lint-no-dead-urls-1.1.0.tgz", + "integrity": "sha512-it3EZmMQ+hwGhUf60NkXN0mMIFuFkS0cxdbgEbhZ/Fj1PlUBpe3gDBtWJ/sqNwSNvQlNSzpvMQkNHSoAhlsVjA==", + "dev": true, + "requires": { + "check-links": "^1.1.8", + "is-online": "^8.2.1", + "unified-lint-rule": "^1.0.4", + "unist-util-visit": "^2.0.1" + }, + "dependencies": { + "unified-lint-rule": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", + "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", + "dev": true, + "requires": { + "wrapped": "^1.0.1" + } + }, + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true + }, + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + } + } + }, + "remark-lint-no-duplicate-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-definitions/-/remark-lint-no-duplicate-definitions-4.0.0.tgz", + "integrity": "sha512-21fcOACkCyhNsHkedKlpvqIywYx+5zGR507bW8e59gzdGhTbnBwQ9du4ACmN9jxPTfIBhUVMz0bWezkGrHE7Bg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-duplicate-headings": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-headings/-/remark-lint-no-duplicate-headings-4.0.0.tgz", + "integrity": "sha512-FgBU/JCdR5MitHM+hnOcgBGO5ZCNV8epzuHIglFlJeb8ow23YhhNgmGvyk7RGrZrYuU5R9uQq23N4dF0g9atCA==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-string": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0" + } + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-emphasis-as-heading": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-emphasis-as-heading/-/remark-lint-no-emphasis-as-heading-4.0.0.tgz", + "integrity": "sha512-JViGYbuO/xzZThK+qVTNjtLM0v1xMTWFTWt2OJzAkDaGS6T9ZB5ZtRVSBFEMG0SF3dvpJwxe+3ABTsuPBdlYsA==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-empty-sections": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-empty-sections/-/remark-lint-no-empty-sections-4.0.0.tgz", + "integrity": "sha512-Tx1nCu7Dq3dsJ500402sSvM0uVK/6khSuEjx8K8u9aHN+Y4vjL6h88xVzdzCmZq2J2yqyFnvMjG1y7lQv+DRvg==", + "dev": true, + "requires": { + "mdast-util-to-string": "^1.0.2", + "unified-lint-rule": "^1.0.0", + "unist-util-visit": "^1.0.0" + }, + "dependencies": { + "mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", + "dev": true + }, + "unified-lint-rule": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", + "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", + "dev": true, + "requires": { + "wrapped": "^1.0.1" + } + }, + "unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", + "dev": true + }, + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "dev": true, + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "dev": true, + "requires": { + "unist-util-is": "^3.0.0" + } + } + } + }, + "remark-lint-no-empty-url": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-empty-url/-/remark-lint-no-empty-url-4.0.0.tgz", + "integrity": "sha512-2zJxrSnL42wGe+CSZepBzoj8d/FeL/QU8GM6TEO/5qGfXwvJD7s2v6q074UJU0CAaWlWRqSxElescwk3yGQddA==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-file-name-articles": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-3.0.0.tgz", + "integrity": "sha512-il4IseupahbV2TVfFjfDVL/EQw7jBWVlMVsv4K2cgl5uPIjiCjFGQypqKnWl6pZDN0oNOs/DE8gBdyuDjldJaA==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-file-name-consecutive-dashes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-3.0.0.tgz", + "integrity": "sha512-3vSI1LOQlu8NSCpWLsKELa8dS9HU+YVZE0U43/DNkdEcnZmlJLpTHQjBTMZUHQipRgoOO+TOSyXFyN/H+2lbuQ==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-file-name-irregular-characters": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-irregular-characters/-/remark-lint-no-file-name-irregular-characters-3.0.0.tgz", + "integrity": "sha512-DhGreliHNU7lLTARQujsaLAn8fUPY0V+H0LSmOUuowBZPtIRWeNdQhunSp96RvsuYdqAdERXe0WuH58i3pRqrg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-file-name-mixed-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-mixed-case/-/remark-lint-no-file-name-mixed-case-3.0.0.tgz", + "integrity": "sha512-MXXNHdGB6P46itkf8gRP0kxQL85KfAj9YOOBqNtGsgI/8J5rsyM/rz1Ac20Xe+5C5oGi71+7EO/TExKu/+7dfw==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-file-name-outer-dashes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-3.0.0.tgz", + "integrity": "sha512-3kgamCp39mdlCtqF/+JLwwS4VpSj5wvVwRythUfrpW7993I9kF67dBsaU545aEzWSK+UJZqjb40i0m2VfnBRfQ==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-heading-content-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-content-indent/-/remark-lint-no-heading-content-indent-5.0.0.tgz", + "integrity": "sha512-psYSlD2BjcVkgpeXOLwPcYFBrbtJWp8E8JX1J4vSfoHPeY6aIxgYxXkf57cjGTApfRL8xawBmMDiF1FgQvpZYg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-heading-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-indent/-/remark-lint-no-heading-indent-5.0.0.tgz", + "integrity": "sha512-JWGIWhaEzH00HywI0DHex92tJ5Mw7l11shQ6/MGhRjYsHMRWcwWcVeOuktVMe/BiQbg0hRoE4+g0z2VgUD6Cqw==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-heading-like-paragraph": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-like-paragraph/-/remark-lint-no-heading-like-paragraph-4.0.0.tgz", + "integrity": "sha512-6P22xHF+2omrQUA9ujQ5yBUlZr3goaAxoa1t3wNSIydzqkbgwLS+RlpGsVvilW1Q8h4JgWpB42Zpflat6xr90g==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-heading-punctuation": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-punctuation/-/remark-lint-no-heading-punctuation-4.0.0.tgz", + "integrity": "sha512-7V23C3Q4yX9zEOLZdbv6o8wVxxeWB/F+h9by55zPyk2AwbqF2t2xevnAmN3XFmKZABDTqLwjQxtK6bCVv/S1PQ==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-string": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0" + } + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-inline-padding": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-4.1.2.tgz", + "integrity": "sha512-dGyhWsiqCZS3Slob0EVBUfsFBbdpMIBCvb56LlCgaHbnLsnNYx8PpF/wA5CgsN8BXIbXfRpyPB5cIJwIq5taYg==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "unified": "^10.0.0", + "unified-lint-rule": "^2.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-visit": "^4.0.0" + } + }, + "remark-lint-no-literal-urls": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-4.0.0.tgz", + "integrity": "sha512-rl/3Ai4Ax9IH/fRpOJZuXk1HgYX6oFTauhmBOilpqbq/YT2kN3FuXaneXdRfKv1bgMdHaLKxHWxGj/mDyA2n8w==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-character": "^2.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0" + } + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-multiple-toplevel-headings": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-4.0.0.tgz", + "integrity": "sha512-JW11iYxza7asDdhQuKfr8SH1u4NBOCQ4U7Ru0HrKCPcT4y/AB1C1il5uMQzbcervgYPBq69xzyQ24+AJeL0t3A==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-mdx": "^3.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-reference-like-url": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-reference-like-url/-/remark-lint-no-reference-like-url-4.0.0.tgz", + "integrity": "sha512-YkP8qWdrWDr9s8JLbJoC/U5Z0fU7hpa59Nin0i8zEOtD9coiYoI/YtXRKqSXuAKDmweb+JckhqtKuGJS5u77+w==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-repeat-punctuation": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/remark-lint-no-repeat-punctuation/-/remark-lint-no-repeat-punctuation-0.1.4.tgz", + "integrity": "sha512-JJduCs4FimdBcR1AB576SqIYOjt+7t8OjTnnlZMvjnw7lzkuL0+nNNHyNXVPaK6jxaLjEUhrH2/smU6vZFUT7g==", + "dev": true, + "requires": { + "unified-lint-rule": "^1.0.3", + "unist-util-map": "^1.0.4", + "unist-util-to-list-of-char": "^0.1.3" + }, + "dependencies": { + "unified-lint-rule": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", + "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", + "dev": true, + "requires": { + "wrapped": "^1.0.1" + } + } + } + }, + "remark-lint-no-shell-dollars": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-4.0.0.tgz", + "integrity": "sha512-ye2h8FzjsgqqQV0HHN2g9N4FqI3eD9Gpgu7tU5ADIJyQ3mUJdwBoFn7IlGnpmumR1fb/l6u/AhRavIZxXYqG+Q==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "collapse-white-space": "^2.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-shortcut-reference-image": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-4.0.0.tgz", + "integrity": "sha512-YEiCpW5F/8/LZyxlOuVK2L/n0NJ1AB0AJK7oP39OVyEk3Xl7w+JQi6nZ3KiH6REh+PWGqKn6M0KEPL9cT/iAOw==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-shortcut-reference-link": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-4.0.0.tgz", + "integrity": "sha512-6jka2Zz3I6G2MvDcKrwADYhTOxHMFMK854u1cfBEIH5/XnCCXROtoqiiDtbZw+NJqbmwsBKvGL4t2gnmEJUmgg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-table-indentation": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-5.0.0.tgz", + "integrity": "sha512-MaLmnzgirpnRiRjWwrsyOX0RmP2eG4YAv169MtsxTVa6O3CpUDwTuTzivudE9L0kVvTlyF9DXEmdyjm85LDyVA==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-location": "^5.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-tabs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-tabs/-/remark-lint-no-tabs-4.0.0.tgz", + "integrity": "sha512-rQR7LDdcw047ajB3D+v9uzdB8aZfZtEdlUJvQXKkcVDteWiuXGC3PcIrmM/8n3J/wlFMuwoAaW2IcdlJf8HzXQ==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "vfile-location": "^5.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-undefined-references": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-undefined-references/-/remark-lint-no-undefined-references-5.0.0.tgz", + "integrity": "sha512-O0q8bHpRHK1T85oqO+uep4BkvQnZZp3y+wahDeeLLq9dCJfF56sq6Tt5OOTt1BAOZlpobS3OPQHUiJWYP6hX1w==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-location": "^5.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-no-unused-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-unused-definitions/-/remark-lint-no-unused-definitions-4.0.0.tgz", + "integrity": "sha512-YCZ6k575NCTx7mnN+9ls0G6YgMsZHi0LYQqfLW8MNVHBtbpTBvfmk8I39bmsvuKWeBD98weZoXSDqIiIGg+Q/g==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-ordered-list-marker-style": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-4.0.0.tgz", + "integrity": "sha512-xZ7Xppy5fzACH4b9h1b4lTzVtNY2AlUkNTfl1Oe6cIKN8tk3juFxN0wL2RpktPtSZ7iRIabzFmg6l8WPhlASJA==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "micromark-util-character": "^2.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-ordered-list-marker-value": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-4.0.0.tgz", + "integrity": "sha512-7UjNU2Nv9LGEONTU9GPmTVoNoGKD5aL1X2xHzMbSJiTc50bfcazYqZawO+qj1pQ04WPhto1qHnl0HRB5wwSVwA==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-phrasing": "^4.0.0", + "micromark-util-character": "^2.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-rule-style": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-4.0.0.tgz", + "integrity": "sha512-Kt7IHMB5IbLgRFKaFUmB895sV3PTD0MBgN9CvXKxr1wHFF43S6tabjFIBSoQqyJRlhH0S3rK6Lvopofa009gLg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-strong-marker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-4.0.0.tgz", + "integrity": "sha512-YcvuzakYhQWdCH+1E30sUY+wyvq+PNa77NZAMAYO/cS/pZczFB+q4Ccttw4Q+No/chX8oMfe0GYtm8dDWLei/g==", + "dev": true, "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/mdast": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } } }, - "remark-lint-table-pipe-alignment": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/remark-lint-table-pipe-alignment/-/remark-lint-table-pipe-alignment-3.1.3.tgz", - "integrity": "sha512-bnE8WrB4kSrN+Yr+xN2GHWVgGukeSFU43qPMrpCzTyOSbzep366wORlFKqZmyFPEkIZ/uAUFS0Qm9DND66Yz/A==", + "remark-lint-table-cell-padding": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-5.0.0.tgz", + "integrity": "sha512-LNyiHDQZBIOqcQGG1tYsZHW7g0v8OyRmRgDrD5WEsMaAYfM6EiECUokN/Q4py9h4oM/2KUSrdZbtfuZmy87/kA==", "dev": true, "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-lint-table-pipe-alignment": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-table-pipe-alignment/-/remark-lint-table-pipe-alignment-4.0.0.tgz", + "integrity": "sha512-nx+xpEIWQRLOcq9hIbUIvhSE1NYRmDJmCY3cMoHJ1sIW7dRXMHyWfpWTgu7mpREKwSQdE0q4qnzk8McQQSkIcg==", + "dev": true, + "requires": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "mdast-util-phrasing": "^4.0.0", + "pluralize": "^8.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } } }, "remark-lint-table-pipes": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-4.1.2.tgz", - "integrity": "sha512-Ex2cJDXA0hdD9CC5Nu0p3K5LP+AhzPvk4sIOSbevCTSRyCS/SkNk4CQ6pwWBxuPVuHQUkqXkT8lgu8wwr/9A3A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-5.0.0.tgz", + "integrity": "sha512-e7jzAScDrt5+eMomh099TZJBN2K9ldDxBu9iYhNu5C0YsdAvnckJkgilsuClxFpmx4LCVYaX0EGbt/hQ3LB3xg==", "dev": true, "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } } }, "remark-lint-unordered-list-marker-style": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-3.1.2.tgz", - "integrity": "sha512-JFiyB4ZprJGGndCaFB8FssXd48m4Kh+CUqzNgu3lBLEiW8dEAGRlD9M2AzyyA+Q29WJP/FntDCbP22DeON91UA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-4.0.0.tgz", + "integrity": "sha512-XlP4Wr4KJNovyWVv0H5axfUlF23iE9Kt2SxaVq4+ieum5YcMmKE6KsL+aqt3kiJb60SH1u6a0bxKFvdM/9riOA==", "dev": true, "requires": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "@types/mdast": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } } }, "remark-lint-write-good": { @@ -14530,16 +26539,62 @@ } }, "remark-message-control": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-7.1.1.tgz", - "integrity": "sha512-xKRWl1NTBOKed0oEtCd8BUfH5m4s8WXxFFSoo7uUwx6GW/qdCy4zov5LfPyw7emantDmhfWn5PdIZgcbVcWMDQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-8.0.0.tgz", + "integrity": "sha512-brpzOO+jdyE/mLqvqqvbogmhGxKygjpCUCG/PwSCU43+JZQ+RM+sSzkCWBcYvgF3KIAVNIoPsvXjBkzO7EdsYQ==", "dev": true, "requires": { - "@types/mdast": "^3.0.0", - "mdast-comment-marker": "^2.0.0", - "unified": "^10.0.0", - "unified-message-control": "^4.0.0", - "vfile": "^5.0.0" + "@types/mdast": "^4.0.0", + "mdast-comment-marker": "^3.0.0", + "unified-message-control": "^5.0.0", + "vfile": "^6.0.0" + }, + "dependencies": { + "@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } } }, "remark-parse": { @@ -14564,21 +26619,272 @@ } }, "@types/unist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", - "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", - "dev": true - }, - "micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", + "dev": true + }, + "unified": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", + "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-preset-lint-consistent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-preset-lint-consistent/-/remark-preset-lint-consistent-6.0.0.tgz", + "integrity": "sha512-W3fwxajdietwjnFyTH5x2le63hxWGVOXxIs7KjRqU+5wkkN6ZQyuwPeeomblmS9wQr50fkidhXNHNDyCXtqgxQ==", + "dev": true, + "requires": { + "remark-lint": "^10.0.0", + "remark-lint-blockquote-indentation": "^4.0.0", + "remark-lint-checkbox-character-style": "^5.0.0", + "remark-lint-code-block-style": "^4.0.0", + "remark-lint-emphasis-marker": "^4.0.0", + "remark-lint-fenced-code-marker": "^4.0.0", + "remark-lint-heading-style": "^4.0.0", + "remark-lint-link-title-style": "^4.0.0", + "remark-lint-list-item-content-indent": "^4.0.0", + "remark-lint-ordered-list-marker-style": "^4.0.0", + "remark-lint-ordered-list-marker-value": "^4.0.0", + "remark-lint-rule-style": "^4.0.0", + "remark-lint-strong-marker": "^4.0.0", + "remark-lint-table-cell-padding": "^5.0.0", + "unified": "^11.0.0" + }, + "dependencies": { + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-preset-lint-markdown-style-guide": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-preset-lint-markdown-style-guide/-/remark-preset-lint-markdown-style-guide-6.0.0.tgz", + "integrity": "sha512-izsfNTHeqrRP64VWV6OdJnSUDwKFSthMKiiDcu14ODpPV0t7YiotCQWzgc7L4eW9Ctcp4aB4nHNLSuDmwhEWrQ==", + "dev": true, + "requires": { + "remark-lint": "^10.0.0", + "remark-lint-blockquote-indentation": "^4.0.0", + "remark-lint-code-block-style": "^4.0.0", + "remark-lint-definition-case": "^4.0.0", + "remark-lint-definition-spacing": "^4.0.0", + "remark-lint-emphasis-marker": "^4.0.0", + "remark-lint-fenced-code-flag": "^4.0.0", + "remark-lint-fenced-code-marker": "^4.0.0", + "remark-lint-file-extension": "^3.0.0", + "remark-lint-final-definition": "^4.0.0", + "remark-lint-hard-break-spaces": "^4.0.0", + "remark-lint-heading-increment": "^4.0.0", + "remark-lint-heading-style": "^4.0.0", + "remark-lint-link-title-style": "^4.0.0", + "remark-lint-list-item-content-indent": "^4.0.0", + "remark-lint-list-item-indent": "^4.0.0", + "remark-lint-list-item-spacing": "^5.0.0", + "remark-lint-maximum-heading-length": "^4.0.0", + "remark-lint-maximum-line-length": "^4.0.0", + "remark-lint-no-blockquote-without-marker": "^6.0.0", + "remark-lint-no-consecutive-blank-lines": "^5.0.0", + "remark-lint-no-duplicate-headings": "^4.0.0", + "remark-lint-no-emphasis-as-heading": "^4.0.0", + "remark-lint-no-file-name-articles": "^3.0.0", + "remark-lint-no-file-name-consecutive-dashes": "^3.0.0", + "remark-lint-no-file-name-irregular-characters": "^3.0.0", + "remark-lint-no-file-name-mixed-case": "^3.0.0", + "remark-lint-no-file-name-outer-dashes": "^3.0.0", + "remark-lint-no-heading-punctuation": "^4.0.0", + "remark-lint-no-literal-urls": "^4.0.0", + "remark-lint-no-multiple-toplevel-headings": "^4.0.0", + "remark-lint-no-shell-dollars": "^4.0.0", + "remark-lint-no-shortcut-reference-image": "^4.0.0", + "remark-lint-no-shortcut-reference-link": "^4.0.0", + "remark-lint-no-table-indentation": "^5.0.0", + "remark-lint-ordered-list-marker-style": "^4.0.0", + "remark-lint-ordered-list-marker-value": "^4.0.0", + "remark-lint-rule-style": "^4.0.0", + "remark-lint-strong-marker": "^4.0.0", + "remark-lint-table-cell-padding": "^5.0.0", + "remark-lint-table-pipe-alignment": "^4.0.0", + "remark-lint-table-pipes": "^5.0.0", + "remark-lint-unordered-list-marker-style": "^4.0.0", + "unified": "^11.0.0" + }, + "dependencies": { + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "remark-preset-lint-recommended": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/remark-preset-lint-recommended/-/remark-preset-lint-recommended-7.0.0.tgz", + "integrity": "sha512-A9aPDL78OO12xG2a83DVd+M2QzdBMjn545fbXj40BFJdpt9t//MADkPAwRfpMCBkKi+iECPUTFCb3Jm8SsFG2w==", + "dev": true, + "requires": { + "remark-lint": "^10.0.0", + "remark-lint-final-newline": "^3.0.0", + "remark-lint-hard-break-spaces": "^4.0.0", + "remark-lint-list-item-bullet-indent": "^5.0.0", + "remark-lint-list-item-indent": "^4.0.0", + "remark-lint-no-blockquote-without-marker": "^6.0.0", + "remark-lint-no-duplicate-definitions": "^4.0.0", + "remark-lint-no-heading-content-indent": "^5.0.0", + "remark-lint-no-literal-urls": "^4.0.0", + "remark-lint-no-shortcut-reference-image": "^4.0.0", + "remark-lint-no-shortcut-reference-link": "^4.0.0", + "remark-lint-no-undefined-references": "^5.0.0", + "remark-lint-no-unused-definitions": "^4.0.0", + "remark-lint-ordered-list-marker-style": "^4.0.0", + "unified": "^11.0.0" + }, + "dependencies": { + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", "dev": true }, "unified": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", - "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dev": true, "requires": { "@types/unist": "^3.0.0", @@ -14622,108 +26928,6 @@ } } }, - "remark-preset-lint-consistent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/remark-preset-lint-consistent/-/remark-preset-lint-consistent-5.1.2.tgz", - "integrity": "sha512-RQrWBFmyIkKfXtp9P1Fui7UbGSfXth9nuvRJUVnO0vfevBJe02iyMZWPokXSwkDOI/cM539wj0i3vrQupz+v5A==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "remark-lint": "^9.0.0", - "remark-lint-blockquote-indentation": "^3.0.0", - "remark-lint-checkbox-character-style": "^4.0.0", - "remark-lint-code-block-style": "^3.0.0", - "remark-lint-emphasis-marker": "^3.0.0", - "remark-lint-fenced-code-marker": "^3.0.0", - "remark-lint-heading-style": "^3.0.0", - "remark-lint-link-title-style": "^3.0.0", - "remark-lint-list-item-content-indent": "^3.0.0", - "remark-lint-ordered-list-marker-style": "^3.0.0", - "remark-lint-rule-style": "^3.0.0", - "remark-lint-strong-marker": "^3.0.0", - "remark-lint-table-cell-padding": "^4.0.0", - "unified": "^10.0.0" - } - }, - "remark-preset-lint-markdown-style-guide": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/remark-preset-lint-markdown-style-guide/-/remark-preset-lint-markdown-style-guide-5.1.3.tgz", - "integrity": "sha512-4zNSPoiwAh4LJCbXh2U8Q9SFUIMw0MwsYJWTXHNiD0bGIUMWYU8ATLzDpWqCkzra6Ih7rLZuqB8tQIlipcM4Hg==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "remark-lint": "^9.0.0", - "remark-lint-blockquote-indentation": "^3.0.0", - "remark-lint-code-block-style": "^3.0.0", - "remark-lint-definition-case": "^3.0.0", - "remark-lint-definition-spacing": "^3.0.0", - "remark-lint-emphasis-marker": "^3.0.0", - "remark-lint-fenced-code-flag": "^3.0.0", - "remark-lint-fenced-code-marker": "^3.0.0", - "remark-lint-file-extension": "^2.0.0", - "remark-lint-final-definition": "^3.0.0", - "remark-lint-hard-break-spaces": "^3.0.0", - "remark-lint-heading-increment": "^3.0.0", - "remark-lint-heading-style": "^3.0.0", - "remark-lint-link-title-style": "^3.0.0", - "remark-lint-list-item-content-indent": "^3.0.0", - "remark-lint-list-item-indent": "^3.0.0", - "remark-lint-list-item-spacing": "^4.0.0", - "remark-lint-maximum-heading-length": "^3.0.0", - "remark-lint-maximum-line-length": "^3.0.0", - "remark-lint-no-blockquote-without-marker": "^5.0.0", - "remark-lint-no-consecutive-blank-lines": "^4.0.0", - "remark-lint-no-duplicate-headings": "^3.0.0", - "remark-lint-no-emphasis-as-heading": "^3.0.0", - "remark-lint-no-file-name-articles": "^2.0.0", - "remark-lint-no-file-name-consecutive-dashes": "^2.0.0", - "remark-lint-no-file-name-irregular-characters": "^2.0.0", - "remark-lint-no-file-name-mixed-case": "^2.0.0", - "remark-lint-no-file-name-outer-dashes": "^2.0.0", - "remark-lint-no-heading-punctuation": "^3.0.0", - "remark-lint-no-inline-padding": "^4.0.0", - "remark-lint-no-literal-urls": "^3.0.0", - "remark-lint-no-multiple-toplevel-headings": "^3.0.0", - "remark-lint-no-shell-dollars": "^3.0.0", - "remark-lint-no-shortcut-reference-image": "^3.0.0", - "remark-lint-no-shortcut-reference-link": "^3.0.0", - "remark-lint-no-table-indentation": "^4.0.0", - "remark-lint-ordered-list-marker-style": "^3.0.0", - "remark-lint-ordered-list-marker-value": "^3.0.0", - "remark-lint-rule-style": "^3.0.0", - "remark-lint-strong-marker": "^3.0.0", - "remark-lint-table-cell-padding": "^4.0.0", - "remark-lint-table-pipe-alignment": "^3.0.0", - "remark-lint-table-pipes": "^4.0.0", - "remark-lint-unordered-list-marker-style": "^3.0.0", - "unified": "^10.0.0" - } - }, - "remark-preset-lint-recommended": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/remark-preset-lint-recommended/-/remark-preset-lint-recommended-6.1.3.tgz", - "integrity": "sha512-DGjbeP2TsFmQeJflUiIvJWAOs1PxJt7SG3WQyMxOppkRr/up+mxWVkuv+6AUuaR0EsuaaFGz7WmZM5TrSSFWJw==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "remark-lint": "^9.0.0", - "remark-lint-final-newline": "^2.0.0", - "remark-lint-hard-break-spaces": "^3.0.0", - "remark-lint-list-item-bullet-indent": "^4.0.0", - "remark-lint-list-item-indent": "^3.0.0", - "remark-lint-no-blockquote-without-marker": "^5.0.0", - "remark-lint-no-duplicate-definitions": "^3.0.0", - "remark-lint-no-heading-content-indent": "^4.0.0", - "remark-lint-no-inline-padding": "^4.0.0", - "remark-lint-no-literal-urls": "^3.0.0", - "remark-lint-no-shortcut-reference-image": "^3.0.0", - "remark-lint-no-shortcut-reference-link": "^3.0.0", - "remark-lint-no-undefined-references": "^4.0.0", - "remark-lint-no-unused-definitions": "^3.0.0", - "remark-lint-ordered-list-marker-style": "^3.0.0", - "unified": "^10.0.0" - } - }, "remark-retext": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-6.0.0.tgz", @@ -14826,74 +27030,6 @@ "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", "dev": true }, - "mdast-util-to-markdown": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", - "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", - "dev": true, - "requires": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark-util-decode-string": "^2.0.0", - "unist-util-visit": "^5.0.0", - "zwitch": "^2.0.0" - } - }, - "mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dev": true, - "requires": { - "@types/mdast": "^4.0.0" - } - }, - "micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "micromark-util-decode-numeric-character-reference": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.0.tgz", - "integrity": "sha512-pIgcsGxpHEtTG/rPJRz/HOLSqp5VTuIIjXlPI+6JSDlK2oljApusG6KzpS8AF0ENUMCHlC/IBb5B9xdFiVlm5Q==", - "dev": true, - "requires": { - "micromark-util-symbol": "^2.0.0" - } - }, - "micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "dev": true, - "requires": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true - }, - "micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true - }, "unified": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", @@ -14909,15 +27045,6 @@ "vfile": "^6.0.0" } }, - "unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0" - } - }, "unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", @@ -14927,27 +27054,6 @@ "@types/unist": "^3.0.0" } }, - "unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - } - }, - "unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dev": true, - "requires": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - } - }, "vfile": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", @@ -15030,11 +27136,12 @@ } }, "remark-validate-links": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/remark-validate-links/-/remark-validate-links-13.0.0.tgz", - "integrity": "sha512-21/LrPvAhUxJnAXLbMvgBrjTvsKki4txEnwe58V/iKP5ptKLvYzWLnMueT7VZI7yVhsH8l8ZaoQ5WmKkm8ws/w==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/remark-validate-links/-/remark-validate-links-13.0.1.tgz", + "integrity": "sha512-GWDZWJAQU0+Fsm1GCLNeJoVcE9L3XTVrWCgQZOYREfXqRFIYaSoIBbARZizLm/vBESq+a3GwEBnIflSCNw26tw==", "dev": true, "requires": { + "@types/hosted-git-info": "^3.0.0", "@types/mdast": "^4.0.0", "github-slugger": "^2.0.0", "hosted-git-info": "^7.0.0", @@ -15231,6 +27338,12 @@ "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=", "dev": true }, + "space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -15332,6 +27445,16 @@ "define-properties": "^1.1.3" } }, + "stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, + "requires": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + } + }, "strip-ansi": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", @@ -15639,38 +27762,85 @@ } }, "unified-message-control": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-4.0.0.tgz", - "integrity": "sha512-1b92N+VkPHftOsvXNOtkJm4wHlr+UDmTBF2dUzepn40oy9NxanJ9xS1RwUBTjXJwqr2K0kMbEyv1Krdsho7+Iw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-5.0.0.tgz", + "integrity": "sha512-B2cSAkpuMVVmPP90KCfKdBhm1e9KYJ+zK3x5BCa0N65zpq1Ybkc9C77+M5qwR8FWO7RF3LM5QRRPZtgjW6DUCw==", "dev": true, "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit": "^3.0.0", - "vfile": "^5.0.0", - "vfile-location": "^4.0.0", - "vfile-message": "^3.0.0" + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "vfile-message": "^4.0.0" }, "dependencies": { + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, "unist-util-visit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", - "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", "dev": true, "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" } }, "unist-util-visit-parents": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", - "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" } } } @@ -15737,6 +27907,54 @@ "integrity": "sha512-mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA==", "dev": true }, + "unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "dependencies": { + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + } + } + }, "unist-util-stringify-position": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", @@ -15862,13 +28080,51 @@ } }, "vfile-location": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", - "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", + "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", "dev": true, "requires": { - "@types/unist": "^2.0.0", - "vfile": "^5.0.0" + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "dependencies": { + "@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } } }, "vfile-message": { diff --git a/package.json b/package.json index 2e77aee1e0..95fb28412b 100644 --- a/package.json +++ b/package.json @@ -29,73 +29,73 @@ "homepage": "https://gitversion.net", "devDependencies": { "remark": "^15.0.1", - "remark-cli": "^12.0.0", + "remark-cli": "^12.0.1", "remark-frontmatter": "^5.0.0", "remark-heading-gap": "^6.0.0", - "remark-lint": "^9.1.2", - "remark-lint-blockquote-indentation": "^3.1.2", - "remark-lint-checkbox-character-style": "^4.1.2", - "remark-lint-checkbox-content-indent": "^4.1.2", + "remark-lint": "^10.0.0", + "remark-lint-blockquote-indentation": "^4.0.0", + "remark-lint-checkbox-character-style": "^5.0.0", + "remark-lint-checkbox-content-indent": "^5.0.0", "remark-lint-code": "^2.0.0", - "remark-lint-code-block-style": "^3.1.2", - "remark-lint-definition-case": "^3.1.2", - "remark-lint-definition-spacing": "^3.1.2", - "remark-lint-fenced-code-flag": "^3.1.2", - "remark-lint-fenced-code-marker": "^3.1.2", - "remark-lint-file-extension": "^2.1.2", - "remark-lint-final-definition": "^3.1.2", - "remark-lint-final-newline": "^2.1.2", - "remark-lint-hard-break-spaces": "^3.1.2", - "remark-lint-heading-increment": "^3.1.2", - "remark-lint-heading-style": "^3.1.2", + "remark-lint-code-block-style": "^4.0.0", + "remark-lint-definition-case": "^4.0.0", + "remark-lint-definition-spacing": "^4.0.0", + "remark-lint-fenced-code-flag": "^4.0.0", + "remark-lint-fenced-code-marker": "^4.0.0", + "remark-lint-file-extension": "^3.0.0", + "remark-lint-final-definition": "^4.0.1", + "remark-lint-final-newline": "^3.0.0", + "remark-lint-hard-break-spaces": "^4.0.0", + "remark-lint-heading-increment": "^4.0.0", + "remark-lint-heading-style": "^4.0.0", "remark-lint-heading-whitespace": "^1.0.0", - "remark-lint-link-title-style": "^3.1.2", - "remark-lint-list-item-bullet-indent": "^4.1.2", - "remark-lint-list-item-content-indent": "^3.1.2", - "remark-lint-list-item-indent": "^3.1.2", - "remark-lint-maximum-heading-length": "^3.1.2", + "remark-lint-link-title-style": "^4.0.0", + "remark-lint-list-item-bullet-indent": "^5.0.0", + "remark-lint-list-item-content-indent": "^4.0.0", + "remark-lint-list-item-indent": "^4.0.0", + "remark-lint-maximum-heading-length": "^4.0.0", "remark-lint-no-auto-link-without-protocol": "^3.1.2", - "remark-lint-no-blockquote-without-marker": "^5.1.2", - "remark-lint-no-consecutive-blank-lines": "^4.1.3", + "remark-lint-no-blockquote-without-marker": "^6.0.0", + "remark-lint-no-consecutive-blank-lines": "^5.0.0", "remark-lint-no-dead-urls": "^1.1.0", - "remark-lint-no-duplicate-definitions": "^3.1.2", - "remark-lint-no-duplicate-headings": "^3.1.2", - "remark-lint-no-emphasis-as-heading": "^3.1.2", + "remark-lint-no-duplicate-definitions": "^4.0.0", + "remark-lint-no-duplicate-headings": "^4.0.0", + "remark-lint-no-emphasis-as-heading": "^4.0.0", "remark-lint-no-empty-sections": "^4.0.0", - "remark-lint-no-empty-url": "^3.1.2", - "remark-lint-no-file-name-articles": "^2.1.2", - "remark-lint-no-file-name-consecutive-dashes": "^2.1.2", - "remark-lint-no-file-name-irregular-characters": "^2.1.2", - "remark-lint-no-file-name-mixed-case": "^2.1.2", - "remark-lint-no-file-name-outer-dashes": "^2.1.2", - "remark-lint-no-heading-content-indent": "^4.1.2", - "remark-lint-no-heading-indent": "^4.1.2", - "remark-lint-no-heading-like-paragraph": "^3.1.2", + "remark-lint-no-empty-url": "^4.0.0", + "remark-lint-no-file-name-articles": "^3.0.0", + "remark-lint-no-file-name-consecutive-dashes": "^3.0.0", + "remark-lint-no-file-name-irregular-characters": "^3.0.0", + "remark-lint-no-file-name-mixed-case": "^3.0.0", + "remark-lint-no-file-name-outer-dashes": "^3.0.0", + "remark-lint-no-heading-content-indent": "^5.0.0", + "remark-lint-no-heading-indent": "^5.0.0", + "remark-lint-no-heading-like-paragraph": "^4.0.0", "remark-lint-no-inline-padding": "^4.1.2", - "remark-lint-no-literal-urls": "^3.1.2", - "remark-lint-no-multiple-toplevel-headings": "^3.1.2", - "remark-lint-no-reference-like-url": "^3.1.2", + "remark-lint-no-literal-urls": "^4.0.0", + "remark-lint-no-multiple-toplevel-headings": "^4.0.0", + "remark-lint-no-reference-like-url": "^4.0.0", "remark-lint-no-repeat-punctuation": "^0.1.4", - "remark-lint-no-shell-dollars": "^3.1.2", - "remark-lint-no-shortcut-reference-image": "^3.1.2", - "remark-lint-no-table-indentation": "^4.1.2", - "remark-lint-no-tabs": "^3.1.2", - "remark-lint-no-unused-definitions": "^3.1.2", - "remark-lint-ordered-list-marker-style": "^3.1.2", - "remark-lint-ordered-list-marker-value": "^3.1.2", - "remark-lint-rule-style": "^3.1.2", - "remark-lint-strong-marker": "^3.1.2", - "remark-lint-table-cell-padding": "^4.1.3", - "remark-lint-table-pipe-alignment": "^3.1.3", - "remark-lint-table-pipes": "^4.1.2", - "remark-lint-unordered-list-marker-style": "^3.1.2", + "remark-lint-no-shell-dollars": "^4.0.0", + "remark-lint-no-shortcut-reference-image": "^4.0.0", + "remark-lint-no-table-indentation": "^5.0.0", + "remark-lint-no-tabs": "^4.0.0", + "remark-lint-no-unused-definitions": "^4.0.0", + "remark-lint-ordered-list-marker-style": "^4.0.0", + "remark-lint-ordered-list-marker-value": "^4.0.0", + "remark-lint-rule-style": "^4.0.0", + "remark-lint-strong-marker": "^4.0.0", + "remark-lint-table-cell-padding": "^5.0.0", + "remark-lint-table-pipe-alignment": "^4.0.0", + "remark-lint-table-pipes": "^5.0.0", + "remark-lint-unordered-list-marker-style": "^4.0.0", "remark-lint-write-good": "^1.2.0", - "remark-preset-lint-consistent": "^5.1.2", - "remark-preset-lint-markdown-style-guide": "^5.1.3", - "remark-preset-lint-recommended": "^6.1.3", + "remark-preset-lint-consistent": "^6.0.0", + "remark-preset-lint-markdown-style-guide": "^6.0.0", + "remark-preset-lint-recommended": "^7.0.0", "remark-retext": "^6.0.0", "remark-textr": "^6.1.0", - "remark-validate-links": "^13.0.0" + "remark-validate-links": "^13.0.1" }, "overrides": { "got": "^11.8.5" From 2b794b3d1f3909f06655d78dead2191f3fdc22fd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 15:58:17 +0000 Subject: [PATCH 087/544] (ci deps): Bump Cake.Codecov from 1.0.1 to 3.0.0 in /build Bumps [Cake.Codecov](https://github.com/cake-contrib/Cake.Codecov) from 1.0.1 to 3.0.0. - [Release notes](https://github.com/cake-contrib/Cake.Codecov/releases) - [Changelog](https://github.com/cake-contrib/Cake.Codecov/blob/develop/GitReleaseManager.yaml) - [Commits](https://github.com/cake-contrib/Cake.Codecov/compare/1.0.1...3.0.0) --- updated-dependencies: - dependency-name: Cake.Codecov dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- build/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Directory.Packages.props b/build/Directory.Packages.props index da5cec9d35..efa2664748 100644 --- a/build/Directory.Packages.props +++ b/build/Directory.Packages.props @@ -4,7 +4,7 @@ - + From 44883b3f32904d370c3b49951ec4da22406dcc72 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Wed, 17 Apr 2024 17:39:09 +0200 Subject: [PATCH 088/544] Finalizing the configuration of GitFlow and GitHubFlow workflow and align with the Mainline version strategy --- ...riteOutEffectiveConfiguration.approved.txt | 31 +- .../ConfigurationProviderTests.cs | 4 +- .../BranchConfiguration.cs | 27 + .../Builders/GitFlowConfigurationBuilder.cs | 39 +- .../GitHubFlowConfigurationBuilder.cs | 67 +- .../TrunkBasedConfigurationBuilder.cs | 57 +- .../GitVersionConfiguration.cs | 2 + .../Workflows/GitFlow/v1.yml | 31 +- .../Workflows/GitHubFlow/v1.yml | 26 +- .../Workflows/TrunkBased/v1.yml | 1 + .../BranchWithoutCommitScenarios.cs | 20 +- ...ingTrunkBasedVersionStrategyWithGitFlow.cs | 497 + ...ngTrunkBasedVersionStrategyWithGitFlow2.cs | 861 ++ ...TrunkBasedVersionStrategyWithGitHubFlow.cs | 494 + .../ContinuousDeliveryTestScenarios.cs | 46 +- ...FeatureBranchFromAReleaseBranchScenario.cs | 380 +- .../IntegrationTests/DevelopScenarios.cs | 50 +- .../IntegrationTests/DocumentationSamples.cs | 18 +- .../DocumentationSamplesForGitFlow.cs | 1058 ++ .../DocumentationSamplesForGitHubFlow.cs | 432 + .../FeatureBranchScenarios.cs | 8 +- .../IntegrationTests/GitflowScenarios.cs | 18 +- .../IntegrationTests/HotfixBranchScenarios.cs | 18 +- .../IntegrationTests/MainScenarios.cs | 16 +- .../IntegrationTests/OtherBranchScenarios.cs | 4 +- .../IntegrationTests/OtherScenarios.cs | 32 +- ...aseGitFlowWithTrunkBasedVersionStrategy.cs | 11454 ++++++++++++++++ ...GitHubFlowWithTrunkBasedVersionStrategy.cs | 11454 ++++++++++++++++ .../IntegrationTests/PullRequestScenarios.cs | 2 +- .../ReleaseBranchScenarios.cs | 98 +- .../RemoteRepositoryScenarios.cs | 4 +- ...omAReleaseBranchGetsDecrementedScenario.cs | 4 +- .../SupportBranchScenarios.cs | 4 +- .../VersionInCurrentBranchNameScenarios.cs | 4 +- .../VersionInMergedBranchNameScenarios.cs | 2 +- .../IntegrationTests/VersionInTagScenarios.cs | 4 +- ...gedToMainWhenMergedCommitTaggedAsStable.cs | 38 +- ...MergeCommitFromMainMergedBackToMainWhen.cs | 4 +- ...atureBranchWithAMergeCommitFromMainWhen.cs | 4 +- ...BranchWithOneCommitBranchedFromMainWhen.cs | 4 +- ...dFromMainWhenCommitAHasBumpMessageMajor.cs | 4 +- ...dFromMainWhenCommitAHasBumpMessageMinor.cs | 4 +- ...dFromMainWhenCommitAHasBumpMessagePatch.cs | 4 +- ...edFromMainWhenCommitATaggedAsPreRelease.cs | 4 +- ...romMainWhenCommitATaggedAsPreReleaseBar.cs | 4 +- ...romMainWhenCommitATaggedAsPreReleaseFoo.cs | 4 +- ...anchedFromMainWhenCommitATaggedAsStable.cs | 4 +- ...dFromMainWhenCommitBHasBumpMessageMajor.cs | 4 +- ...dFromMainWhenCommitBHasBumpMessageMinor.cs | 4 +- ...dFromMainWhenCommitBHasBumpMessagePatch.cs | 4 +- ...edFromMainWhenCommitBTaggedAsPreRelease.cs | 4 +- ...romMainWhenCommitBTaggedAsPreReleaseBar.cs | 4 +- ...romMainWhenCommitBTaggedAsPreReleaseFoo.cs | 4 +- ...anchedFromMainWhenCommitBTaggedAsStable.cs | 24 +- ...tureBranchWithOneCommitMergedToMainWhen.cs | 4 +- ...rgedToMainWhenCommitBTaggedAsPreRelease.cs | 4 +- ...dToMainWhenCommitBTaggedAsPreReleaseBar.cs | 4 +- ...dToMainWhenCommitBTaggedAsPreReleaseFoo.cs | 4 +- ...itMergedToMainWhenCommitBTaggedAsStable.cs | 4 +- ...oMainWithOneCommitBranchedToFeatureWhen.cs | 4 +- ...ow+GivenAFeatureBranchWithOneCommitWhen.cs | 2 +- ...hOneCommitWhenCommitHasBumpMessageMajor.cs | 2 +- ...hOneCommitWhenCommitHasBumpMessageMinor.cs | 2 +- ...hOneCommitWhenCommitHasBumpMessagePatch.cs | 2 +- ...thOneCommitWhenCommitTaggedAsPreRelease.cs | 7 +- ...neCommitWhenCommitTaggedAsPreReleaseBar.cs | 7 +- ...neCommitWhenCommitTaggedAsPreReleaseFoo.cs | 7 +- ...chWithOneCommitWhenCommitTaggedAsStable.cs | 7 +- ...nchWithThreeCommitsBranchedFromMainWhen.cs | 4 +- ...eBranchWithThreeCommitsMergedToMainWhen.cs | 4 +- ...GivenAFeatureBranchWithThreeCommitsWhen.cs | 4 +- ...ranchWithTwoCommitsBranchedFromMainWhen.cs | 4 +- ...ureBranchWithTwoCommitsMergedToMainWhen.cs | 4 +- ...ommitsWhenFirstCommitTaggedAsPreRelease.cs | 4 +- ...itsWhenFirstCommitTaggedAsPreReleaseBar.cs | 4 +- ...itsWhenFirstCommitTaggedAsPreReleaseFoo.cs | 4 +- ...ranchWithOneCommitBranchedToFeatureWhen.cs | 4 +- ...dToFeatureWhenCommitHasBumpMessageMajor.cs | 4 +- ...dToFeatureWhenCommitHasBumpMessageMinor.cs | 4 +- ...dToFeatureWhenCommitHasBumpMessagePatch.cs | 4 +- ...edToFeatureWhenCommitTaggedAsPreRelease.cs | 24 +- ...oFeatureWhenCommitTaggedAsPreReleaseBar.cs | 24 +- ...oFeatureWhenCommitTaggedAsPreReleaseFoo.cs | 24 +- ...anchedToFeatureWhenCommitTaggedAsStable.cs | 24 +- ...anchWithTwoCommitsBranchedToFeatureWhen.cs | 4 +- ...atureWhenFirstCommitHasBumpMessageMajor.cs | 4 +- ...atureWhenFirstCommitHasBumpMessageMinor.cs | 4 +- ...atureWhenFirstCommitHasBumpMessagePatch.cs | 4 +- ...eatureWhenFirstCommitTaggedAsPreRelease.cs | 4 +- ...ureWhenFirstCommitTaggedAsPreReleaseBar.cs | 4 +- ...ureWhenFirstCommitTaggedAsPreReleaseFoo.cs | 4 +- ...dToFeatureWhenFirstCommitTaggedAsStable.cs | 4 +- ...mmitsWhenSecondCommitTaggedAsPreRelease.cs | 4 +- ...tsWhenSecondCommitTaggedAsPreReleaseBar.cs | 4 +- ...tsWhenSecondCommitTaggedAsPreReleaseFoo.cs | 4 +- .../Configuration/EffectiveConfiguration.cs | 14 +- .../Configuration/IBranchConfiguration.cs | 10 +- .../Extensions/ConfigurationExtensions.cs | 17 +- src/GitVersion.Core/Git/ReferenceName.cs | 7 + src/GitVersion.Core/PublicAPI.Unshipped.txt | 16 +- src/GitVersion.Core/SemVer/SemanticVersion.cs | 44 +- .../Abstractions/IIncrementStrategyFinder.cs | 2 +- .../EffectiveBranchConfigurationFinder.cs | 4 +- .../IncrementStrategyFinder.cs | 2 +- .../TrunkBased/EnrichIncrement.cs | 34 +- .../TrunkBased/EnrichSemanticVersion.cs | 6 +- .../TrunkBased/NonTrunk/CommitOnNonTrunk.cs | 8 +- .../NonTrunk/CommitOnNonTrunkBranchedBase.cs | 7 +- .../CommitOnNonTrunkBranchedToNonTrunk.cs | 2 +- .../CommitOnNonTrunkBranchedToTrunk.cs | 2 +- .../CommitOnNonTrunkWithPreReleaseTagBase.cs | 8 +- .../CommitOnNonTrunkWithStableTagBase.cs | 7 +- .../NonTrunk/FirstCommitOnRelease.cs | 30 + .../NonTrunk/MergeCommitOnNonTrunkBase.cs | 28 +- .../TrunkBased/RemoveIncrement.cs | 2 +- .../TrunkBased/Trunk/CommitOnTrunk.cs | 7 +- .../Trunk/CommitOnTrunkBranchedBase.cs | 15 +- .../Trunk/CommitOnTrunkBranchedToNonTrunk.cs | 2 +- .../Trunk/CommitOnTrunkBranchedToTrunk.cs | 2 +- .../CommitOnTrunkWithPreReleaseTagBase.cs | 2 +- .../Trunk/CommitOnTrunkWithStableTagBase.cs | 5 +- .../LastCommitOnTrunkWithPreReleaseTag.cs | 8 +- .../Trunk/LastCommitOnTrunkWithStableTag.cs | 2 +- .../Trunk/LastMergeCommitOnTrunk.cs | 1 + .../Trunk/MergeCommitOnTrunkBase.cs | 15 +- .../TrunkBased/TrunkBasedCommit.cs | 63 +- .../TrunkBased/TrunkBasedContext.cs | 8 +- .../TrunkBased/TrunkBasedIteration.cs | 42 +- .../NextVersionCalculator.cs | 26 +- .../VersionSearchStrategies/BaseVersion.cs | 13 +- .../BaseVersionOperand.cs | 14 + .../BaseVersionOperator.cs | 27 + .../MergeMessageVersionStrategy.cs | 28 +- .../TaggedCommitVersionStrategy.cs | 15 +- .../TrackReleaseBranchesVersionStrategy.cs | 2 +- .../TrunkBasedVersionStrategy.cs | 189 +- .../VersionInBranchNameVersionStrategy.cs | 13 +- .../Fixtures/RepositoryFixtureBase.cs | 6 +- .../Fixtures/SequenceDiagram.cs | 5 + 139 files changed, 27667 insertions(+), 734 deletions(-) create mode 100644 src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow.cs create mode 100644 src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow2.cs create mode 100644 src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitHubFlow.cs create mode 100644 src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs create mode 100644 src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitHubFlow.cs create mode 100644 src/GitVersion.Core.Tests/IntegrationTests/PhaseGitFlowWithTrunkBasedVersionStrategy.cs create mode 100644 src/GitVersion.Core.Tests/IntegrationTests/PhaseGitHubFlowWithTrunkBasedVersionStrategy.cs create mode 100644 src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt index 8cb25f9a4d..78406ad6a1 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt @@ -25,8 +25,10 @@ branches: prevent-increment: when-current-commit-tagged: false track-merge-target: true + track-merge-message: true regex: ^dev(elop)?(ment)?$ - source-branches: [] + source-branches: + - main is-source-branch-for: [] tracks-release-branches: true is-release-branch: false @@ -38,10 +40,9 @@ branches: prevent-increment: of-merged-branch: true track-merge-target: false + track-merge-message: true regex: ^master$|^main$ - source-branches: - - develop - - release + source-branches: [] is-source-branch-for: [] tracks-release-branches: false is-release-branch: false @@ -50,17 +51,15 @@ branches: release: mode: ManualDeployment label: beta - increment: None + increment: Minor prevent-increment: of-merged-branch: true when-current-commit-tagged: false track-merge-target: false regex: ^releases?[/-](?.+) source-branches: - - develop - main - support - - release is-source-branch-for: [] tracks-release-branches: false is-release-branch: true @@ -70,23 +69,28 @@ branches: mode: ManualDeployment label: '{BranchName}' increment: Inherit - prevent-increment: {} + prevent-increment: + when-current-commit-tagged: false + track-merge-message: true regex: ^features?[/-](?.+) source-branches: - develop - main - release - - feature - support - hotfix is-source-branch-for: [] + is-main-branch: false pre-release-weight: 30000 pull-request: mode: ContinuousDelivery label: PullRequest increment: Inherit - prevent-increment: {} + prevent-increment: + of-merged-branch: true + when-current-commit-tagged: false label-number-pattern: '[/-](?\d+)' + track-merge-message: true regex: ^(pull|pull\-requests|pr)[/-] source-branches: - develop @@ -105,12 +109,11 @@ branches: when-current-commit-tagged: false regex: ^hotfix(es)?[/-](?.+) source-branches: - - release - main - support - - hotfix is-source-branch-for: [] is-release-branch: true + is-main-branch: false pre-release-weight: 30000 support: label: '' @@ -130,7 +133,8 @@ branches: mode: ManualDeployment label: '{BranchName}' increment: Inherit - prevent-increment: {} + prevent-increment: + when-current-commit-tagged: true regex: (?.+) source-branches: - main @@ -141,6 +145,7 @@ branches: - hotfix - support is-source-branch-for: [] + is-main-branch: false ignore: sha: [] mode: ContinuousDelivery diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs index dd5256fbd0..45d66f314d 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs @@ -316,7 +316,7 @@ public void ShouldUseDefaultSourceBranchesWhenNotSpecifiedForDevelop() using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); - configuration.Branches["develop"].SourceBranches.ShouldBe(new List()); + configuration.Branches["develop"].SourceBranches.ShouldBe(["main"]); } [Test] @@ -348,7 +348,7 @@ public void ShouldUseDefaultSourceBranchesWhenNotSpecifiedForFeature() var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); configuration.Branches["feature"].SourceBranches.ShouldBe( - new List { "develop", MainBranch, "release", "feature", "support", "hotfix" }); + ["develop", MainBranch, "release", "support", "hotfix"]); } [Test] diff --git a/src/GitVersion.Configuration/BranchConfiguration.cs b/src/GitVersion.Configuration/BranchConfiguration.cs index 4a55cf7e4b..6547ea51ac 100644 --- a/src/GitVersion.Configuration/BranchConfiguration.cs +++ b/src/GitVersion.Configuration/BranchConfiguration.cs @@ -107,4 +107,31 @@ public virtual IBranchConfiguration Inherit(IBranchConfiguration configuration) PreReleaseWeight = PreReleaseWeight ?? configuration.PreReleaseWeight }; } + + public virtual IBranchConfiguration Inherit(EffectiveConfiguration configuration) + { + configuration.NotNull(); + + return new BranchConfiguration(this) + { + Increment = Increment == IncrementStrategy.Inherit ? configuration.Increment : Increment, + DeploymentMode = DeploymentMode ?? configuration.DeploymentMode, + Label = Label ?? configuration.Label, + PreventIncrement = new PreventIncrementConfiguration() + { + OfMergedBranch = PreventIncrement.OfMergedBranch ?? configuration.PreventIncrementOfMergedBranch, + WhenBranchMerged = PreventIncrement.WhenBranchMerged ?? configuration.PreventIncrementWhenBranchMerged, + WhenCurrentCommitTagged = PreventIncrement.WhenCurrentCommitTagged ?? configuration.PreventIncrementWhenCurrentCommitTagged + }, + LabelNumberPattern = LabelNumberPattern ?? configuration.LabelNumberPattern, + TrackMergeTarget = TrackMergeTarget ?? configuration.TrackMergeTarget, + TrackMergeMessage = TrackMergeMessage ?? configuration.TrackMergeMessage, + CommitMessageIncrementing = CommitMessageIncrementing ?? configuration.CommitMessageIncrementing, + RegularExpression = RegularExpression ?? configuration.RegularExpression, + TracksReleaseBranches = TracksReleaseBranches ?? configuration.TracksReleaseBranches, + IsReleaseBranch = IsReleaseBranch ?? configuration.IsReleaseBranch, + IsMainBranch = IsMainBranch ?? configuration.IsMainBranch, + PreReleaseWeight = PreReleaseWeight ?? configuration.PreReleaseWeight + }; + } } diff --git a/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs index 6256bdda6f..2cba13d408 100644 --- a/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs +++ b/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs @@ -45,13 +45,14 @@ private GitFlowConfigurationBuilder() { Increment = IncrementStrategy.Minor, RegularExpression = DevelopBranch.RegexPattern, - SourceBranches = [], + SourceBranches = [this.MainBranch.Name], Label = "alpha", PreventIncrement = new PreventIncrementConfiguration() { WhenCurrentCommitTagged = false }, TrackMergeTarget = true, + TrackMergeMessage = true, TracksReleaseBranches = true, IsMainBranch = false, IsReleaseBranch = false, @@ -62,17 +63,14 @@ private GitFlowConfigurationBuilder() { Increment = IncrementStrategy.Patch, RegularExpression = MainBranch.RegexPattern, - SourceBranches = - [ - this.DevelopBranch.Name, - this.ReleaseBranch.Name - ], + SourceBranches = [], Label = string.Empty, PreventIncrement = new PreventIncrementConfiguration() { OfMergedBranch = true }, TrackMergeTarget = false, + TrackMergeMessage = true, TracksReleaseBranches = false, IsMainBranch = true, IsReleaseBranch = false, @@ -81,15 +79,13 @@ private GitFlowConfigurationBuilder() WithBranch(ReleaseBranch.Name).WithConfiguration(new BranchConfiguration { - Increment = IncrementStrategy.None, + Increment = IncrementStrategy.Minor, DeploymentMode = DeploymentMode.ManualDeployment, RegularExpression = ReleaseBranch.RegexPattern, SourceBranches = [ - this.DevelopBranch.Name, this.MainBranch.Name, this.SupportBranch.Name, - this.ReleaseBranch.Name ], Label = "beta", PreventIncrement = new PreventIncrementConfiguration() @@ -114,11 +110,16 @@ private GitFlowConfigurationBuilder() this.DevelopBranch.Name, this.MainBranch.Name, this.ReleaseBranch.Name, - this.FeatureBranch.Name, this.SupportBranch.Name, this.HotfixBranch.Name ], Label = ConfigurationConstants.BranchNamePlaceholder, + PreventIncrement = new PreventIncrementConfiguration() + { + WhenCurrentCommitTagged = false + }, + TrackMergeMessage = true, + IsMainBranch = false, PreReleaseWeight = 30000 }); @@ -137,7 +138,13 @@ private GitFlowConfigurationBuilder() this.HotfixBranch.Name ], Label = "PullRequest", + PreventIncrement = new PreventIncrementConfiguration() + { + OfMergedBranch = true, + WhenCurrentCommitTagged = false + }, LabelNumberPattern = ConfigurationConstants.DefaultLabelNumberPattern, + TrackMergeMessage = true, PreReleaseWeight = 30000 }); @@ -152,13 +159,12 @@ private GitFlowConfigurationBuilder() }, SourceBranches = [ - this.ReleaseBranch.Name, this.MainBranch.Name, this.SupportBranch.Name, - this.HotfixBranch.Name ], Label = "beta", IsReleaseBranch = true, + IsMainBranch = false, PreReleaseWeight = 30000 }); @@ -182,7 +188,6 @@ private GitFlowConfigurationBuilder() WithBranch(UnknownBranch.Name).WithConfiguration(new BranchConfiguration { RegularExpression = UnknownBranch.RegexPattern, - Label = ConfigurationConstants.BranchNamePlaceholder, DeploymentMode = DeploymentMode.ManualDeployment, Increment = IncrementStrategy.Inherit, SourceBranches = @@ -194,7 +199,13 @@ private GitFlowConfigurationBuilder() this.PullRequestBranch.Name, this.HotfixBranch.Name, this.SupportBranch.Name - ] + ], + Label = ConfigurationConstants.BranchNamePlaceholder, + PreventIncrement = new PreventIncrementConfiguration() + { + WhenCurrentCommitTagged = true + }, + IsMainBranch = false, }); } } diff --git a/src/GitVersion.Configuration/Builders/GitHubFlowConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/GitHubFlowConfigurationBuilder.cs index 9b22a282ff..3b67f085f8 100644 --- a/src/GitVersion.Configuration/Builders/GitHubFlowConfigurationBuilder.cs +++ b/src/GitVersion.Configuration/Builders/GitHubFlowConfigurationBuilder.cs @@ -24,10 +24,8 @@ private GitHubFlowConfigurationBuilder() TagPreReleaseWeight = ConfigurationConstants.DefaultTagPreReleaseWeight, UpdateBuildNumber = ConfigurationConstants.DefaultUpdateBuildNumber, DeploymentMode = DeploymentMode.ContinuousDelivery, - RegularExpression = string.Empty, Label = ConfigurationConstants.BranchNamePlaceholder, Increment = IncrementStrategy.Inherit, - CommitMessageIncrementing = CommitMessageIncrementMode.Enabled, PreventIncrement = new PreventIncrementConfiguration() { OfMergedBranch = false, @@ -36,6 +34,8 @@ private GitHubFlowConfigurationBuilder() }, TrackMergeTarget = false, TrackMergeMessage = true, + CommitMessageIncrementing = CommitMessageIncrementMode.Enabled, + RegularExpression = string.Empty, TracksReleaseBranches = false, IsReleaseBranch = false, IsMainBranch = false @@ -43,88 +43,107 @@ private GitHubFlowConfigurationBuilder() WithBranch(MainBranch.Name).WithConfiguration(new BranchConfiguration { - Increment = IncrementStrategy.Patch, - RegularExpression = MainBranch.RegexPattern, - SourceBranches = [this.ReleaseBranch.Name], Label = string.Empty, + Increment = IncrementStrategy.Patch, PreventIncrement = new PreventIncrementConfiguration() { OfMergedBranch = true }, TrackMergeTarget = false, + TrackMergeMessage = true, + RegularExpression = MainBranch.RegexPattern, + SourceBranches = [], TracksReleaseBranches = false, - IsMainBranch = true, IsReleaseBranch = false, + IsMainBranch = true, PreReleaseWeight = 55000 }); WithBranch(ReleaseBranch.Name).WithConfiguration(new BranchConfiguration { - Increment = IncrementStrategy.None, - RegularExpression = ReleaseBranch.RegexPattern, DeploymentMode = DeploymentMode.ManualDeployment, - SourceBranches = - [ - this.MainBranch.Name, - this.ReleaseBranch.Name - ], Label = "beta", + Increment = IncrementStrategy.Patch, PreventIncrement = new PreventIncrementConfiguration() { OfMergedBranch = true, + WhenBranchMerged = false, WhenCurrentCommitTagged = false }, TrackMergeTarget = false, + TrackMergeMessage = true, + RegularExpression = ReleaseBranch.RegexPattern, + SourceBranches = + [ + this.MainBranch.Name + ], TracksReleaseBranches = false, - IsMainBranch = false, IsReleaseBranch = true, + IsMainBranch = false, PreReleaseWeight = 30000 }); WithBranch(FeatureBranch.Name).WithConfiguration(new BranchConfiguration { + DeploymentMode = DeploymentMode.ManualDeployment, + Label = ConfigurationConstants.BranchNamePlaceholder, Increment = IncrementStrategy.Inherit, + PreventIncrement = new PreventIncrementConfiguration() + { + WhenCurrentCommitTagged = false + }, RegularExpression = FeatureBranch.RegexPattern, - DeploymentMode = DeploymentMode.ManualDeployment, SourceBranches = [ this.MainBranch.Name, - this.ReleaseBranch.Name, - this.FeatureBranch.Name + this.ReleaseBranch.Name ], - Label = ConfigurationConstants.BranchNamePlaceholder, + TrackMergeMessage = true, + IsMainBranch = false, PreReleaseWeight = 30000 }); WithBranch(PullRequestBranch.Name).WithConfiguration(new BranchConfiguration { + DeploymentMode = DeploymentMode.ContinuousDelivery, + Label = "PullRequest", Increment = IncrementStrategy.Inherit, + PreventIncrement = new PreventIncrementConfiguration() + { + OfMergedBranch = true, + WhenCurrentCommitTagged = false + }, + LabelNumberPattern = ConfigurationConstants.DefaultLabelNumberPattern, RegularExpression = PullRequestBranch.RegexPattern, - DeploymentMode = DeploymentMode.ContinuousDelivery, SourceBranches = [ this.MainBranch.Name, this.ReleaseBranch.Name, this.FeatureBranch.Name ], - Label = "PullRequest", - LabelNumberPattern = ConfigurationConstants.DefaultLabelNumberPattern, + TrackMergeMessage = true, PreReleaseWeight = 30000 }); WithBranch(UnknownBranch.Name).WithConfiguration(new BranchConfiguration { - RegularExpression = UnknownBranch.RegexPattern, - Label = ConfigurationConstants.BranchNamePlaceholder, DeploymentMode = DeploymentMode.ManualDeployment, + Label = ConfigurationConstants.BranchNamePlaceholder, Increment = IncrementStrategy.Inherit, + PreventIncrement = new PreventIncrementConfiguration() + { + WhenCurrentCommitTagged = false + }, + RegularExpression = UnknownBranch.RegexPattern, SourceBranches = [ this.MainBranch.Name, this.ReleaseBranch.Name, this.FeatureBranch.Name, this.PullRequestBranch.Name - ] + ], + TrackMergeMessage = false, + IsMainBranch = false }); } } diff --git a/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs index 1a17da8ae4..6ac109ccdb 100644 --- a/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs +++ b/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs @@ -46,78 +46,95 @@ private TrunkBasedConfigurationBuilder() WithBranch(MainBranch.Name).WithConfiguration(new BranchConfiguration() { - Increment = IncrementStrategy.Patch, - RegularExpression = MainBranch.RegexPattern, DeploymentMode = DeploymentMode.ContinuousDeployment, - SourceBranches = [], Label = string.Empty, + Increment = IncrementStrategy.Patch, PreventIncrement = new PreventIncrementConfiguration() { OfMergedBranch = true }, TrackMergeTarget = false, + TrackMergeMessage = true, + RegularExpression = MainBranch.RegexPattern, + SourceBranches = [], TracksReleaseBranches = false, - IsMainBranch = true, IsReleaseBranch = false, + IsMainBranch = true, PreReleaseWeight = 55000 }); WithBranch(FeatureBranch.Name).WithConfiguration(new BranchConfiguration() { + DeploymentMode = DeploymentMode.ContinuousDelivery, + Label = ConfigurationConstants.BranchNamePlaceholder, Increment = IncrementStrategy.Minor, + PreventIncrement = new PreventIncrementConfiguration() + { + WhenCurrentCommitTagged = false + }, RegularExpression = FeatureBranch.RegexPattern, SourceBranches = [ this.MainBranch.Name ], - PreventIncrement = new PreventIncrementConfiguration() - { - WhenCurrentCommitTagged = false - }, + TrackMergeMessage = true, + IsMainBranch = false, PreReleaseWeight = 30000 }); WithBranch(HotfixBranch.Name).WithConfiguration(new BranchConfiguration() { + DeploymentMode = DeploymentMode.ContinuousDelivery, + Label = ConfigurationConstants.BranchNamePlaceholder, Increment = IncrementStrategy.Patch, + PreventIncrement = new PreventIncrementConfiguration() + { + WhenCurrentCommitTagged = false + }, RegularExpression = HotfixBranch.RegexPattern, SourceBranches = [ this.MainBranch.Name ], - PreventIncrement = new PreventIncrementConfiguration() - { - WhenCurrentCommitTagged = false - }, + IsReleaseBranch = true, + IsMainBranch = false, PreReleaseWeight = 30000 }); WithBranch(PullRequestBranch.Name).WithConfiguration(new BranchConfiguration { + DeploymentMode = DeploymentMode.ContinuousDelivery, + Label = "PullRequest", Increment = IncrementStrategy.Inherit, + PreventIncrement = new PreventIncrementConfiguration() + { + OfMergedBranch = true, + WhenCurrentCommitTagged = false + }, + LabelNumberPattern = ConfigurationConstants.DefaultLabelNumberPattern, RegularExpression = PullRequestBranch.RegexPattern, - DeploymentMode = DeploymentMode.ContinuousDelivery, SourceBranches = [ - this.MainBranch.Name + this.MainBranch.Name, + this.FeatureBranch.Name, + this.HotfixBranch.Name, ], - Label = "PullRequest", - LabelNumberPattern = ConfigurationConstants.DefaultLabelNumberPattern, + TrackMergeMessage = true, PreReleaseWeight = 30000 }); WithBranch(UnknownBranch.Name).WithConfiguration(new BranchConfiguration { Increment = IncrementStrategy.Patch, + PreventIncrement = new PreventIncrementConfiguration() + { + WhenCurrentCommitTagged = false + }, RegularExpression = UnknownBranch.RegexPattern, SourceBranches = [ this.MainBranch.Name ], - PreventIncrement = new PreventIncrementConfiguration() - { - WhenCurrentCommitTagged = false - }, PreReleaseWeight = 30000 }); } diff --git a/src/GitVersion.Configuration/GitVersionConfiguration.cs b/src/GitVersion.Configuration/GitVersionConfiguration.cs index 079fd14b11..c0823eecc6 100644 --- a/src/GitVersion.Configuration/GitVersionConfiguration.cs +++ b/src/GitVersion.Configuration/GitVersionConfiguration.cs @@ -149,6 +149,8 @@ IReadOnlyDictionary IGitVersionConfiguration.Branc public override IBranchConfiguration Inherit(IBranchConfiguration configuration) => throw new NotSupportedException(); + public override IBranchConfiguration Inherit(EffectiveConfiguration configuration) => throw new NotSupportedException(); + public IBranchConfiguration GetEmptyBranchConfiguration() => new BranchConfiguration { RegularExpression = string.Empty, diff --git a/src/GitVersion.Configuration/Workflows/GitFlow/v1.yml b/src/GitVersion.Configuration/Workflows/GitFlow/v1.yml index 8cb25f9a4d..78406ad6a1 100644 --- a/src/GitVersion.Configuration/Workflows/GitFlow/v1.yml +++ b/src/GitVersion.Configuration/Workflows/GitFlow/v1.yml @@ -25,8 +25,10 @@ branches: prevent-increment: when-current-commit-tagged: false track-merge-target: true + track-merge-message: true regex: ^dev(elop)?(ment)?$ - source-branches: [] + source-branches: + - main is-source-branch-for: [] tracks-release-branches: true is-release-branch: false @@ -38,10 +40,9 @@ branches: prevent-increment: of-merged-branch: true track-merge-target: false + track-merge-message: true regex: ^master$|^main$ - source-branches: - - develop - - release + source-branches: [] is-source-branch-for: [] tracks-release-branches: false is-release-branch: false @@ -50,17 +51,15 @@ branches: release: mode: ManualDeployment label: beta - increment: None + increment: Minor prevent-increment: of-merged-branch: true when-current-commit-tagged: false track-merge-target: false regex: ^releases?[/-](?.+) source-branches: - - develop - main - support - - release is-source-branch-for: [] tracks-release-branches: false is-release-branch: true @@ -70,23 +69,28 @@ branches: mode: ManualDeployment label: '{BranchName}' increment: Inherit - prevent-increment: {} + prevent-increment: + when-current-commit-tagged: false + track-merge-message: true regex: ^features?[/-](?.+) source-branches: - develop - main - release - - feature - support - hotfix is-source-branch-for: [] + is-main-branch: false pre-release-weight: 30000 pull-request: mode: ContinuousDelivery label: PullRequest increment: Inherit - prevent-increment: {} + prevent-increment: + of-merged-branch: true + when-current-commit-tagged: false label-number-pattern: '[/-](?\d+)' + track-merge-message: true regex: ^(pull|pull\-requests|pr)[/-] source-branches: - develop @@ -105,12 +109,11 @@ branches: when-current-commit-tagged: false regex: ^hotfix(es)?[/-](?.+) source-branches: - - release - main - support - - hotfix is-source-branch-for: [] is-release-branch: true + is-main-branch: false pre-release-weight: 30000 support: label: '' @@ -130,7 +133,8 @@ branches: mode: ManualDeployment label: '{BranchName}' increment: Inherit - prevent-increment: {} + prevent-increment: + when-current-commit-tagged: true regex: (?.+) source-branches: - main @@ -141,6 +145,7 @@ branches: - hotfix - support is-source-branch-for: [] + is-main-branch: false ignore: sha: [] mode: ContinuousDelivery diff --git a/src/GitVersion.Configuration/Workflows/GitHubFlow/v1.yml b/src/GitVersion.Configuration/Workflows/GitHubFlow/v1.yml index 4082d04d3e..7ca7e472d6 100644 --- a/src/GitVersion.Configuration/Workflows/GitHubFlow/v1.yml +++ b/src/GitVersion.Configuration/Workflows/GitHubFlow/v1.yml @@ -24,10 +24,10 @@ branches: increment: Patch prevent-increment: of-merged-branch: true - track-merge-target: false + tracks-merge-target: false + tracks-merge-message: true regex: ^master$|^main$ - source-branches: - - release + source-branches: [] is-source-branch-for: [] tracks-release-branches: false is-release-branch: false @@ -36,15 +36,16 @@ branches: release: mode: ManualDeployment label: beta - increment: None + increment: Patch prevent-increment: of-merged-branch: true + when-branch-merged: false when-current-commit-tagged: false track-merge-target: false + track-merge-message: true regex: ^releases?[/-](?.+) source-branches: - main - - release is-source-branch-for: [] tracks-release-branches: false is-release-branch: true @@ -54,17 +55,23 @@ branches: mode: ManualDeployment label: '{BranchName}' increment: Inherit + prevent-increment: + when-current-commit-tagged: false regex: ^features?[/-](?.+) source-branches: - main - release - - feature is-source-branch-for: [] + track-merge-message: true + is-main-branch: false pre-release-weight: 30000 pull-request: mode: ContinuousDelivery label: PullRequest increment: Inherit + prevent-increment: + of-merged-branch: true + when-current-commit-tagged: false label-number-pattern: '[/-](?\d+)' regex: ^(pull|pull\-requests|pr)[/-] source-branches: @@ -72,18 +79,21 @@ branches: - release - feature is-source-branch-for: [] + track-merge-message: true pre-release-weight: 30000 unknown: mode: ManualDeployment label: '{BranchName}' increment: Inherit + prevent-increment: + when-current-commit-tagged: false regex: (?.+) source-branches: - main - release - - feature - - pull-request is-source-branch-for: [] + track-merge-message: false + is-main-branch: false ignore: sha: [] mode: ContinuousDelivery diff --git a/src/GitVersion.Configuration/Workflows/TrunkBased/v1.yml b/src/GitVersion.Configuration/Workflows/TrunkBased/v1.yml index 023be21f85..3bf2f474e4 100644 --- a/src/GitVersion.Configuration/Workflows/TrunkBased/v1.yml +++ b/src/GitVersion.Configuration/Workflows/TrunkBased/v1.yml @@ -21,6 +21,7 @@ branches: increment: Patch prevent-increment: of-merged-branch: true + when-current-commit-tagged: trueS track-merge-target: false regex: ^master$|^main$ source-branches: [] diff --git a/src/GitVersion.Core.Tests/IntegrationTests/BranchWithoutCommitScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/BranchWithoutCommitScenarios.cs index e64fdcec3c..9735e16114 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/BranchWithoutCommitScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/BranchWithoutCommitScenarios.cs @@ -15,23 +15,23 @@ public void CanTakeVersionFromReleaseBranch() fixture.Repository.CreateBranch("release-4.0.123"); fixture.Checkout(commit.Sha); - fixture.AssertFullSemver("4.0.123-beta.1+0", null, fixture.Repository, commit.Sha, false, "release-4.0.123"); + fixture.AssertFullSemver("4.0.123-beta.1+1", null, fixture.Repository, commit.Sha, false, "release-4.0.123"); } - [Test] - public void BranchVersionHavePrecedenceOverTagVersionIfVersionGreaterThanTag() + [TestCase("0.1.0-alpha.1", "1.0.0-beta.1+2")] + [TestCase("1.0.0-alpha.1", "1.0.0-beta.1+2")] + [TestCase("1.0.1-alpha.1", "1.0.1-beta.1+2")] + public void BranchVersionHavePrecedenceOverTagVersionIfVersionGreaterThanTag(string tag, string expected) { using var fixture = new EmptyRepositoryFixture(); - fixture.Repository.MakeACommit(); + fixture.MakeACommit(); - fixture.Repository.CreateBranch("develop"); - fixture.Checkout("develop"); - fixture.MakeATaggedCommit("0.1.0-alpha.1"); // simulate merge from feature branch + fixture.BranchTo("develop"); + fixture.MakeATaggedCommit(tag); // simulate merge from feature branch - fixture.Repository.CreateBranch("release/1.0.0"); - fixture.Checkout("release/1.0.0"); + fixture.BranchTo("release/1.0.0"); - fixture.AssertFullSemver("1.0.0-beta.1+0"); + fixture.AssertFullSemver(expected); } } diff --git a/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow.cs b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow.cs new file mode 100644 index 0000000000..fbbaa9ed63 --- /dev/null +++ b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow.cs @@ -0,0 +1,497 @@ +using GitVersion.Configuration; +using GitVersion.VersionCalculation; + +namespace GitVersion.Core.Tests.IntegrationTests; + +[TestFixture] +[Parallelizable(ParallelScope.All)] +public class CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow +{ + private static GitFlowConfigurationBuilder configurationBuilder => GitFlowConfigurationBuilder.New; + + /// + /// GitFlow - Feature branch (Increment patch on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeature1(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+1", configuration); + + fixture.ApplyTag("0.0.3-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-4", configuration); + } + + /// + /// GitFlow - Merge main to feature branch (Increment patch on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeature2(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+3", configuration); + + fixture.ApplyTag("0.0.3-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-6", configuration); + } + + /// + /// GitFlow - Pull requests (increment patch on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequest(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-2", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void EnsureReleaseAndFeatureBranch1(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout("release/2.0.0"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo("release/2.0.0", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(true, "release/0.1.0")] + public void EnsureReleaseAndFeatureBranch2(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1", configuration); + } + + /// + /// GitFlow - Release branch (Increment patch on main) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureReleaseBranch1(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+4", configuration); + + fixture.ApplyTag("2.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1", configuration); + } + + /// + /// GitFlow - Release branch (Increment patch on main and none on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(true, "release/0.1.0")] + public void EnsureReleaseBranch2(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+4", configuration); + + fixture.ApplyTag("0.1.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1", configuration); + } +} diff --git a/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow2.cs b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow2.cs new file mode 100644 index 0000000000..05ede021f4 --- /dev/null +++ b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow2.cs @@ -0,0 +1,861 @@ +using GitVersion.Configuration; +using GitVersion.VersionCalculation; + +namespace GitVersion.Core.Tests.IntegrationTests; + +[TestFixture] +[Parallelizable(ParallelScope.All)] +public class CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow2 +{ + private static GitFlowConfigurationBuilder configurationBuilder => GitFlowConfigurationBuilder.New; + + /// + /// GitFlow - PullRequest to Develop branch (Increment patch on main, minor on development and minor on feature branch) + /// + [TestCase(false)] + [TestCase(true)] + public void GitFlowFeatureDevelopmentWithDevelopBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.1", configuration); + + fixture.ApplyTag("0.1.0-alpha.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.2", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); + + fixture.Checkout("develop"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.6", configuration); + + fixture.Checkout("feature/foo"); + fixture.Repository.Branches.Remove("pull/2/merge"); + fixture.MergeTo("develop", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.6", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/3/merge"); + fixture.MergeNoFF("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest3.7", configuration); + + fixture.Checkout("develop"); + fixture.Repository.Branches.Remove("pull/3/merge"); + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-7", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1", configuration); + } + + /// + /// GitFlow - PullRequest to Develop branch (Increment patch on main, minor on development and minor on feature branch) + /// + [TestCase(false)] + [TestCase(true)] + public void GitFlowFeatureDevelopmentWithDevelopBranchFast(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.0", configuration); + + fixture.BranchTo("feature/foo"); + + if (useTrunkBased) + { + // ❔ expected: "0.1.0-foo.1+0" + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + } + + fixture.MakeACommit("B"); + + if (useTrunkBased) + { + // ❔ expected: "0.1.0-foo.1+1" + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + } + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); + + fixture.Checkout("develop"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.4", configuration); + + fixture.Checkout("feature/foo"); + fixture.Repository.Branches.Remove("pull/2/merge"); + fixture.MergeTo("develop", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.4", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/3/merge"); + fixture.MergeNoFF("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest3.5", configuration); + + fixture.Checkout("develop"); + fixture.Repository.Branches.Remove("pull/3/merge"); + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-5", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1", configuration); + } + + /// + /// GitFlow - Feature PullRequest to Main branch (Increment patch on main, minor on development and minor on feature branch) + /// + [TestCase(false)] + [TestCase(true)] + public void GitFlowFeatureDevelopmentWithMainBranchFast(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.ApplyTag("0.0.2-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+2", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest2.4", configuration); + + fixture.Checkout("feature/foo"); + fixture.Repository.Branches.Remove("pull/2/merge"); + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-4", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1", configuration); + } + + /// + /// GitFlow - Feature PullRequest to Main branch (Increment patch on main, minor on development and minor on feature branch) + /// + [TestCase(false)] + [TestCase(true)] + public void GitFlowBugFixWithMainBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("hotfix/bar"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.ApplyTag("0.0.2-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+1", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+2", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("hotfix/bar"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest2.4", configuration); + + fixture.Checkout("hotfix/bar"); + fixture.Repository.Branches.Remove("pull/2/merge"); + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-4", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1", configuration); + } + + /// + /// GitFlow - Feature PullRequest to Main branch (Increment patch on main, minor on development and minor on feature branch) + /// + [TestCase(false)] + [TestCase(true)] + public void GitFlowBugFixWithDevelopBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.1", configuration); + + fixture.BranchTo("hotfix/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+2", configuration); + + fixture.ApplyTag("0.0.2-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+2", configuration); + + fixture.Checkout("develop"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("hotfix/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.5", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/3/merge"); + fixture.MergeNoFF("hotfix/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest3.5", configuration); + + fixture.Checkout("hotfix/foo"); + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-5", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1", configuration); + } + + /// + /// GitFlow - Feature PullRequest to Main branch (Increment patch on main, minor on development and minor on feature branch) + /// + [TestCase(false)] + [TestCase(true)] + public void GitFlowBugFixWithDevelopBranchFast(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.0", configuration); + + fixture.BranchTo("hotfix/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.ApplyTag("0.0.2-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+1", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+2", configuration); + + fixture.Checkout("develop"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("hotfix/foo"); + + if (useTrunkBased) + { + // ❔ expected: "0.1.0-PullRequest2.4" + fixture.AssertFullSemver("0.0.2-PullRequest2.4", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.4", configuration); + } + + fixture.Checkout("main"); + fixture.BranchTo("pull/3/merge"); + fixture.MergeNoFF("hotfix/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest3.4", configuration); + } + else + { + // ❔ expected: "0.0.2-PullRequest3.4" + fixture.AssertFullSemver("0.1.0-PullRequest3.4", configuration); + } + + fixture.Checkout("hotfix/foo"); + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-4", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1", configuration); + } + + [Test] + public void JustATest() + { + var configuration = configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + fixture.ApplyTag("0.1.0"); + + for (int i = 0; i < 10; i++) fixture.MakeACommit(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.10-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void GitFlowFeatureDevelopmentWithReleaseNextBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.1", configuration); + + fixture.BranchTo("release/next"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.Checkout("develop"); + fixture.MakeACommit(); + fixture.Checkout("release/next"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+2", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+3", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+4", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); + + fixture.Checkout("release/next"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.7", configuration); + + fixture.Checkout("feature/foo"); + fixture.Repository.Branches.Remove("pull/2/merge"); + fixture.MergeTo("release/next", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+7", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/3/merge"); + fixture.MergeNoFF("release/next"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest3.8", configuration); + + fixture.Checkout("release/next"); + fixture.Repository.Branches.Remove("pull/3/merge"); + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-8", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void GitFlowFeatureDevelopmentWithReleaseNextBranchFast(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.0", configuration); + + fixture.BranchTo("release/next"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.Checkout("develop"); + fixture.MakeACommit(); + fixture.Checkout("release/next"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+2", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); + + fixture.Checkout("release/next"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.6", configuration); + + fixture.Checkout("feature/foo"); + fixture.Repository.Branches.Remove("pull/2/merge"); + fixture.MergeTo("release/next", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+6", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/3/merge"); + fixture.MergeNoFF("release/next"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest3.7", configuration); + + fixture.Checkout("release/next"); + fixture.Repository.Branches.Remove("pull/3/merge"); + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-7", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void GitFlowFeatureDevelopmentWithRelease100Branch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.1", configuration); + + fixture.BranchTo("release/1.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.Checkout("develop"); + fixture.MakeACommit(); + fixture.Checkout("release/1.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+4", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+2", configuration); + + fixture.Checkout("release/1.0.0"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.7", configuration); + + fixture.Checkout("feature/foo"); + fixture.Repository.Branches.Remove("pull/2/merge"); + fixture.MergeTo("release/1.0.0", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+7", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/3/merge"); + fixture.MergeNoFF("release/1.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest3.8", configuration); + + fixture.Checkout("release/1.0.0"); + fixture.Repository.Branches.Remove("pull/3/merge"); + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-8", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-1", configuration); + } +} diff --git a/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitHubFlow.cs b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitHubFlow.cs new file mode 100644 index 0000000000..58136956fa --- /dev/null +++ b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitHubFlow.cs @@ -0,0 +1,494 @@ +using GitVersion.Configuration; +using GitVersion.VersionCalculation; + +namespace GitVersion.Core.Tests.IntegrationTests; + +[TestFixture] +[Parallelizable(ParallelScope.All)] +public class CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitHubFlow +{ + private static GitHubFlowConfigurationBuilder configurationBuilder => GitHubFlowConfigurationBuilder.New; + + /// + /// GitHubFlow - Feature branch (Increment patch on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeature1(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+1", configuration); + + fixture.ApplyTag("0.0.3-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-4", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment patch on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeature2(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+3", configuration); + + fixture.ApplyTag("0.0.3-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-6", configuration); + } + + /// + /// GitHubFlow - Pull requests (increment patch on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequest(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-2", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void EnsureReleaseAndFeatureBranch1(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout("release/2.0.0"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo("release/2.0.0", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(true, "release/0.0.2")] + public void EnsureReleaseAndFeatureBranch2(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+3", configuration); + + fixture.ApplyTag("0.0.2-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment patch on main) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureReleaseBranch1(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+4", configuration); + + fixture.ApplyTag("2.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment patch on main and none on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + public void EnsureReleaseBranch2(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.1+4", configuration); + + fixture.ApplyTag("0.0.3-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.3"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.4-1", configuration); + } +} diff --git a/src/GitVersion.Core.Tests/IntegrationTests/ContinuousDeliveryTestScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/ContinuousDeliveryTestScenarios.cs index a2cc3db30f..60c0cc0ab2 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/ContinuousDeliveryTestScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/ContinuousDeliveryTestScenarios.cs @@ -238,32 +238,32 @@ public void ShouldCalculateTheCorrectVersionWhenMergingFromReleaseToFeatureBranc fixture.BranchTo("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.0", configuration); + fixture.AssertFullSemver("1.0.0-beta.1", configuration); fixture.BranchTo("feature/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-just-a-test.0", configuration); + fixture.AssertFullSemver("1.0.0-just-a-test.1", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-just-a-test.1", configuration); + fixture.AssertFullSemver("1.0.0-just-a-test.2", configuration); fixture.Checkout("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.0", configuration); + fixture.AssertFullSemver("1.0.0-beta.1", configuration); fixture.MergeNoFF("feature/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.2", configuration); + fixture.AssertFullSemver("1.0.0-beta.3", configuration); fixture.Repository.Branches.Remove("feature/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.2", configuration); + fixture.AssertFullSemver("1.0.0-beta.3", configuration); fixture.Repository.DumpGraph(); } @@ -287,10 +287,10 @@ public void ShouldFallbackToTheVersionOnDevelopLikeTheReleaseWasNeverCreatedWhen .WithTrackMergeTarget(false) ) .WithBranch("develop", builder => builder - .WithDeploymentMode(DeploymentMode.ContinuousDelivery).WithTrackMergeTarget(false) + .WithTrackMergeTarget(false) ) .WithBranch("release", builder => builder - .WithDeploymentMode(DeploymentMode.ContinuousDelivery).WithTrackMergeTarget(false) + .WithTrackMergeTarget(false) ) .Build(); @@ -314,17 +314,17 @@ public void ShouldFallbackToTheVersionOnDevelopLikeTheReleaseWasNeverCreatedWhen fixture.BranchTo("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.0", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.2", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); fixture.Checkout("develop"); @@ -344,8 +344,8 @@ public void ShouldFallbackToTheVersionOnDevelopLikeTheReleaseWasNeverCreatedWhen // cancel the release 1.0.0 fixture.Repository.Branches.Remove("release/1.0.0"); - // ❔ expected: "0.1.0-alpha.6" - fixture.AssertFullSemver("1.1.0-alpha.4", configuration); + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-alpha.6", configuration); fixture.Repository.DumpGraph(); } @@ -373,11 +373,9 @@ public void ShouldConsiderTheMergeCommitFromMainToDevelopWhenReleaseHasBeenMerge .WithTrackMergeTarget(false) ) .WithBranch("develop", builder => builder - .WithDeploymentMode(DeploymentMode.ContinuousDelivery) .WithTrackMergeTarget(false) ) .WithBranch("release", builder => builder - .WithDeploymentMode(DeploymentMode.ContinuousDelivery) .WithTrackMergeTarget(false) ) .Build(); @@ -402,17 +400,17 @@ public void ShouldConsiderTheMergeCommitFromMainToDevelopWhenReleaseHasBeenMerge fixture.BranchTo("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.0", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.2", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); fixture.Checkout("develop"); @@ -427,8 +425,8 @@ public void ShouldConsiderTheMergeCommitFromMainToDevelopWhenReleaseHasBeenMerge fixture.Checkout("main"); fixture.MergeNoFF("release/1.0.0"); - // ❔ expected: "0.0.1-ci.5" - fixture.AssertFullSemver("1.0.0-ci.0", configuration); + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-ci.5", configuration); fixture.ApplyTag("1.0.0"); @@ -442,13 +440,13 @@ public void ShouldConsiderTheMergeCommitFromMainToDevelopWhenReleaseHasBeenMerge fixture.MergeNoFF("main"); - // ❔ expected: "1.1.0-alpha.2" - fixture.AssertFullSemver("1.1.0-alpha.6", configuration); + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-alpha.2", configuration); fixture.Repository.Branches.Remove("release/1.0.0"); - // ❔ expected: "1.1.0-alpha.2 - fixture.AssertFullSemver("1.1.0-alpha.6", configuration); + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-alpha.2", configuration); fixture.Repository.DumpGraph(); } diff --git a/src/GitVersion.Core.Tests/IntegrationTests/CreatingAFeatureBranchFromAReleaseBranchScenario.cs b/src/GitVersion.Core.Tests/IntegrationTests/CreatingAFeatureBranchFromAReleaseBranchScenario.cs index 50d2c3e7f1..e803fa05f1 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/CreatingAFeatureBranchFromAReleaseBranchScenario.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/CreatingAFeatureBranchFromAReleaseBranchScenario.cs @@ -32,12 +32,12 @@ public void ShouldTreatTheFeatureBranchLikeTheFirstReleaseBranchWhenItHasBeenBra fixture.BranchTo("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); fixture.BranchTo("feature/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-just-a-test.1+0", configuration); + fixture.AssertFullSemver("1.0.0-just-a-test.1+1", configuration); fixture.Checkout("main"); fixture.MakeACommit(); @@ -49,37 +49,37 @@ public void ShouldTreatTheFeatureBranchLikeTheFirstReleaseBranchWhenItHasBeenBra fixture.Checkout("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); fixture.Checkout("feature/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-just-a-test.1+0", configuration); + fixture.AssertFullSemver("1.0.0-just-a-test.1+1", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-just-a-test.1+1", configuration); + fixture.AssertFullSemver("1.0.0-just-a-test.1+2", configuration); fixture.Checkout("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); fixture.MergeNoFF("feature/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); fixture.Repository.Branches.Remove("feature/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); fixture.Repository.DumpGraph(); } @@ -108,7 +108,7 @@ public void ShouldTreatTheFeatureBranchNotLikeTheReleaseBranchWhenItHasBeenBranc fixture.BranchTo("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); // 1.1.0 is correct because the base branch points to develop and release // maybe we can fix it somehow using the configuration with PreReleaseWeight? @@ -131,45 +131,43 @@ public void ShouldTreatTheFeatureBranchNotLikeTheReleaseBranchWhenItHasBeenBranc fixture.Checkout("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); fixture.Checkout("feature/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-just-a-test.1+0", configuration); + fixture.AssertFullSemver("1.0.0-just-a-test.1+1", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-just-a-test.1+1", configuration); + fixture.AssertFullSemver("1.0.0-just-a-test.1+2", configuration); fixture.Checkout("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); fixture.MergeNoFF("feature/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); fixture.Repository.Branches.Remove("feature/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); fixture.Repository.DumpGraph(); } - [TestCase("main")] - [TestCase("develop")] - public void ShouldTreatTheHotfixBranchLikeTheFirstReleaseBranchWhenItHasBeenBranchedFromMainOrDevelopAndFirstReleaseBranchButNotFromTheSecondReleaseBranch( - string branchName) + [Test] + public void ShouldTreatTheHotfixBranchLikeTheFirstReleaseBranchWhenItHasBeenBranchedFromMainAndFirstReleaseBranchButNotFromTheSecondReleaseBranch() { // *2b9c8bf 42 minutes ago(HEAD -> release/ 1.0.0) // *66cfc66 44 minutes ago @@ -182,64 +180,202 @@ public void ShouldTreatTheHotfixBranchLikeTheFirstReleaseBranchWhenItHasBeenBran var configuration = GitFlowConfigurationBuilder.New.Build(); - using var fixture = new EmptyRepositoryFixture(branchName); + using var fixture = new EmptyRepositoryFixture("main"); - fixture.Repository.MakeACommit(); + fixture.MakeACommit(); fixture.BranchTo("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); fixture.BranchTo("hotfix/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("0.0.1-beta.1+1", configuration); - fixture.Checkout(branchName); + fixture.Checkout("main"); fixture.MakeACommit(); fixture.BranchTo("release/1.1.0"); fixture.Checkout("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); fixture.Checkout("hotfix/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("0.0.1-beta.1+1", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + fixture.AssertFullSemver("0.0.1-beta.1+2", configuration); fixture.Checkout("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); fixture.MergeNoFF("hotfix/just-a-test"); + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + + fixture.Repository.Branches.Remove("hotfix/just-a-test"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + + fixture.MakeACommit(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); + + fixture.Repository.DumpGraph(); + } + + [Test] + public void ShouldTreatTheHotfixBranchLikeTheFirstReleaseBranchWhenItHasBeenBranchedFromDevelopAndFirstReleaseBranchButNotFromTheSecondReleaseBranch() + { + // *2b9c8bf 42 minutes ago(HEAD -> release/ 1.0.0) + // *66cfc66 44 minutes ago + // |\ + // | *e9978b9 45 minutes ago + // |/ + // | *c2b96e5 47 minutes ago(release/ 1.1.0, main|develop) + // |/ + // *e00f53d 49 minutes ago + + var configuration = GitFlowConfigurationBuilder.New.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit(); + fixture.BranchTo("develop"); + fixture.MakeACommit(); + fixture.BranchTo("release/1.0.0"); + // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + fixture.BranchTo("hotfix/just-a-test"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+2", configuration); + + fixture.Checkout("develop"); + fixture.MakeACommit(); + fixture.BranchTo("release/1.1.0"); + fixture.Checkout("release/1.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + + fixture.Checkout("hotfix/just-a-test"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+2", configuration); + + fixture.MakeACommit(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+3", configuration); + + fixture.Checkout("release/1.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + + fixture.MergeNoFF("hotfix/just-a-test"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); + fixture.Repository.Branches.Remove("hotfix/just-a-test"); + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); + + fixture.MakeACommit(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); + + fixture.Repository.DumpGraph(); + } + + [Test] + public void ShouldTreatTheFeatureBranchLikeTheFirstReleaseBranchWhenItHasBeenBranchedFromFirstButNotFromTheSecondReleaseBranchFromMain() + { + // * 3807c66 49 minutes ago (HEAD -> release/1.0.0) + // * da32145 51 minutes ago + // |\ + // | * 6a89f35 52 minutes ago + // |/ + // * 19f2980 56 minutes ago + // | * 2282a59 54 minutes ago (release/1.1.0, main) + // |/ + // * d7b7c5e 58 minutes ago + + var configuration = GitFlowConfigurationBuilder.New.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + fixture.Repository.MakeACommit(); + + fixture.BranchTo("release/1.0.0"); + fixture.Repository.MakeACommit(); + // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + fixture.BranchTo("feature/just-a-test"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-just-a-test.1+2", configuration); + + fixture.Checkout("main"); fixture.MakeACommit(); + fixture.BranchTo("release/1.1.0"); + fixture.Checkout("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + + fixture.Checkout("feature/just-a-test"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-just-a-test.1+2", configuration); + + fixture.MakeACommit(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-just-a-test.1+3", configuration); + + fixture.Checkout("release/1.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + + fixture.MergeNoFF("feature/just-a-test"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); + + fixture.Repository.Branches.Remove("feature/just-a-test"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); + + fixture.MakeACommit(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); fixture.Repository.DumpGraph(); } - [TestCase("main")] - [TestCase("develop")] - public void ShouldTreatTheFeatureBranchLikeTheFirstReleaseBranchWhenItHasBeenBranchedFromFirstButNotFromTheSecondReleaseBranch( - string branchName) + [Test] + public void ShouldTreatTheFeatureBranchLikeTheFirstReleaseBranchWhenItHasBeenBranchedFromFirstButNotFromTheSecondReleaseBranchFromDevelop() { // *1525ad0 38 minutes ago(HEAD -> release/ 1.0.0) // *476fc51 40 minutes ago @@ -253,65 +389,66 @@ public void ShouldTreatTheFeatureBranchLikeTheFirstReleaseBranchWhenItHasBeenBra var configuration = GitFlowConfigurationBuilder.New.Build(); - using var fixture = new EmptyRepositoryFixture(branchName); + using var fixture = new EmptyRepositoryFixture("main"); + fixture.Repository.MakeACommit(); + + fixture.BranchTo("develop"); fixture.Repository.MakeACommit(); fixture.BranchTo("release/1.0.0"); fixture.Repository.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); fixture.BranchTo("feature/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-just-a-test.1+1", configuration); + fixture.AssertFullSemver("1.0.0-just-a-test.1+3", configuration); - fixture.Checkout(branchName); + fixture.Checkout("main"); fixture.MakeACommit(); fixture.BranchTo("release/1.1.0"); fixture.Checkout("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); fixture.Checkout("feature/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-just-a-test.1+1", configuration); + fixture.AssertFullSemver("1.0.0-just-a-test.1+3", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-just-a-test.1+2", configuration); + fixture.AssertFullSemver("1.0.0-just-a-test.1+4", configuration); fixture.Checkout("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); fixture.MergeNoFF("feature/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); fixture.Repository.Branches.Remove("feature/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+6", configuration); fixture.Repository.DumpGraph(); } - [TestCase("main")] - [TestCase("develop")] - public void ShouldTreatTheHotfixBranchLikeTheFirstReleaseBranchWhenItHasBeenBranchedFromFirstButNotFromTheSecondReleaseBranch( - string branchName) + [Test] + public void ShouldTreatTheHotfixBranchLikeTheFirstReleaseBranchWhenItHasBeenBranchedFromFirstButNotFromTheSecondReleaseBranchOnMain() { // *1525ad0 38 minutes ago(HEAD -> release/ 1.0.0) // *476fc51 40 minutes ago @@ -325,57 +462,130 @@ public void ShouldTreatTheHotfixBranchLikeTheFirstReleaseBranchWhenItHasBeenBran var configuration = GitFlowConfigurationBuilder.New.Build(); - using var fixture = new EmptyRepositoryFixture(branchName); + using var fixture = new EmptyRepositoryFixture("main"); fixture.Repository.MakeACommit(); fixture.BranchTo("release/1.0.0"); fixture.Repository.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); fixture.BranchTo("hotfix/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + fixture.AssertFullSemver("0.0.1-beta.1+2", configuration); - fixture.Checkout(branchName); + fixture.Checkout("main"); fixture.MakeACommit(); fixture.BranchTo("release/1.1.0"); fixture.Checkout("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); fixture.Checkout("hotfix/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + fixture.AssertFullSemver("0.0.1-beta.1+2", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + fixture.AssertFullSemver("0.0.1-beta.1+3", configuration); fixture.Checkout("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); fixture.MergeNoFF("hotfix/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); fixture.Repository.Branches.Remove("hotfix/just-a-test"); + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); + + fixture.MakeACommit(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); + + fixture.Repository.DumpGraph(); + } + + [Test] + public void ShouldTreatTheHotfixBranchLikeTheFirstReleaseBranchWhenItHasBeenBranchedFromFirstButNotFromTheSecondReleaseBranchOnDevelop() + { + // *1525ad0 38 minutes ago(HEAD -> release/ 1.0.0) + // *476fc51 40 minutes ago + // |\ + // | *c8c5030 41 minutes ago + // |/ + // *d91061d 45 minutes ago + // | *1ac98f5 43 minutes ago(release/ 1.1.0, develop) + // |/ + // *22596b8 47 minutes ago + + var configuration = GitFlowConfigurationBuilder.New.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + fixture.Repository.MakeACommit(); + + fixture.BranchTo("develop"); + fixture.Repository.MakeACommit(); + + fixture.BranchTo("release/1.0.0"); + fixture.Repository.MakeACommit(); + // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + fixture.BranchTo("hotfix/just-a-test"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+3", configuration); + + fixture.Checkout("develop"); fixture.MakeACommit(); + fixture.BranchTo("release/1.1.0"); + fixture.Checkout("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + + fixture.Checkout("hotfix/just-a-test"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+3", configuration); + + fixture.MakeACommit(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+4", configuration); + + fixture.Checkout("release/1.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + + fixture.MergeNoFF("hotfix/just-a-test"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); + + fixture.Repository.Branches.Remove("hotfix/just-a-test"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); + + fixture.MakeACommit(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+6", configuration); fixture.Repository.DumpGraph(); } @@ -403,42 +613,42 @@ public void ShouldTreatTheFeatureBranchLikeTheReleaseBranchWhenItHasBeenBranched fixture.BranchTo("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); fixture.BranchTo("feature/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-just-a-test.1+1", configuration); + fixture.AssertFullSemver("1.0.0-just-a-test.1+2", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-just-a-test.1+2", configuration); + fixture.AssertFullSemver("1.0.0-just-a-test.1+3", configuration); fixture.Checkout("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); fixture.MergeNoFF("feature/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); fixture.Repository.Branches.Remove("feature/just-a-test"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); fixture.Repository.DumpGraph(); } @@ -478,17 +688,17 @@ public void ShouldTreatTheMergeFromReleaseToDevelopLikeTheReleaseBranchHasNeverB fixture.BranchTo("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); fixture.Checkout("develop"); @@ -508,12 +718,12 @@ public void ShouldTreatTheMergeFromReleaseToDevelopLikeTheReleaseBranchHasNeverB fixture.Repository.Branches.Remove("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.1.0-alpha.4", configuration); + fixture.AssertFullSemver("1.1.0-alpha.6", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.1.0-alpha.5", configuration); + fixture.AssertFullSemver("1.1.0-alpha.7", configuration); fixture.Repository.DumpGraph(); } @@ -556,17 +766,17 @@ public void ShouldOnlyTrackTheCommitsOnDevelopBranchForNextReleaseWhenReleaseHas fixture.BranchTo("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); fixture.Checkout("develop"); @@ -582,7 +792,7 @@ public void ShouldOnlyTrackTheCommitsOnDevelopBranchForNextReleaseWhenReleaseHas fixture.MergeNoFF("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-0", configuration); + fixture.AssertFullSemver("1.0.0-5", configuration); fixture.ApplyTag("1.0.0"); @@ -597,12 +807,12 @@ public void ShouldOnlyTrackTheCommitsOnDevelopBranchForNextReleaseWhenReleaseHas fixture.MergeNoFF("main"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.1.0-alpha.6", configuration); + fixture.AssertFullSemver("1.1.0-alpha.2", configuration); fixture.Repository.Branches.Remove("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.1.0-alpha.6", configuration); + fixture.AssertFullSemver("1.1.0-alpha.2", configuration); fixture.Repository.DumpGraph(); } @@ -645,17 +855,17 @@ public void ShouldNotConsiderTheMergeCommitFromReleaseToMainWhenCommitHasNotBeen fixture.BranchTo("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); fixture.Checkout("develop"); @@ -671,12 +881,12 @@ public void ShouldNotConsiderTheMergeCommitFromReleaseToMainWhenCommitHasNotBeen fixture.MergeNoFF("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-0", configuration); + fixture.AssertFullSemver("1.0.0-5", configuration); fixture.Repository.Branches.Remove("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-0", configuration); + fixture.AssertFullSemver("1.0.0-5", configuration); fixture.ApplyTag("1.0.0"); @@ -691,7 +901,7 @@ public void ShouldNotConsiderTheMergeCommitFromReleaseToMainWhenCommitHasNotBeen fixture.MergeNoFF("main"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.1.0-alpha.6", configuration); + fixture.AssertFullSemver("1.1.0-alpha.2", configuration); fixture.Repository.DumpGraph(); } diff --git a/src/GitVersion.Core.Tests/IntegrationTests/DevelopScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/DevelopScenarios.cs index 1cf52387d6..2fab203ef4 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/DevelopScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/DevelopScenarios.cs @@ -161,7 +161,7 @@ public void InheritVersionFromParentReleaseBranchWithVersion2InsteadOfVersion3() fixture.BranchTo("release/2.0.0"); fixture.MakeACommit(); fixture.MakeACommit(); - fixture.AssertFullSemver("2.0.0-beta.1+2"); + fixture.AssertFullSemver("2.0.0-beta.1+3"); fixture.Checkout("develop"); fixture.AssertFullSemver("3.1.0-alpha.1"); fixture.MakeACommit(); @@ -171,7 +171,7 @@ public void InheritVersionFromParentReleaseBranchWithVersion2InsteadOfVersion3() fixture.Checkout("release/2.0.0"); fixture.BranchTo("feature/MyFeature"); fixture.MakeACommit(); - fixture.AssertFullSemver("2.0.0-MyFeature.1+3"); + fixture.AssertFullSemver("2.0.0-MyFeature.1+4"); } [Test] @@ -225,7 +225,7 @@ public void CommitsSinceVersionSourceShouldNotGoDownUponGitFlowReleaseFinish() fixture.MakeACommit("commit in develop - 1"); fixture.AssertFullSemver("1.2.0-alpha.1"); fixture.BranchTo("release/1.2.0"); - fixture.AssertFullSemver("1.2.0-beta.1+0"); + fixture.AssertFullSemver("1.2.0-beta.1+1"); fixture.Checkout("develop"); fixture.MakeACommit("commit in develop - 2"); fixture.MakeACommit("commit in develop - 3"); @@ -236,18 +236,18 @@ public void CommitsSinceVersionSourceShouldNotGoDownUponGitFlowReleaseFinish() fixture.MakeACommit("commit in release/1.2.0 - 1"); fixture.MakeACommit("commit in release/1.2.0 - 2"); fixture.MakeACommit("commit in release/1.2.0 - 3"); - fixture.AssertFullSemver("1.2.0-beta.1+3"); + fixture.AssertFullSemver("1.2.0-beta.1+4"); fixture.Checkout(MainBranch); fixture.MergeNoFF("release/1.2.0"); fixture.ApplyTag("1.2.0"); fixture.Checkout("develop"); fixture.MergeNoFF("release/1.2.0"); fixture.MakeACommit("commit in develop - 6"); - fixture.AssertFullSemver("1.3.0-alpha.9"); + fixture.AssertFullSemver("1.3.0-alpha.6"); fixture.SequenceDiagram.Destroy("release/1.2.0"); fixture.Repository.Branches.Remove("release/1.2.0"); - const string expectedFullSemVer = "1.3.0-alpha.9"; + const string expectedFullSemVer = "1.3.0-alpha.6"; fixture.AssertFullSemver(expectedFullSemVer, configuration); } @@ -270,17 +270,17 @@ public void CommitsSinceVersionSourceShouldNotGoDownUponMergingFeatureOnlyToDeve fixture.MakeACommit("commit in release - 1"); fixture.MakeACommit("commit in release - 2"); fixture.MakeACommit("commit in release - 3"); - fixture.AssertFullSemver("1.2.0-beta.1+3"); + fixture.AssertFullSemver("1.2.0-beta.1+4"); fixture.ApplyTag("1.2.0"); fixture.Checkout("develop"); fixture.MakeACommit("commit in develop - 2"); fixture.AssertFullSemver("1.3.0-alpha.1"); fixture.MergeNoFF("release/1.2.0"); - fixture.AssertFullSemver("1.3.0-alpha.5"); + fixture.AssertFullSemver("1.3.0-alpha.2"); fixture.SequenceDiagram.Destroy("release/1.2.0"); fixture.Repository.Branches.Remove("release/1.2.0"); - const string expectedFullSemVer = "1.3.0-alpha.5"; + const string expectedFullSemVer = "1.3.0-alpha.2"; fixture.AssertFullSemver(expectedFullSemVer, configuration); } @@ -333,16 +333,16 @@ public void WhenPreventIncrementOfMergedBranchVersionIsSetToFalseForDevelopCommi fixture.MergeNoFF(ReleaseBranch); // Version numbers will still be correct when the release branch is around. - fixture.AssertFullSemver("1.2.0-alpha.6"); - fixture.AssertFullSemver("1.2.0-alpha.6", configuration); + fixture.AssertFullSemver("1.2.0-alpha.3"); + fixture.AssertFullSemver("1.2.0-alpha.3", configuration); var versionSourceBeforeReleaseBranchIsRemoved = fixture.GetVersion(configuration).Sha; fixture.Repository.Branches.Remove(ReleaseBranch); var versionSourceAfterReleaseBranchIsRemoved = fixture.GetVersion(configuration).Sha; Assert.That(versionSourceAfterReleaseBranchIsRemoved, Is.EqualTo(versionSourceBeforeReleaseBranchIsRemoved)); - fixture.AssertFullSemver("1.2.0-alpha.6"); - fixture.AssertFullSemver("1.2.0-alpha.6", configuration); + fixture.AssertFullSemver("1.2.0-alpha.3"); + fixture.AssertFullSemver("1.2.0-alpha.3", configuration); } [Test] @@ -374,15 +374,15 @@ public void WhenPreventIncrementOfMergedBranchVersionIsSetToTrueForDevelopCommit fixture.MergeNoFF(ReleaseBranch); // Version numbers will still be correct when the release branch is around. - fixture.AssertFullSemver("1.2.0-alpha.6"); - fixture.AssertFullSemver("1.2.0-alpha.6", configuration); + fixture.AssertFullSemver("1.2.0-alpha.3"); + fixture.AssertFullSemver("1.2.0-alpha.3", configuration); var versionSourceBeforeReleaseBranchIsRemoved = fixture.GetVersion(configuration).Sha; fixture.Repository.Branches.Remove(ReleaseBranch); var versionSourceAfterReleaseBranchIsRemoved = fixture.GetVersion(configuration).Sha; Assert.That(versionSourceAfterReleaseBranchIsRemoved, Is.EqualTo(versionSourceBeforeReleaseBranchIsRemoved)); - fixture.AssertFullSemver("1.2.0-alpha.6"); + fixture.AssertFullSemver("1.2.0-alpha.3"); fixture.AssertFullSemver("1.2.0-alpha.3", configuration); } @@ -412,7 +412,7 @@ public void WhenPreventIncrementOfMergedBranchVersionIsSetToFalseForDevelopCommi const string ReleaseBranch = "release/1.1.0"; Commands.Checkout(fixture.Repository, fixture.Repository.CreateBranch(ReleaseBranch)); fixture.Repository.MakeCommits(3); - fixture.AssertFullSemver("1.1.0-beta.1+3", configuration); + fixture.AssertFullSemver("1.1.0-beta.1+7", configuration); // Simulate a GitFlow release finish. fixture.Checkout(MainBranch); @@ -424,7 +424,7 @@ public void WhenPreventIncrementOfMergedBranchVersionIsSetToFalseForDevelopCommi fixture.Repository.MakeCommits(2); fixture.MergeNoFF(ReleaseBranch); fixture.Repository.Branches.Remove(ReleaseBranch); - fixture.AssertFullSemver("1.2.0-alpha.6", configuration); + fixture.AssertFullSemver("1.2.0-alpha.3", configuration); // Create hotfix for defects found in release/1.1.0 const string HotfixBranch = "hotfix/1.1.1"; @@ -441,12 +441,12 @@ public void WhenPreventIncrementOfMergedBranchVersionIsSetToFalseForDevelopCommi fixture.Checkout("develop"); // Simulate some work done on develop while the hotfix branch was open. fixture.Repository.MakeCommits(3); - fixture.AssertFullSemver("1.2.0-alpha.9", configuration); + fixture.AssertFullSemver("1.2.0-alpha.6", configuration); fixture.Repository.MergeNoFF(HotfixBranch); - fixture.AssertFullSemver("1.2.0-alpha.19", configuration); + fixture.AssertFullSemver("1.2.0-alpha.7", configuration); fixture.Repository.Branches.Remove(HotfixBranch); - fixture.AssertFullSemver("1.2.0-alpha.19", configuration); + fixture.AssertFullSemver("1.2.0-alpha.7", configuration); } [Test] @@ -497,7 +497,7 @@ public void PreventDecrementationOfVersionsOnTheMainBranch() fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configurationBuilder.Build()); + fixture.AssertFullSemver("1.0.0-beta.1+2", configurationBuilder.Build()); // now we makes changes on develop that may or may not end up in the 1.0.0 release fixture.Checkout("develop"); @@ -532,7 +532,7 @@ public void PreventDecrementationOfVersionsOnTheMainBranch() fixture.Repository.Branches.Remove("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.1.0-alpha.4", configurationBuilder.Build()); + fixture.AssertFullSemver("1.1.0-alpha.5", configurationBuilder.Build()); fixture.Repository.Tags.Remove("1.0.0-beta.1"); @@ -540,12 +540,12 @@ public void PreventDecrementationOfVersionsOnTheMainBranch() fixture.BranchTo("main"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-0", configurationBuilder.Build()); + fixture.AssertFullSemver("1.0.0-5", configurationBuilder.Build()); configurationBuilder.WithNextVersion("1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-0", configurationBuilder.Build()); + fixture.AssertFullSemver("1.0.0-5", configurationBuilder.Build()); // Mark this version as RTM fixture.ApplyTag("1.0.0"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamples.cs b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamples.cs index 9f1a2a895b..71160f3a31 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamples.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamples.cs @@ -118,7 +118,7 @@ public void GitFlowMinorRelease() // Create release branch fixture.BranchTo("release/1.3.0", "release"); fixture.SequenceDiagram.Activate("release/1.3.0"); - fixture.AssertFullSemver("1.3.0-beta.1+0"); + fixture.AssertFullSemver("1.3.0-beta.1+1"); // Make another commit on develop fixture.Checkout("develop"); @@ -128,7 +128,7 @@ public void GitFlowMinorRelease() // Make a commit to release-1.3.0 fixture.Checkout("release/1.3.0"); fixture.MakeACommit(); - fixture.AssertFullSemver("1.3.0-beta.1+1"); + fixture.AssertFullSemver("1.3.0-beta.1+2"); // Apply beta.1 tag should be exact tag fixture.ApplyTag("1.3.0-beta.1"); @@ -152,7 +152,7 @@ public void GitFlowMinorRelease() // Not 0 for commit count as we can't know the increment rules of the merged branch fixture.Checkout("develop"); - fixture.AssertFullSemver("1.4.0-alpha.4"); + fixture.AssertFullSemver("1.4.0-alpha.2"); Console.WriteLine(fixture.SequenceDiagram.GetDiagram()); } @@ -173,7 +173,7 @@ public void GitFlowMajorRelease() // Create release branch fixture.BranchTo("release/2.0.0", "release"); fixture.SequenceDiagram.Activate("release/2.0.0"); - fixture.AssertFullSemver("2.0.0-beta.1+0"); + fixture.AssertFullSemver("2.0.0-beta.1+1"); // Make another commit on develop fixture.Checkout("develop"); @@ -183,7 +183,7 @@ public void GitFlowMajorRelease() // Make a commit to release-2.0.0 fixture.Checkout("release/2.0.0"); fixture.MakeACommit(); - fixture.AssertFullSemver("2.0.0-beta.1+1"); + fixture.AssertFullSemver("2.0.0-beta.1+2"); // Apply beta.1 tag should be exact tag fixture.ApplyTag("2.0.0-beta.1"); @@ -202,13 +202,13 @@ public void GitFlowMajorRelease() fixture.SequenceDiagram.NoteOver("Release branches are deleted once merged", "release/2.0.0"); fixture.Checkout(MainBranch); - fixture.AssertFullSemver("2.0.0-0"); + fixture.AssertFullSemver("2.0.0-4"); fixture.ApplyTag("2.0.0"); fixture.AssertFullSemver("2.0.0"); // Not 0 for commit count as we can't know the increment rules of the merged branch fixture.Checkout("develop"); - fixture.AssertFullSemver("2.1.0-alpha.4"); + fixture.AssertFullSemver("2.1.0-alpha.2"); Console.WriteLine(fixture.SequenceDiagram.GetDiagram()); } @@ -291,7 +291,7 @@ public void GitFlowSupportMinorRelease() fixture.MergeNoFF("release/1.4.0"); fixture.SequenceDiagram.Destroy("release/1.4.0"); fixture.SequenceDiagram.NoteOver("Release branches are deleted once merged", "release/1.4.0"); - fixture.AssertFullSemver("1.4.0-0"); + fixture.AssertFullSemver("1.4.0-3"); fixture.ApplyTag("1.4.0"); fixture.AssertFullSemver("1.4.0"); Console.WriteLine(fixture.SequenceDiagram.GetDiagram()); @@ -392,7 +392,7 @@ public void GitHubFlowMajorRelease() fixture.SequenceDiagram.Destroy("release/2.0.0"); fixture.SequenceDiagram.NoteOver("Release branches are deleted once merged", "release/2.0.0"); - fixture.AssertFullSemver("2.0.0-0"); + fixture.AssertFullSemver("2.0.0-4"); fixture.ApplyTag("2.0.0"); fixture.AssertFullSemver("2.0.0"); fixture.MakeACommit(); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs new file mode 100644 index 0000000000..085c667bb5 --- /dev/null +++ b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs @@ -0,0 +1,1058 @@ +using GitVersion.Configuration; +using GitVersion.VersionCalculation; +using LibGit2Sharp; + +namespace GitVersion.Core.Tests.IntegrationTests; + +[TestFixture] +public class DocumentationSamplesForGitFlow +{ + [TestCase(false)] + [TestCase(true)] + public void FeatureFromMainBranch(bool withPullRequestIntoMain) + { + var configuration = GitFlowConfigurationBuilder.New.Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.Repository.MakeACommit(); + fixture.ApplyTag("1.2.0"); + fixture.AssertFullSemver("1.2.0", configuration); + + // Branch from main + const string branchName = "feature/foo"; + fixture.BranchTo(branchName, "feature"); + fixture.SequenceDiagram.Activate("feature"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.2.1-foo.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-foo.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + fixture.ApplyTag("1.2.1"); + fixture.AssertFullSemver("1.2.1", configuration); + + // Merge main to feature branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.2.2-foo.1+2", configuration); + + // Bump to minor version increment + fixture.MakeACommit("+semver: minor"); + fixture.AssertFullSemver("1.3.0-foo.1+3", configuration); + + // Create pre-release on feature branch + fixture.ApplyTag("2.0.0-foo.1"); + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge feature into main branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Feature branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("2.0.0-5", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.0.0-6", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void FeatureFromMainBranchWithMainline(bool withPullRequestIntoMain) + { + var configuration = GitFlowConfigurationBuilder.New + .WithNextVersion("1.2.0") + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrunkBased) + .Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.0-1", configuration); + fixture.Repository.ApplyTag("1.2.0"); + + // Branch from main + const string branchName = "feature/foo"; + fixture.BranchTo(branchName, "feature"); + fixture.SequenceDiagram.Activate("feature"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.2.1-foo.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-foo.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + + // Merge main to feature branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.2.2-foo.1+2", configuration); + + // Bump to minor version increment + fixture.MakeACommit("+semver: minor"); + fixture.AssertFullSemver("1.3.0-foo.1+3", configuration); + + // Create pre-release on feature branch + fixture.ApplyTag("2.0.0-foo.1"); + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge feature into main branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Feature branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("2.0.0-5", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.0.1-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void HotfixBranch(bool withPullRequestIntoMain) + { + var configuration = GitFlowConfigurationBuilder.New.Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.Repository.MakeACommit(); + fixture.ApplyTag("1.2.0"); + fixture.AssertFullSemver("1.2.0", configuration); + + // Branch from main + const string branchName = "hotfix/next"; + fixture.BranchTo(branchName, "hotfix"); + fixture.SequenceDiagram.Activate("hotfix"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.2.1-beta.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-beta.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + fixture.ApplyTag("1.2.1"); + fixture.AssertFullSemver("1.2.1", configuration); + + // Merge main to hotfix branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.2.2-beta.1+2", configuration); + + // Bump to minor version increment + fixture.MakeACommit("+semver: minor"); + fixture.AssertFullSemver("1.3.0-beta.1+3", configuration); + + // Create pre-release on hotfix branch + fixture.ApplyTag("2.0.0-beta.1"); + fixture.AssertFullSemver("2.0.0-beta.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.0.0-beta.2+1", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge hotfix into main branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Hotfix branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("2.0.0-5", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.0.0-6", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void HotfixBranchWithMainline(bool withPullRequestIntoMain) + { + var configuration = GitFlowConfigurationBuilder.New + .WithNextVersion("1.2.0") + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrunkBased) + .Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.0-1", configuration); + fixture.Repository.ApplyTag("1.2.0"); + + // Branch from main + const string branchName = "hotfix/next"; + fixture.BranchTo(branchName, "hotfix"); + fixture.SequenceDiagram.Activate("hotfix"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.2.1-beta.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-beta.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + + // Merge main to hotfix branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.2.2-beta.1+2", configuration); + + // Bump to minor version increment + fixture.MakeACommit("+semver: minor"); + fixture.AssertFullSemver("1.3.0-beta.1+3", configuration); + + // Create pre-release on hotfix branch + fixture.ApplyTag("2.0.0-beta.1"); + fixture.AssertFullSemver("2.0.0-beta.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.0.0-beta.2+1", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge hotfix into main branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Hotfix branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("2.0.0-5", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.0.1-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void VersionedHotfixBranch(bool withPullRequestIntoMain) + { + var configuration = GitFlowConfigurationBuilder.New.Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.Repository.MakeACommit(); + fixture.ApplyTag("1.2.0"); + fixture.AssertFullSemver("1.2.0", configuration); + + // Branch from main + const string branchName = "hotfix/2.2.1"; + fixture.BranchTo(branchName, "hotfix"); + fixture.SequenceDiagram.Activate("hotfix"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("2.2.1-beta.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.2.1-beta.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + fixture.ApplyTag("2.2.1"); + fixture.AssertFullSemver("2.2.1", configuration); + + // Merge main to hotfix branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("2.2.2-beta.1+2", configuration); + + // Bump to minor version increment + fixture.MakeACommit("+semver: major"); + fixture.AssertFullSemver("3.0.0-beta.1+3", configuration); + + // Create pre-release on hotfix branch + fixture.ApplyTag("3.0.1-beta.1"); + fixture.AssertFullSemver("3.0.1-beta.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("3.0.1-beta.2+1", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("3.0.1-PullRequest2.5", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge hotfix into main branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Hotfix branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("3.0.1-5", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("3.0.1-6", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void VersionedHotfixBranchWithMainline(bool withPullRequestIntoMain) + { + var configuration = GitFlowConfigurationBuilder.New + .WithNextVersion("1.2.0") + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrunkBased) + .Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.0-1", configuration); + fixture.Repository.ApplyTag("1.2.0"); + + // Branch from main + const string branchName = "hotfix/2.2.1"; + fixture.BranchTo(branchName, "hotfix"); + fixture.SequenceDiagram.Activate("hotfix"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("2.2.1-beta.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.2.1-beta.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + + // Merge main to hotfix branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("2.2.1-beta.1+2", configuration); + + // Bump to minor version increment + fixture.MakeACommit("+semver: major"); + fixture.AssertFullSemver("2.2.1-beta.1+3", configuration); + + // Create pre-release on hotfix branch + fixture.ApplyTag("2.2.2-beta.1"); + fixture.AssertFullSemver("2.2.2-beta.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.2.2-beta.2+1", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("2.2.2-PullRequest2.5", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge hotfix into main branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Hotfix branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("2.2.2-5", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.2.3-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void ReleaseBranch(bool withPullRequestIntoMain) + { + var configuration = GitFlowConfigurationBuilder.New.Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.Repository.MakeACommit(); + fixture.ApplyTag("1.2.0"); + fixture.AssertFullSemver("1.2.0", configuration); + + // Branch from main + const string branchName = "release/next"; + fixture.BranchTo(branchName, "release"); + fixture.SequenceDiagram.Activate("release"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.3.0-beta.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.3.0-beta.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + fixture.ApplyTag("1.2.1"); + fixture.AssertFullSemver("1.2.1", configuration); + + // Merge main to release branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.3.0-beta.1+2", configuration); + + // Bump to minor version increment + fixture.MakeACommit("+semver: major"); + fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); + + // Create pre-release on release branch + fixture.ApplyTag("2.0.1-beta.1"); + fixture.AssertFullSemver("2.0.1-beta.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.0.1-beta.2+1", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("2.0.1-PullRequest2.5", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge release into main branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Release branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("2.0.1-5", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.0.1-6", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void ReleaseBranchWithMainline(bool withPullRequestIntoMain) + { + var configuration = GitFlowConfigurationBuilder.New + .WithNextVersion("1.2.0") + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrunkBased) + .Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.0-1", configuration); + fixture.Repository.ApplyTag("1.2.0"); + + // Branch from main + const string branchName = "release/next"; + fixture.BranchTo(branchName, "release"); + fixture.SequenceDiagram.Activate("release"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.3.0-beta.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.3.0-beta.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + + // Merge main to release branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.3.0-beta.1+2", configuration); + + // Bump to minor version increment + fixture.MakeACommit("+semver: major"); + fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); + + // Create pre-release on release branch + fixture.ApplyTag("2.0.1-beta.1"); + fixture.AssertFullSemver("2.0.1-beta.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.0.1-beta.2+1", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("2.0.1-PullRequest2.5", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge release into main branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Release branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("2.0.1-5", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.0.2-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void VersionedReleaseBranch(bool withPullRequestIntoMain) + { + var configuration = GitFlowConfigurationBuilder.New.Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.Repository.MakeACommit(); + fixture.ApplyTag("1.2.0"); + fixture.AssertFullSemver("1.2.0", configuration); + + // Branch from main + const string branchName = "release/2.2.1"; + fixture.BranchTo(branchName, "release"); + fixture.SequenceDiagram.Activate("release"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("2.2.1-beta.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.2.1-beta.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + fixture.ApplyTag("2.2.1"); + fixture.AssertFullSemver("2.2.1", configuration); + + // Merge main to release branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("2.3.0-beta.1+2", configuration); + + // Bump to minor version increment + fixture.MakeACommit("+semver: major"); + fixture.AssertFullSemver("3.0.0-beta.1+3", configuration); + + // Create pre-release on release branch + fixture.ApplyTag("3.0.1-beta.1"); + fixture.AssertFullSemver("3.0.1-beta.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("3.0.1-beta.2+1", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("3.0.1-PullRequest2.5", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge release into main branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Release branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("3.0.1-5", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("3.0.1-6", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void VersionedReleaseBranchWithMainline(bool withPullRequestIntoMain) + { + var configuration = GitFlowConfigurationBuilder.New + .WithNextVersion("1.2.0") + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrunkBased) + .Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.0-1", configuration); + fixture.Repository.ApplyTag("1.2.0"); + + // Branch from main + const string branchName = "release/2.2.1"; + fixture.BranchTo(branchName, "release"); + fixture.SequenceDiagram.Activate("release"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("2.2.1-beta.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.2.1-beta.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + + // Merge main to release branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("2.2.1-beta.1+2", configuration); + + // Bump to minor version increment + fixture.MakeACommit("+semver: major"); + fixture.AssertFullSemver("2.2.1-beta.1+3", configuration); + + // Create pre-release on release branch + fixture.ApplyTag("2.2.1-beta.1"); + fixture.AssertFullSemver("2.2.1-beta.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.2.1-beta.2+1", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("2.2.1-PullRequest2.5", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge release into main branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Release branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("2.2.1-5", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.2.2-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void DevelopBranch(bool withPullRequestIntoMain) + { + var configuration = GitFlowConfigurationBuilder.New.Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + fixture.SequenceDiagram.Participant("main"); + fixture.SequenceDiagram.Participant("develop"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.Repository.MakeACommit(); + fixture.ApplyTag("1.2.0"); + fixture.AssertFullSemver("1.2.0", configuration); + + // Branch from main + const string branchName = "develop"; + fixture.BranchTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.SequenceDiagram.Activate(branchName); + fixture.AssertFullSemver("1.3.0-alpha.0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.3.0-alpha.1", configuration); + + // Create release from develop branch + fixture.BranchTo("release/1.3.0", "release"); + fixture.SequenceDiagram.Deactivate("develop"); + fixture.SequenceDiagram.Activate("release"); + fixture.AssertFullSemver("1.3.0-beta.1+1", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.3.0-beta.1+2", configuration); + + // Bump to major version increment + fixture.Checkout("develop"); + fixture.SequenceDiagram.Activate("develop"); + fixture.AssertFullSemver("1.4.0-alpha.0", configuration); + + // Merge release into develop branch + fixture.MergeNoFF("release/1.3.0"); + fixture.AssertFullSemver("1.4.0-alpha.2", configuration); + + // Merge release into main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MergeNoFF("release/1.3.0"); + fixture.Remove("release/1.3.0"); + fixture.SequenceDiagram.NoteOver("Release branches should\r\nbe deleted once merged", "release"); + fixture.ApplyTag("1.3.0"); + fixture.AssertFullSemver("1.3.0", configuration); + + // Create hotfix on main branch + fixture.MakeACommit(); + fixture.AssertFullSemver("1.3.1-1", configuration); + + // Merge main to release branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.4.0-alpha.3", configuration); + fixture.MakeACommit("+semver: major"); + fixture.AssertFullSemver("2.0.0-alpha.4", configuration); + + // Create pre-release on release branch + fixture.ApplyTag("2.1.0-alpha.1"); + fixture.AssertFullSemver("2.1.0-alpha.1", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.1.0-alpha.2", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("2.1.0-PullRequest2.6", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge develop into main branch + fixture.MergeNoFF(branchName); + fixture.SequenceDiagram.Deactivate(branchName); + fixture.AssertFullSemver("2.1.0-6", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.1.0-7", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void DevelopBranchWithMainline(bool withPullRequestIntoMain) + { + var configuration = GitFlowConfigurationBuilder.New + .WithNextVersion("1.2.0") + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrackReleaseBranches, VersionStrategies.TrunkBased) + .Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + fixture.SequenceDiagram.Participant("main"); + fixture.SequenceDiagram.Participant("develop"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.0-1", configuration); + fixture.Repository.ApplyTag("1.2.0"); + + // Branch from main + const string branchName = "develop"; + fixture.BranchTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.SequenceDiagram.Activate(branchName); + fixture.AssertFullSemver("1.3.0-alpha.0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.3.0-alpha.1", configuration); + + // Create release from develop branch + fixture.BranchTo("release/1.3.0", "release"); + fixture.SequenceDiagram.Deactivate("develop"); + fixture.SequenceDiagram.Activate("release"); + fixture.AssertFullSemver("1.3.0-beta.1+1", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.3.0-beta.1+2", configuration); + + // Bump to major version increment + fixture.Checkout("develop"); + fixture.SequenceDiagram.Activate("develop"); + fixture.AssertFullSemver("1.4.0-alpha.0", configuration); + + // Merge release into develop branch + fixture.MergeNoFF("release/1.3.0"); + fixture.AssertFullSemver("1.4.0-alpha.2", configuration); + + // Merge release into main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MergeNoFF("release/1.3.0"); + fixture.Remove("release/1.3.0"); + fixture.SequenceDiagram.NoteOver("Release branches should\r\nbe deleted once merged", "release"); + + // Create hotfix on main branch + fixture.MakeACommit(); + fixture.AssertFullSemver("1.3.1-1", configuration); + + // Merge main to release branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.4.0-alpha.2", configuration); + fixture.MakeACommit("+semver: major"); + fixture.AssertFullSemver("2.0.0-alpha.3", configuration); + + // Create pre-release on release branch + fixture.ApplyTag("2.1.0-alpha.1"); + fixture.AssertFullSemver("2.1.0-alpha.1", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.1.0-alpha.2", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("2.1.0-PullRequest2.5", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge develop into main branch + fixture.MergeNoFF(branchName); + fixture.SequenceDiagram.Deactivate(branchName); + fixture.AssertFullSemver("2.1.0-5", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.1.1-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void SupportBranch(bool withPullRequestIntoSupport) + { + var configuration = GitFlowConfigurationBuilder.New.Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + fixture.SequenceDiagram.Participant("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.Repository.MakeACommit(); + fixture.ApplyTag("1.2.0"); + fixture.AssertFullSemver("1.2.0", configuration); + + // Branch from main + fixture.BranchToFromTag("support/1.x", "1.2.0", "main", "support"); + fixture.SequenceDiagram.Activate("support"); + fixture.AssertFullSemver("1.2.0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("+semver: major"); + fixture.AssertFullSemver("2.0.0-1", configuration); + fixture.ApplyTag("2.0.0"); + fixture.AssertFullSemver("2.0.0", configuration); + + fixture.Checkout("support/1.x"); + fixture.BranchTo("hotfix/1.2.2", "hotfix"); + fixture.SequenceDiagram.Deactivate("support"); + fixture.SequenceDiagram.Activate("hotfix"); + fixture.AssertFullSemver("1.2.2-beta.1+1", configuration); + fixture.MakeACommit(); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.2-beta.1+3", configuration); + fixture.ApplyTag("1.2.3-beta.1"); + fixture.AssertFullSemver("1.2.3-beta.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.3-beta.2+1", configuration); + fixture.Checkout("support/1.x"); + + if (withPullRequestIntoSupport) + { + // Create a PullRequest into support + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF("hotfix/1.2.2"); + fixture.AssertFullSemver("1.2.3-PullRequest2.5", configuration); + fixture.Checkout("support/1.x"); + fixture.Remove("pull/2/merge"); + } + + // Merge hotfix into support branch + fixture.MergeNoFF("hotfix/1.2.2"); + fixture.Remove("hotfix/1.2.2"); + fixture.SequenceDiagram.NoteOver("Hotfix branches should\r\nbe deleted once merged", "hotfix/1.2.2"); + fixture.AssertFullSemver("1.2.3-5", configuration); + + // Commit on support branch + fixture.SequenceDiagram.Activate("support"); + fixture.ApplyTag("1.2.3"); + fixture.AssertFullSemver("1.2.3", configuration); + + fixture.Checkout("main"); + fixture.AssertFullSemver("2.0.0", configuration); + fixture.MergeNoFF("support/1.x"); + fixture.AssertFullSemver("2.0.1-6", configuration); + fixture.ApplyTag("2.0.1"); + fixture.AssertFullSemver("2.0.1", configuration); + + fixture.Checkout("support/1.x"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.4-1", configuration); + + fixture.Checkout("main"); + fixture.MergeNoFF("support/1.x"); + fixture.AssertFullSemver("2.0.2-2", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void SupportBranchWithMainline(bool withPullRequestIntoSupport) + { + var configuration = GitFlowConfigurationBuilder.New + .WithNextVersion("1.2.0") + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrackReleaseBranches, VersionStrategies.TrunkBased) + .Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + fixture.SequenceDiagram.Participant("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.0-1", configuration); + fixture.Repository.ApplyTag("1.2.0"); + + // Branch from main + fixture.BranchToFromTag("support/1.x", "1.2.0", "main", "support"); + fixture.SequenceDiagram.Activate("support"); + fixture.AssertFullSemver("1.2.0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("+semver: major"); + fixture.AssertFullSemver("2.0.0-1", configuration); + + fixture.Checkout("support/1.x"); + fixture.BranchTo("hotfix/1.2.2", "hotfix"); + fixture.SequenceDiagram.Deactivate("support"); + fixture.SequenceDiagram.Activate("hotfix"); + fixture.AssertFullSemver("1.2.2-beta.1+0", configuration); + fixture.MakeACommit(); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.2-beta.1+2", configuration); + fixture.ApplyTag("1.2.3-beta.1"); + fixture.AssertFullSemver("1.2.3-beta.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.3-beta.2+1", configuration); + fixture.Checkout("support/1.x"); + + if (withPullRequestIntoSupport) + { + // Create a PullRequest into support + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF("hotfix/1.2.2"); + fixture.AssertFullSemver("1.2.3-PullRequest2.4", configuration); + fixture.Checkout("support/1.x"); + fixture.Remove("pull/2/merge"); + } + + // Merge hotfix into support branch + fixture.MergeNoFF("hotfix/1.2.2"); + fixture.Remove("hotfix/1.2.2"); + fixture.SequenceDiagram.NoteOver("Hotfix branches should\r\nbe deleted once merged", "hotfix/1.2.2"); + fixture.AssertFullSemver("1.2.3-4", configuration); + + // Commit on support branch + fixture.SequenceDiagram.Activate("support"); + + fixture.Checkout("main"); + fixture.AssertFullSemver("2.0.0-1", configuration); + //fixture.MergeNoFF("support/1.x"); + //fixture.AssertFullSemver("2.0.1-6", configuration); + + //fixture.Checkout("support/1.x"); + //fixture.MakeACommit(); + //fixture.AssertFullSemver("1.2.4-1", configuration); + + //fixture.Checkout("main"); + //fixture.MergeNoFF("support/1.x"); + //fixture.AssertFullSemver("2.0.2-2", configuration); + } +} diff --git a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitHubFlow.cs b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitHubFlow.cs new file mode 100644 index 0000000000..14e9ef28a0 --- /dev/null +++ b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitHubFlow.cs @@ -0,0 +1,432 @@ +using GitVersion.Configuration; +using GitVersion.VersionCalculation; +using LibGit2Sharp; + +namespace GitVersion.Core.Tests.IntegrationTests; + +[TestFixture] +public class DocumentationSamplesForGitHubFlow +{ + [TestCase(false)] + [TestCase(true)] + public void FeatureBranch(bool withPullRequestIntoMain) + { + var configuration = GitHubFlowConfigurationBuilder.New.Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.Repository.MakeACommit(); + fixture.ApplyTag("1.2.0"); + fixture.AssertFullSemver("1.2.0", configuration); + + // Branch from main + const string branchName = "feature/foo"; + fixture.BranchTo(branchName, "feature"); + fixture.SequenceDiagram.Activate("feature"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.2.1-foo.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-foo.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + fixture.ApplyTag("1.2.1"); + fixture.AssertFullSemver("1.2.1", configuration); + + // Merge main to feature branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.2.2-foo.1+2", configuration); + + // Bump to minor version increment + fixture.MakeACommit("+semver: minor"); + fixture.AssertFullSemver("1.3.0-foo.1+3", configuration); + + // Create pre-release on feature branch + fixture.ApplyTag("2.0.0-foo.1"); + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge feature into main branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Feature branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("2.0.0-5", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.0.0-6", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void FeatureBranchWithMainline(bool withPullRequestIntoMain) + { + var configuration = GitHubFlowConfigurationBuilder.New + .WithNextVersion("1.2.0") + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrunkBased) + .Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.0-1", configuration); + fixture.Repository.ApplyTag("1.2.0"); + + // Branch from main + const string branchName = "feature/foo"; + fixture.BranchTo(branchName, "feature"); + fixture.SequenceDiagram.Activate("feature"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.2.1-foo.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-foo.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + + // Merge main to feature branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.2.2-foo.1+2", configuration); + + // Bump to minor version increment + fixture.MakeACommit("+semver: minor"); + fixture.AssertFullSemver("1.3.0-foo.1+3", configuration); + + // Create pre-release on feature branch + fixture.ApplyTag("2.0.0-foo.1"); + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge feature into main branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Feature branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("2.0.0-5", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.0.1-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void ReleaseBranch(bool withPullRequestIntoMain) + { + var configuration = GitHubFlowConfigurationBuilder.New.Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.Repository.MakeACommit(); + fixture.ApplyTag("1.2.0"); + fixture.AssertFullSemver("1.2.0", configuration); + + // Branch from main + const string branchName = "release/next"; + fixture.BranchTo(branchName, "release"); + fixture.SequenceDiagram.Activate("release"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.2.1-beta.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-beta.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + fixture.ApplyTag("1.2.1"); + fixture.AssertFullSemver("1.2.1", configuration); + + // Merge main to release branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.2.2-beta.1+2", configuration); + + // Bump to minor version increment + fixture.MakeACommit("+semver: minor"); + fixture.AssertFullSemver("1.3.0-beta.1+3", configuration); + + // Create pre-release on release branch + fixture.ApplyTag("1.3.1-beta.1"); + fixture.AssertFullSemver("1.3.1-beta.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.3.1-beta.2+1", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("1.3.1-PullRequest2.5", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge release into main branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Release branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("1.3.1-5", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.3.1-6", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void ReleaseBranchWithMainline(bool withPullRequestIntoMain) + { + var configuration = GitHubFlowConfigurationBuilder.New + .WithNextVersion("1.2.0") + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrunkBased) + .Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.0-1", configuration); + fixture.Repository.ApplyTag("1.2.0"); + + // Branch from main + const string branchName = "release/next"; + fixture.BranchTo(branchName, "release"); + fixture.SequenceDiagram.Activate("release"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.2.1-beta.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-beta.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + + // Merge main to release branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.2.2-beta.1+2", configuration); + + // Bump to minor version increment + fixture.MakeACommit("+semver: minor"); + fixture.AssertFullSemver("1.3.0-beta.1+3", configuration); + + // Create pre-release on release branch + fixture.ApplyTag("1.3.1-beta.1"); + fixture.AssertFullSemver("1.3.1-beta.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.3.1-beta.2+1", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("1.3.1-PullRequest2.5", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge release into main branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Release branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("1.3.1-5", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.3.2-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void VersionedReleaseBranch(bool withPullRequestIntoMain) + { + var configuration = GitHubFlowConfigurationBuilder.New.Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.Repository.MakeACommit(); + fixture.ApplyTag("1.2.0"); + fixture.AssertFullSemver("1.2.0", configuration); + + // Branch from main + const string branchName = "release/2.2.1"; + fixture.BranchTo(branchName, "release"); + fixture.SequenceDiagram.Activate("release"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("2.2.1-beta.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.2.1-beta.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + fixture.ApplyTag("2.2.1"); + fixture.AssertFullSemver("2.2.1", configuration); + + // Merge main to release branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("2.2.2-beta.1+2", configuration); + + // Bump to minor version increment + fixture.MakeACommit("+semver: minor"); + fixture.AssertFullSemver("2.3.0-beta.1+3", configuration); + + // Create pre-release on release branch + fixture.ApplyTag("2.3.1-beta.1"); + fixture.AssertFullSemver("2.3.1-beta.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.3.1-beta.2+1", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("2.3.1-PullRequest2.5", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge release into main branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Release branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("2.3.1-5", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.3.1-6", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void VersionedReleaseBranchWithMainline(bool withPullRequestIntoMain) + { + var configuration = GitHubFlowConfigurationBuilder.New + .WithNextVersion("1.2.0") + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrunkBased) + .Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.0-1", configuration); + fixture.Repository.ApplyTag("1.2.0"); + + // Branch from main + const string branchName = "release/2.2.1"; + fixture.BranchTo(branchName, "release"); + fixture.SequenceDiagram.Activate("release"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("2.2.1-beta.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.2.1-beta.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.2.1-1", configuration); + + // Merge main to release branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("2.2.1-beta.1+2", configuration); + + // Bump to minor version increment + fixture.MakeACommit("+semver: major"); + fixture.AssertFullSemver("2.2.1-beta.1+3", configuration); + + // Create pre-release on release branch + fixture.ApplyTag("2.2.1-beta.1"); + fixture.AssertFullSemver("2.2.1-beta.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.2.1-beta.2+1", configuration); + fixture.Checkout("main"); + + if (withPullRequestIntoMain) + { + // Create a PullRequest into main + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("2.2.1-PullRequest2.5", configuration); + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + } + + // Merge release into main branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Release branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("2.2.1-5", configuration); + + // Commit on main branch + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.2.2-1", configuration); + } +} diff --git a/src/GitVersion.Core.Tests/IntegrationTests/FeatureBranchScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/FeatureBranchScenarios.cs index e0db3bb7ee..9b30536fd7 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/FeatureBranchScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/FeatureBranchScenarios.cs @@ -179,7 +179,7 @@ public void CanUseBranchNameOffAReleaseBranch() fixture.BranchTo("feature/PROJ-1"); fixture.MakeACommit(); - fixture.AssertFullSemver("0.3.0-PROJ-1.1+3", configuration); + fixture.AssertFullSemver("0.3.0-PROJ-1.1+4", configuration); } [TestCase("alpha", "JIRA-123", "^features?[/-](?.+)", "alpha")] @@ -213,7 +213,7 @@ public void BranchCreatedAfterFinishReleaseShouldInheritAndIncrementFromLastMain Commands.Checkout(fixture.Repository, "release/0.2.0"); //validate release version - fixture.AssertFullSemver("0.2.0-beta.1+0"); + fixture.AssertFullSemver("0.2.0-beta.1+1"); fixture.Checkout(MainBranch); fixture.Repository.MergeNoFF("release/0.2.0"); @@ -424,7 +424,7 @@ public void PickUpVersionFromMainMarkedWithIsTracksReleaseBranches() .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithBranch("unknown", builder => builder.WithIncrement(IncrementStrategy.Patch).WithTracksReleaseBranches(true)) .WithBranch(MainBranch, builder => builder.WithLabel("pre").WithTracksReleaseBranches(true)) - .WithBranch("release", builder => builder.WithLabel("rc").WithTracksReleaseBranches(true)) + .WithBranch("release", builder => builder.WithLabel("rc")) .Build(); using var fixture = new EmptyRepositoryFixture(); @@ -434,7 +434,7 @@ public void PickUpVersionFromMainMarkedWithIsTracksReleaseBranches() fixture.BranchTo("release/0.10.0"); fixture.MakeACommit(); fixture.MakeACommit(); - fixture.AssertFullSemver("0.10.0-rc.1+2", configuration); + fixture.AssertFullSemver("0.10.0-rc.1+3", configuration); // switch to main and verify the version fixture.Checkout(MainBranch); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/GitflowScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/GitflowScenarios.cs index 9b7fc6ce56..26ee975616 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/GitflowScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/GitflowScenarios.cs @@ -30,39 +30,39 @@ public void GitflowComplexExample() // Release 1.1.0 fixture.BranchTo(release1Branch); fixture.MakeACommit("release stabilization"); - fixture.AssertFullSemver("1.1.0-beta.1+1"); + fixture.AssertFullSemver("1.1.0-beta.1+4"); fixture.Checkout(MainBranch); fixture.MergeNoFF(release1Branch); - fixture.AssertFullSemver("1.1.0-0"); + fixture.AssertFullSemver("1.1.0-5"); fixture.ApplyTag("1.1.0"); fixture.AssertFullSemver("1.1.0"); fixture.Checkout(developBranch); fixture.MergeNoFF(release1Branch); fixture.Repository.Branches.Remove(fixture.Repository.Branches[release1Branch]); - fixture.AssertFullSemver("1.2.0-alpha.2"); + fixture.AssertFullSemver("1.2.0-alpha.1"); // Feature 2 fixture.BranchTo(feature2Branch); fixture.MakeACommit("added feature 2"); - fixture.AssertFullSemver("1.2.0-f2.1+3"); + fixture.AssertFullSemver("1.2.0-f2.1+2"); fixture.Checkout(developBranch); fixture.MergeNoFF(feature2Branch); fixture.Repository.Branches.Remove(fixture.Repository.Branches[feature2Branch]); - fixture.AssertFullSemver("1.2.0-alpha.4"); + fixture.AssertFullSemver("1.2.0-alpha.3"); // Release 1.2.0 fixture.BranchTo(release2Branch); fixture.MakeACommit("release stabilization"); - fixture.AssertFullSemver("1.2.0-beta.1+1"); + fixture.AssertFullSemver("1.2.0-beta.1+8"); fixture.Checkout(MainBranch); fixture.MergeNoFF(release2Branch); - fixture.AssertFullSemver("1.2.0-0"); + fixture.AssertFullSemver("1.2.0-5"); fixture.ApplyTag("1.2.0"); fixture.AssertFullSemver("1.2.0"); fixture.Checkout(developBranch); fixture.MergeNoFF(release2Branch); fixture.Repository.Branches.Remove(fixture.Repository.Branches[release2Branch]); - fixture.AssertFullSemver("1.3.0-alpha.2"); + fixture.AssertFullSemver("1.3.0-alpha.1"); // Hotfix fixture.Checkout(MainBranch); @@ -77,7 +77,7 @@ public void GitflowComplexExample() fixture.Checkout(developBranch); fixture.MergeNoFF(hotfixBranch); fixture.Repository.Branches.Remove(fixture.Repository.Branches[hotfixBranch]); - fixture.AssertFullSemver("1.3.0-alpha.9"); + fixture.AssertFullSemver("1.3.0-alpha.2"); } } } diff --git a/src/GitVersion.Core.Tests/IntegrationTests/HotfixBranchScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/HotfixBranchScenarios.cs index ed1b452457..8bd468453a 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/HotfixBranchScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/HotfixBranchScenarios.cs @@ -39,7 +39,7 @@ public void PatchLatestReleaseExample() fixture.AssertFullSemver("1.3.0-alpha.1"); fixture.Repository.MergeNoFF("hotfix-1.2.1", Generate.SignatureNow()); - fixture.AssertFullSemver("1.3.0-alpha.5"); + fixture.AssertFullSemver("1.3.0-alpha.2"); } [Test] @@ -141,7 +141,7 @@ public void FeatureOnHotfixFeatureBranchDeleted() // create release branch fixture.BranchTo(release450); - fixture.AssertFullSemver("4.5.0-beta.1+0", configuration); + fixture.AssertFullSemver("4.5.0-beta.1+1", configuration); fixture.MakeACommit("blabla"); fixture.Checkout("develop"); fixture.MergeNoFF(release450); @@ -162,7 +162,7 @@ public void FeatureOnHotfixFeatureBranchDeleted() fixture.Checkout(hotfix451); fixture.MergeNoFF(featureBranch); // commit 2 fixture.Repository.Branches.Remove(featureBranch); - fixture.AssertFullSemver("4.5.1-beta.1+4", configuration); + fixture.AssertFullSemver("4.5.1-beta.1+2", configuration); } /// @@ -187,7 +187,7 @@ public void FeatureOnHotfixFeatureBranchNotDeleted() // create release branch fixture.BranchTo(release450); - fixture.AssertFullSemver("4.5.0-beta.1+0", configuration); + fixture.AssertFullSemver("4.5.0-beta.1+1", configuration); fixture.MakeACommit("blabla"); fixture.Checkout("develop"); fixture.MergeNoFF(release450); @@ -208,7 +208,7 @@ public void FeatureOnHotfixFeatureBranchNotDeleted() fixture.Checkout(hotfix451); fixture.MergeNoFF(featureBranch); // commit 2 - fixture.AssertFullSemver("4.5.1-beta.1+4", configuration); + fixture.AssertFullSemver("4.5.1-beta.1+2", configuration); } [Test] @@ -222,15 +222,15 @@ public void IsVersionTakenFromHotfixBranchName() fixture.AssertFullSemver("4.21.0-alpha.1", configuration); fixture.BranchTo("release/4.21.1"); - fixture.AssertFullSemver("4.21.1-beta.1+0", configuration); + fixture.AssertFullSemver("4.21.1-beta.1+1", configuration); fixture.MakeACommit(); - fixture.AssertFullSemver("4.21.1-beta.1+1", configuration); + fixture.AssertFullSemver("4.21.1-beta.1+2", configuration); fixture.BranchTo("hotfix/4.21.1"); - fixture.AssertFullSemver("4.21.1-beta.1+1", configuration); + fixture.AssertFullSemver("4.21.1-beta.1+2", configuration); fixture.MakeACommit(); - fixture.AssertFullSemver("4.21.1-beta.1+2", configuration); + fixture.AssertFullSemver("4.21.1-beta.1+3", configuration); } } diff --git a/src/GitVersion.Core.Tests/IntegrationTests/MainScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/MainScenarios.cs index 6278afdfea..c4bae960c6 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/MainScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/MainScenarios.cs @@ -300,13 +300,13 @@ public void PreventDecrementationOfVersionsOnTheDevelopmentBranch() fixture.Checkout("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+0", configurationBuilder.Build()); + fixture.AssertFullSemver("1.0.0-beta.1+1", configurationBuilder.Build()); // make another commit on release/1.0.0 to prepare the actual beta1 release fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configurationBuilder.Build()); + fixture.AssertFullSemver("1.0.0-beta.1+2", configurationBuilder.Build()); // now we makes changes on develop that may or may not end up in the 1.0.0 release fixture.Checkout("develop"); @@ -370,23 +370,21 @@ public void PreventDecrementationOfVersionsOnTheDevelopmentBranch() fixture.Repository.Branches.Remove("release/1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.1.0-alpha.3", configurationBuilder.Build()); + fixture.AssertFullSemver("1.1.0-alpha.6", configurationBuilder.Build()); fixture.Repository.Tags.Remove("1.0.0-beta.1"); fixture.Repository.Tags.Remove("1.0.0-beta.2"); - // ❔ expected: "1.0.0-alpha.3" - // This behavior needs to be changed for the git flow workflow using the track-merge-message or track-merge-target options. - // [Bug] track-merge-changes produces unexpected result when combining hotfix and support branches #3052 - fixture.AssertFullSemver("1.1.0-alpha.3", configurationBuilder.Build()); + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-alpha.6", configurationBuilder.Build()); configurationBuilder.WithNextVersion("1.1.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.1.0-alpha.3", configurationBuilder.Build()); + fixture.AssertFullSemver("1.1.0-alpha.6", configurationBuilder.Build()); } - [TestCase(true, "1.1.0-0")] + [TestCase(true, "1.1.0-4")] [TestCase(false, "1.0.1-4")] public void TrackMergeMessageShouldBeConsideredOnTheMainBranch(bool trackMergeMessage, string expectedSemanticVersion) { diff --git a/src/GitVersion.Core.Tests/IntegrationTests/OtherBranchScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/OtherBranchScenarios.cs index 2af65b65a1..985e6e865a 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/OtherBranchScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/OtherBranchScenarios.cs @@ -95,7 +95,7 @@ public void ShouldOnlyConsiderTagsMatchingOfCurrentBranch() fixture.BranchTo("release/0.1.2"); // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.2-rc.1+0", configuration); + fixture.AssertFullSemver("0.1.2-rc.1+3", configuration); } [Test] @@ -113,7 +113,7 @@ public void CanTakeVersionFromReleaseBranch() fixture.BranchTo("release/2.0.0-LTS"); fixture.MakeACommit(); - fixture.AssertFullSemver("2.0.0-LTS.1+1", configuration); + fixture.AssertFullSemver("2.0.0-LTS.1+6", configuration); } [Test] diff --git a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs index 73a968ff64..37dc154eaa 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs @@ -1053,7 +1053,9 @@ public void EnsureThePreReleaseTagIsCorrectlyGeneratedWhenPreReleaseLabelIsEmpty } [TestCase("0.0.1-alpha.2", true, "0.0.1-alpha.2")] - [TestCase("0.0.1-alpha.2", false, "0.1.0-alpha.1+0")] + [TestCase("0.0.1-alpha.2", false, "0.0.1-alpha.3+0")] + [TestCase("0.1.0-alpha.2", true, "0.1.0-alpha.2")] + [TestCase("0.1.0-alpha.2", false, "0.1.0-alpha.3+0")] [TestCase("0.0.1", true, "0.0.1")] [TestCase("0.0.1", false, "0.1.0-alpha.1+0")] [TestCase("0.0.1-beta.2", true, "0.1.0-alpha.1+1")] @@ -1080,7 +1082,9 @@ public void EnsurePreventIncrementWhenCurrentCommitTaggedOnDevelopWithDeployment } [TestCase("0.0.1-alpha.2", true, "0.0.1-alpha.2")] - [TestCase("0.0.1-alpha.2", false, "0.1.0-alpha.0")] + [TestCase("0.0.1-alpha.2", false, "0.0.1-alpha.2")] + [TestCase("0.1.0-alpha.2", true, "0.1.0-alpha.2")] + [TestCase("0.1.0-alpha.2", false, "0.1.0-alpha.2")] [TestCase("0.0.1", true, "0.0.1")] [TestCase("0.0.1", false, "0.1.0-alpha.0")] [TestCase("0.0.1-beta.2", true, "0.1.0-alpha.1")] @@ -1107,7 +1111,9 @@ public void EnsurePreventIncrementWhenCurrentCommitTaggedOnDevelopWithDeployment } [TestCase("0.0.1-alpha.2", true, "0.0.1")] - [TestCase("0.0.1-alpha.2", false, "0.1.0")] + [TestCase("0.0.1-alpha.2", false, "0.0.1")] + [TestCase("0.1.0-alpha.2", true, "0.1.0")] + [TestCase("0.1.0-alpha.2", false, "0.1.0")] [TestCase("0.0.1", true, "0.0.1")] [TestCase("0.0.1", false, "0.1.0")] [TestCase("0.0.1-beta.2", true, "0.1.0")] @@ -1153,20 +1159,20 @@ public void EnsurePreventIncrementWhenCurrentCommitTaggedOnDevelopWithNextVersio fixture.AssertFullSemver(semVersion, configuration); } - [TestCase(null, true, "6.0.0-beta.1+0")] - [TestCase(null, false, "6.0.0-beta.1+0")] + [TestCase(null, true, "6.0.0-beta.1+1")] + [TestCase(null, false, "6.0.0-beta.1+1")] [TestCase(new[] { "5.0.0" }, true, "5.0.0")] [TestCase(new[] { "5.0.0" }, false, "6.0.0-beta.1+0")] [TestCase(new[] { "6.0.0" }, true, "6.0.0")] [TestCase(new[] { "6.0.0" }, false, "6.1.0-beta.1+0")] [TestCase(new[] { "7.0.0" }, true, "7.0.0")] [TestCase(new[] { "7.0.0" }, false, "7.1.0-beta.1+0")] - [TestCase(new[] { "5.0.0-alpha.2" }, true, "6.0.0-beta.1+0")] - [TestCase(new[] { "5.0.0-alpha.2" }, false, "6.0.0-beta.1+0")] - [TestCase(new[] { "6.0.0-alpha.2" }, true, "6.0.0-beta.1+0")] - [TestCase(new[] { "6.0.0-alpha.2" }, false, "6.0.0-beta.1+0")] - [TestCase(new[] { "7.0.0-alpha.2" }, true, "7.0.0-beta.1+0")] - [TestCase(new[] { "7.0.0-alpha.2" }, false, "7.0.0-beta.1+0")] + [TestCase(new[] { "5.0.0-alpha.2" }, true, "6.0.0-beta.1+1")] + [TestCase(new[] { "5.0.0-alpha.2" }, false, "6.0.0-beta.1+1")] + [TestCase(new[] { "6.0.0-alpha.2" }, true, "6.0.0-beta.1+1")] + [TestCase(new[] { "6.0.0-alpha.2" }, false, "6.0.0-beta.1+1")] + [TestCase(new[] { "7.0.0-alpha.2" }, true, "7.0.0-beta.1+1")] + [TestCase(new[] { "7.0.0-alpha.2" }, false, "7.0.0-beta.1+1")] [TestCase(new[] { "5.0.0-beta.2" }, true, "5.0.0-beta.2")] [TestCase(new[] { "5.0.0-beta.2" }, false, "6.0.0-beta.1+0")] [TestCase(new[] { "6.0.0-beta.2" }, true, "6.0.0-beta.2")] @@ -1245,10 +1251,10 @@ public void EnsureVersionAfterMainIsMergedBackToDevelopIsCorrect() fixture.MergeNoFF("main"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.1.0-alpha.7"); + fixture.AssertFullSemver("1.1.0-alpha.3"); } - [TestCase(false, "2.0.0-alpha.3")] + [TestCase(false, "2.0.0-alpha.2")] [TestCase(true, "2.0.0-alpha.2")] public void EnsureVersionAfterMainIsMergedBackToDevelopIsCorrectForTrunkBased(bool applyTag, string semanticVersion) { diff --git a/src/GitVersion.Core.Tests/IntegrationTests/PhaseGitFlowWithTrunkBasedVersionStrategy.cs b/src/GitVersion.Core.Tests/IntegrationTests/PhaseGitFlowWithTrunkBasedVersionStrategy.cs new file mode 100644 index 0000000000..75f6ef06ba --- /dev/null +++ b/src/GitVersion.Core.Tests/IntegrationTests/PhaseGitFlowWithTrunkBasedVersionStrategy.cs @@ -0,0 +1,11454 @@ +using GitVersion.Configuration; +using GitVersion.VersionCalculation; + +namespace GitVersion.Core.Tests.IntegrationTests; + +[TestFixture] +[Parallelizable(ParallelScope.All)] +public class PhaseGitFlowWithTrunkBasedVersionStrategy +{ + private static GitFlowConfigurationBuilder configurationBuilder => GitFlowConfigurationBuilder.New; + + [Test] + public void __Just_A_Test_00__() + { + var builder = configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased); + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + fixture.BranchTo("feature/foo"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.BranchTo("feature/bar"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-bar.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-bar.1+2", configuration); + } + + [TestCase(true, "release/0.0.0")] + public void __Just_A_Test_01__(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+3", configuration); + + fixture.ApplyTag("0.0.2-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+6", configuration); + } + else + { + // ❔ expected: "0.0.2-1+6" + fixture.AssertFullSemver("0.0.2-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+1", configuration); + } + + [TestCase(true)] + public void __Just_A_Test_02__(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+1", configuration); + + fixture.ApplyTag("2.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+4", configuration); + } + else + { + // ❔ expected: "2.1.0-1+4" + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment inherit on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+1", configuration); + + fixture.ApplyTag("3.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment inherit on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-2+4", configuration); + } + else + { + // ❔ expected: "2.0.0-2+4" + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment inherit on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.1+1", configuration); + + fixture.ApplyTag("2.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1+4", configuration); + } + else + { + // ❔ expected: "2.0.1-1+4" + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment inherit on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+1", configuration); + + fixture.ApplyTag("2.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+4", configuration); + } + else + { + // ❔ expected: "2.1.0-1+4" + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment inherit on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+1", configuration); + + fixture.ApplyTag("3.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment none on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+1", configuration); + + fixture.ApplyTag("0.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+4", configuration); + } + else + { + // ❔ expected: "0.0.0-2+4" + fixture.AssertFullSemver("0.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment none on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+1", configuration); + + fixture.ApplyTag("0.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+4", configuration); + } + else + { + // ❔ expected: "0.0.0-2+4" + fixture.AssertFullSemver("0.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment none on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+1", configuration); + + fixture.ApplyTag("0.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment none on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment none on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment patch on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+1", configuration); + + fixture.ApplyTag("0.0.3-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment patch on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.ApplyTag("0.0.2-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-2+4", configuration); + } + else + { + // ❔ expected: "0.0.2-2+4" + fixture.AssertFullSemver("0.0.3-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment patch on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+1", configuration); + + fixture.ApplyTag("0.0.3-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment patch on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment patch on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment minor on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.1+1", configuration); + + fixture.ApplyTag("0.3.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment minor on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+1", configuration); + + fixture.ApplyTag("0.2.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-2+4", configuration); + } + else + { + // ❔ expected: "0.2.0-2+4" + fixture.AssertFullSemver("0.3.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment minor on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.1+1", configuration); + + fixture.ApplyTag("0.2.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-1+4", configuration); + } + else + { + // ❔ expected: "0.2.1-1+4" + fixture.AssertFullSemver("0.3.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment minor on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.1+1", configuration); + + fixture.ApplyTag("0.3.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment minor on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment major on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+1", configuration); + + fixture.ApplyTag("3.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment major on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-2+4", configuration); + } + else + { + // ❔ expected: "2.0.0-2+4" + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment major on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.1+1", configuration); + + fixture.ApplyTag("2.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1+4", configuration); + } + else + { + // ❔ expected: "2.0.1-foo.2+3" + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment major on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+1", configuration); + + fixture.ApplyTag("2.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+4", configuration); + } + else + { + // ❔ expected: "2.1.0-1+4" + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment major on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+1", configuration); + + fixture.ApplyTag("3.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment inherit on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+3", configuration); + + fixture.ApplyTag("3.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment inherit on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-2+6", configuration); + } + else + { + // ❔ expected: "2.0.0-2+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment inherit on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.1+3", configuration); + + fixture.ApplyTag("2.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1+6", configuration); + } + else + { + // ❔ expected: "2.0.1-1+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment inherit on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+3", configuration); + + fixture.ApplyTag("2.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+6", configuration); + } + else + { + // ❔ expected: "2.1.0-1+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment inherit on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+3", configuration); + + fixture.ApplyTag("3.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment none on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+3", configuration); + + fixture.ApplyTag("0.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-3+6", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment none on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+3", configuration); + + fixture.ApplyTag("0.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-3+6", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment none on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MergeTo("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+2", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+2", configuration); + } + + fixture.MakeACommit("D"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+3", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+3", configuration); + } + + fixture.ApplyTag("0.0.2-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment none on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment none on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment patch on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+3", configuration); + + fixture.ApplyTag("0.0.3-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment patch on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+3", configuration); + + fixture.ApplyTag("0.0.2-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-2+6", configuration); + } + else + { + // ❔ expected: "0.0.2-2+6" + fixture.AssertFullSemver("0.0.3-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment patch on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+3", configuration); + + fixture.ApplyTag("0.0.3-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment patch on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment patch on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment minor on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.1+3", configuration); + + fixture.ApplyTag("0.3.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment minor on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+3", configuration); + + fixture.ApplyTag("0.2.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-2+6", configuration); + } + else + { + // ❔ expected: "0.2.0-1+6" + fixture.AssertFullSemver("0.3.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment minor on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.1+3", configuration); + + fixture.ApplyTag("0.2.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-1+6", configuration); + } + else + { + // ❔ expected: "0.2.1-1+6" + fixture.AssertFullSemver("0.3.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment minor on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.1+3", configuration); + + fixture.ApplyTag("0.3.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment minor on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment major on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+3", configuration); + + fixture.ApplyTag("3.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment major on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-2+6", configuration); + } + else + { + // ❔ expected: "2.0.0-2+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment major on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.1+3", configuration); + + fixture.ApplyTag("2.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1+6", configuration); + } + else + { + // ❔ expected: "2.0.1-1+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment major on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+3", configuration); + + fixture.ApplyTag("2.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+6", configuration); + } + else + { + // ❔ expected: "2.1.0-1+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment major on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+3", configuration); + + fixture.ApplyTag("3.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + /// + /// GitHubFlow - Pull requests (increment inherit on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + + /// + /// GitHubFlow - Pull requests (increment inherit on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "1.0.0-PullRequest2.2" + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-2+2", configuration); + } + else + { + // ❔ expected: "1.0.0-1+2" + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment inherit on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "1.0.1-PullRequest2.2" + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-1+2", configuration); + } + else + { + // ❔ expected: "1.0.1-1+2" + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment inherit on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "1.1.0-PullRequest2.2" + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-1+2", configuration); + } + else + { + // ❔ expected: "1.1.0-1+2" + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment inherit on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + + /// + /// GitHubFlow - Pull requests (increment none on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+2", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment none on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+2", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment none on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+2", configuration); + } + else + { + // ❔ expected: "0.0.1-1+2" + fixture.AssertFullSemver("0.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment none on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+2", configuration); + } + else + { + // ❔ expected: "0.1.0-1+2" + fixture.AssertFullSemver("0.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment none on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+2", configuration); + } + else + { + // ❔ expected: "1.0.0-1+2" + fixture.AssertFullSemver("0.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment patch on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+2", configuration); + } + + /// + /// GitHubFlow - Pull requests (increment patch on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "0.0.1-PullRequest2.2" + fixture.AssertFullSemver("0.0.2-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-2+2", configuration); + } + else + { + // ❔ expected: "0.0.1-2+2" + fixture.AssertFullSemver("0.0.2-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment patch on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+2", configuration); + } + + /// + /// GitHubFlow - Pull requests (increment patch on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+2", configuration); + } + else + { + // ❔ expected: "0.1.0-1+2" + fixture.AssertFullSemver("0.0.2-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment patch on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+2", configuration); + } + else + { + // ❔ expected: "1.0.0-1+2" + fixture.AssertFullSemver("0.0.2-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment minor on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+2", configuration); + } + + /// + /// GitHubFlow - Pull requests (increment minor on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "0.1.0-PullRequest2.2" + fixture.AssertFullSemver("0.2.0-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-2+2", configuration); + } + else + { + // ❔ expected: "0.1.0-1+2" + fixture.AssertFullSemver("0.2.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment minor on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "0.1.1-PullRequest2.2" + fixture.AssertFullSemver("0.2.0-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1+2", configuration); + } + else + { + // ❔ expected: "0.1.1-1+2" + fixture.AssertFullSemver("0.2.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment minor on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+2", configuration); + } + + /// + /// GitHubFlow - Pull requests (increment minor on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+2", configuration); + } + else + { + // ❔ expected: "1.0.0-1+2" + fixture.AssertFullSemver("0.2.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment major on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + + /// + /// GitHubFlow - Pull requests (increment major on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "1.0.0-PullRequest2.2" + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-2+2", configuration); + } + else + { + // ❔ expected: "1.0.0-1+2" + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment major on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "1.0.1-PullRequest2.2" + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-1+2", configuration); + } + else + { + // ❔ expected: "1.0.1-1+2" + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment major on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "1.1.0-PullRequest2.2" + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-1+2", configuration); + } + else + { + // ❔ expected: "1.1.0-1+2" + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment major on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment inherit on main) + /// + [TestCase(false, IncrementStrategy.Inherit)] + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseBranchWithIncrementInheritOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("release/3.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("release/3.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+4", configuration); + + fixture.ApplyTag("3.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("4.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment inherit on main and inherit on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + public void EnsureReleaseBranchWithIncrementInheritOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+4", configuration); + + fixture.ApplyTag("3.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("4.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment inherit on main and none on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+4", configuration); + + fixture.ApplyTag("2.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-2+6", configuration); + } + else + { + // ❔ expected: "2.0.0-2+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("2.0.0"); + fixture.ApplyTag("2.0.0"); + } + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment inherit on main and patch on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.1+4", configuration); + + fixture.ApplyTag("2.0.1-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1+6", configuration); + } + else + { + // ❔ expected: "2.0.1-1+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("2.0.1"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment inherit on main and minor on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.1+4", configuration); + + fixture.ApplyTag("2.1.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+6", configuration); + } + else + { + // ❔ expected: "2.1.0-1+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("2.1.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment inherit on main and major on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + public void EnsureReleaseBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+4", configuration); + + fixture.ApplyTag("3.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("4.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment none on main) + /// + [TestCase(false, IncrementStrategy.Inherit)] + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MergeTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+4", configuration); + + fixture.ApplyTag("2.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("G"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + } + } + + /// + /// GitHubFlow - Release branch (Increment none on main and inherit on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+4", configuration); + + fixture.ApplyTag("0.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-3+6", configuration); + } + else + { + // ❔ expected: "0.0.0-3+6" + fixture.AssertFullSemver("0.0.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MakeACommit("G"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-4+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + } + + /// + /// GitHubFlow - Release branch (Increment none on main and none on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+4", configuration); + + fixture.ApplyTag("0.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-3+6", configuration); + } + else + { + // ❔ expected: "0.0.0-3+6" + fixture.AssertFullSemver("0.0.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MakeACommit("G"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-4+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + } + + /// + /// GitHubFlow - Release branch (Increment none on main and patch on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+4", configuration); + + fixture.ApplyTag("0.0.1-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MakeACommit("G"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + } + } + + /// + /// GitHubFlow - Release branch (Increment none on main and minor on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+4", configuration); + + fixture.ApplyTag("0.1.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("G"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + } + } + + /// + /// GitHubFlow - Release branch (Increment none on main and minor on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); + + fixture.ApplyTag("1.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("G"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + } + } + + /// + /// GitHubFlow - Release branch (Increment patch on main) + /// + [TestCase(false, IncrementStrategy.Inherit)] + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseBranchWithIncrementPatchOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+4", configuration); + + fixture.ApplyTag("2.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment patch on main and inherit on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + public void EnsureReleaseBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.1+4", configuration); + + fixture.ApplyTag("0.0.3-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.3"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.4-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment patch on main and none on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+4", configuration); + + fixture.ApplyTag("0.0.2-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-2+6", configuration); + } + else + { + // ❔ expected: "0.0.2-2+6" + fixture.AssertFullSemver("0.0.3-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.2"); + fixture.ApplyTag("0.0.2"); + } + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment patch on main and patch on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + public void EnsureReleaseBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.1+4", configuration); + + fixture.ApplyTag("0.0.3-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.3"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.4-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment patch on main and minor on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + public void EnsureReleaseBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+4", configuration); + + fixture.ApplyTag("0.1.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment patch on main and major on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + public void EnsureReleaseBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); + + fixture.ApplyTag("1.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment minor on main) + /// + [TestCase(false, IncrementStrategy.Inherit)] + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseBranchWithIncrementMinorOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+4", configuration); + + fixture.ApplyTag("2.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment minor on main and inherit on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + public void EnsureReleaseBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.1+4", configuration); + + fixture.ApplyTag("0.3.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.3.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.4.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment minor on main and none on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+4", configuration); + + fixture.ApplyTag("0.2.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-2+6", configuration); + } + else + { + // ❔ expected: "0.2.0-2+6" + fixture.AssertFullSemver("0.3.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.2.0"); + fixture.ApplyTag("0.2.0"); + } + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment minor on main and patch on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-beta.1+4", configuration); + + fixture.ApplyTag("0.2.1-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-1+6", configuration); + } + else + { + // ❔ expected: "0.2.1-1+6" + fixture.AssertFullSemver("0.3.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("0.2.1"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment minor on main and minor on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + public void EnsureReleaseBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.1+4", configuration); + + fixture.ApplyTag("0.3.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.3.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.4.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment minor on main and major on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + public void EnsureReleaseBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); + + fixture.ApplyTag("1.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment major on main) + /// + [TestCase(false, IncrementStrategy.Inherit)] + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseBranchWithIncrementMajorOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("release/3.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("release/3.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+4", configuration); + + fixture.ApplyTag("3.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("4.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment major on main and inherit on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + [TestCase(false, "release/1.1.1")] + [TestCase(true, "release/1.1.1")] + public void EnsureReleaseBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+4", configuration); + + fixture.ApplyTag("3.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("4.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment major on main and none on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+4", configuration); + + fixture.ApplyTag("2.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-2+6", configuration); + } + else + { + // ❔ expected: "2.0.0-2+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("2.0.0"); + fixture.ApplyTag("2.0.0"); + } + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment major on main and patch on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.1+4", configuration); + + fixture.ApplyTag("2.0.1-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1+6", configuration); + } + else + { + // ❔ expected: "2.0.1-1+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("2.0.1"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment major on main and minor on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.1+4", configuration); + + fixture.ApplyTag("2.1.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+6", configuration); + } + else + { + // ❔ expected: "2.1.0-1+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("2.1.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment major on main and major on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + [TestCase(false, "release/1.1.1")] + [TestCase(true, "release/1.1.1")] + public void EnsureReleaseBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+4", configuration); + + fixture.ApplyTag("3.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("4.0.0-1+1", configuration); + } + + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMain( + bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout("release/2.0.0"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo("release/2.0.0", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndInheritOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-2+6", configuration); + } + else + { + // ❔ expected: "1.0.0-2+6" + fixture.AssertFullSemver("2.0.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("1.0.0"); + fixture.ApplyTag("1.0.0"); + } + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+3", configuration); + + fixture.ApplyTag("1.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-1+6", configuration); + } + else + { + // ❔ expected: "1.0.1-1+6" + fixture.AssertFullSemver("2.0.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("1.0.1"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.0.2")] + [TestCase(true, "release/1.0.2")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+3", configuration); + + fixture.ApplyTag("1.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-1+6", configuration); + } + else + { + // ❔ expected: "1.1.0-1+6" + fixture.AssertFullSemver("2.0.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("1.1.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.0.2")] + [TestCase(true, "release/1.0.2")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + [TestCase(false, "release/1.1.1")] + [TestCase(true, "release/1.1.1")] + [TestCase(false, "release/2.0.0")] + [TestCase(true, "release/2.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMain( + bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout("release/2.0.0"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo("release/2.0.0", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + } + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+3", configuration); + + fixture.ApplyTag("0.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+6", configuration); + } + else + { + // ❔ expected: "0.0.0-2+6" + fixture.AssertFullSemver("0.0.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MakeACommit("F"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-3+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+3", configuration); + + fixture.ApplyTag("0.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+6", configuration); + } + else + { + // ❔ expected: "0.0.0-2+6" + fixture.AssertFullSemver("0.0.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MakeACommit("F"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-3+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(true, "release/0.0.1")] + public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+3", configuration); + + fixture.ApplyTag("0.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MakeACommit("F"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + } + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(true, "release/0.0.1")] + [TestCase(true, "release/0.0.2")] + [TestCase(true, "release/0.1.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("F"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + } + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(true, "release/0.0.1")] + [TestCase(true, "release/0.0.2")] + [TestCase(true, "release/0.1.0")] + [TestCase(true, "release/0.1.1")] + [TestCase(true, "release/0.2.0")] + [TestCase(true, "release/1.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("F"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + } + } + + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMain( + bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout("release/2.0.0"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo("release/2.0.0", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+3", configuration); + + fixture.ApplyTag("0.0.2-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+3", configuration); + + fixture.ApplyTag("0.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-2+6", configuration); + } + else + { + // ❔ expected: "0.0.1-2+6" + fixture.AssertFullSemver("0.0.2-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.1"); + fixture.ApplyTag("0.0.1"); + } + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+3", configuration); + + fixture.ApplyTag("0.0.2-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(true, "release/0.1.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(true, "release/0.1.0")] + [TestCase(true, "release/0.1.1")] + [TestCase(true, "release/1.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-1+1", configuration); + } + + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMain( + bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout("release/2.0.0"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo("release/2.0.0", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+3", configuration); + + fixture.ApplyTag("0.2.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-2+6", configuration); + } + else + { + // ❔ not expected + fixture.AssertFullSemver("0.2.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.1.0"); + fixture.ApplyTag("0.1.0"); + } + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.1+3", configuration); + + fixture.ApplyTag("0.1.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1+6", configuration); + } + else + { + // ❔ not expected + fixture.AssertFullSemver("0.2.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("0.1.1"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+3", configuration); + + fixture.ApplyTag("0.2.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-1+1", configuration); + } + + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMain( + bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout("release/2.0.0"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo("release/2.0.0", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-2+6", configuration); + } + else + { + // ❔ expected: "1.0.0-2+6" + fixture.AssertFullSemver("2.0.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("1.0.0"); + fixture.ApplyTag("1.0.0"); + } + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+3", configuration); + + fixture.ApplyTag("1.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-1+6", configuration); + } + else + { + // ❔ expected: "1.0.1-1+6" + fixture.AssertFullSemver("2.0.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("1.0.1"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.0.2")] + [TestCase(true, "release/1.0.2")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+3", configuration); + + fixture.ApplyTag("1.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-1+6", configuration); + } + else + { + // ❔ expected: "1.1.0-1+6" + fixture.AssertFullSemver("2.0.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("1.1.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.0.2")] + [TestCase(true, "release/1.0.2")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + [TestCase(false, "release/1.1.1")] + [TestCase(true, "release/1.1.1")] + [TestCase(false, "release/2.0.0")] + [TestCase(true, "release/2.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } +} diff --git a/src/GitVersion.Core.Tests/IntegrationTests/PhaseGitHubFlowWithTrunkBasedVersionStrategy.cs b/src/GitVersion.Core.Tests/IntegrationTests/PhaseGitHubFlowWithTrunkBasedVersionStrategy.cs new file mode 100644 index 0000000000..9b57409ba2 --- /dev/null +++ b/src/GitVersion.Core.Tests/IntegrationTests/PhaseGitHubFlowWithTrunkBasedVersionStrategy.cs @@ -0,0 +1,11454 @@ +using GitVersion.Configuration; +using GitVersion.VersionCalculation; + +namespace GitVersion.Core.Tests.IntegrationTests; + +[TestFixture] +[Parallelizable(ParallelScope.All)] +public class PhaseGitHubFlowWithTrunkBasedVersionStrategy +{ + private static GitHubFlowConfigurationBuilder configurationBuilder => GitHubFlowConfigurationBuilder.New; + + [Test] + public void __Just_A_Test_00__() + { + var builder = configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased); + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + fixture.BranchTo("feature/foo"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.BranchTo("feature/bar"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-bar.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-bar.1+2", configuration); + } + + [TestCase(true, "release/0.0.0")] + public void __Just_A_Test_01__(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+3", configuration); + + fixture.ApplyTag("0.0.2-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+6", configuration); + } + else + { + // ❔ expected: "0.0.2-1+6" + fixture.AssertFullSemver("0.0.2-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+1", configuration); + } + + [TestCase(true)] + public void __Just_A_Test_02__(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+1", configuration); + + fixture.ApplyTag("2.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+4", configuration); + } + else + { + // ❔ expected: "2.1.0-1+4" + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment inherit on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+1", configuration); + + fixture.ApplyTag("3.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment inherit on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-2+4", configuration); + } + else + { + // ❔ expected: "2.0.0-2+4" + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment inherit on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.1+1", configuration); + + fixture.ApplyTag("2.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1+4", configuration); + } + else + { + // ❔ expected: "2.0.1-1+4" + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment inherit on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+1", configuration); + + fixture.ApplyTag("2.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+4", configuration); + } + else + { + // ❔ expected: "2.1.0-1+4" + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment inherit on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+1", configuration); + + fixture.ApplyTag("3.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment none on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+1", configuration); + + fixture.ApplyTag("0.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+4", configuration); + } + else + { + // ❔ expected: "0.0.0-2+4" + fixture.AssertFullSemver("0.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment none on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+1", configuration); + + fixture.ApplyTag("0.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+4", configuration); + } + else + { + // ❔ expected: "0.0.0-2+4" + fixture.AssertFullSemver("0.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment none on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+1", configuration); + + fixture.ApplyTag("0.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment none on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment none on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment patch on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+1", configuration); + + fixture.ApplyTag("0.0.3-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment patch on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.ApplyTag("0.0.2-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-2+4", configuration); + } + else + { + // ❔ expected: "0.0.2-2+4" + fixture.AssertFullSemver("0.0.3-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment patch on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+1", configuration); + + fixture.ApplyTag("0.0.3-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment patch on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment patch on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment minor on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.1+1", configuration); + + fixture.ApplyTag("0.3.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment minor on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+1", configuration); + + fixture.ApplyTag("0.2.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-2+4", configuration); + } + else + { + // ❔ expected: "0.2.0-2+4" + fixture.AssertFullSemver("0.3.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment minor on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.1+1", configuration); + + fixture.ApplyTag("0.2.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-1+4", configuration); + } + else + { + // ❔ expected: "0.2.1-1+4" + fixture.AssertFullSemver("0.3.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment minor on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.1+1", configuration); + + fixture.ApplyTag("0.3.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment minor on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment major on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+1", configuration); + + fixture.ApplyTag("3.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + + /// + /// GitHubFlow - Feature branch (Increment major on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-2+4", configuration); + } + else + { + // ❔ expected: "2.0.0-2+4" + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment major on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.1+1", configuration); + + fixture.ApplyTag("2.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1+4", configuration); + } + else + { + // ❔ expected: "2.0.1-foo.2+3" + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment major on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+1", configuration); + + fixture.ApplyTag("2.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+4", configuration); + } + else + { + // ❔ expected: "2.1.0-1+4" + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + } + + /// + /// GitHubFlow - Feature branch (Increment major on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+1", configuration); + + fixture.ApplyTag("3.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+4", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment inherit on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+3", configuration); + + fixture.ApplyTag("3.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment inherit on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-2+6", configuration); + } + else + { + // ❔ expected: "2.0.0-2+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment inherit on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.1+3", configuration); + + fixture.ApplyTag("2.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1+6", configuration); + } + else + { + // ❔ expected: "2.0.1-1+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment inherit on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+3", configuration); + + fixture.ApplyTag("2.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+6", configuration); + } + else + { + // ❔ expected: "2.1.0-1+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment inherit on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+3", configuration); + + fixture.ApplyTag("3.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment none on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+3", configuration); + + fixture.ApplyTag("0.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-3+6", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment none on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+3", configuration); + + fixture.ApplyTag("0.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-3+6", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment none on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MergeTo("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+2", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+2", configuration); + } + + fixture.MakeACommit("D"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+3", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+3", configuration); + } + + fixture.ApplyTag("0.0.2-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment none on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment none on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment patch on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+3", configuration); + + fixture.ApplyTag("0.0.3-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment patch on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+3", configuration); + + fixture.ApplyTag("0.0.2-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-2+6", configuration); + } + else + { + // ❔ expected: "0.0.2-2+6" + fixture.AssertFullSemver("0.0.3-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment patch on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.1+3", configuration); + + fixture.ApplyTag("0.0.3-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment patch on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment patch on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment minor on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.1+3", configuration); + + fixture.ApplyTag("0.3.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment minor on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+3", configuration); + + fixture.ApplyTag("0.2.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-2+6", configuration); + } + else + { + // ❔ expected: "0.2.0-1+6" + fixture.AssertFullSemver("0.3.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment minor on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.1+3", configuration); + + fixture.ApplyTag("0.2.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-1+6", configuration); + } + else + { + // ❔ expected: "0.2.1-1+6" + fixture.AssertFullSemver("0.3.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment minor on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.1+3", configuration); + + fixture.ApplyTag("0.3.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment minor on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment major on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+3", configuration); + + fixture.ApplyTag("3.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment major on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-2+6", configuration); + } + else + { + // ❔ expected: "2.0.0-2+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment major on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.1+3", configuration); + + fixture.ApplyTag("2.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1+6", configuration); + } + else + { + // ❔ expected: "2.0.1-1+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment major on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.1+3", configuration); + + fixture.ApplyTag("2.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+6", configuration); + } + else + { + // ❔ expected: "2.1.0-1+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + } + + /// + /// GitHubFlow - Merge main to feature branch (Increment major on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.1+3", configuration); + + fixture.ApplyTag("3.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-foo.2+2", configuration); + + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + /// + /// GitHubFlow - Pull requests (increment inherit on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + + /// + /// GitHubFlow - Pull requests (increment inherit on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "1.0.0-PullRequest2.2" + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-2+2", configuration); + } + else + { + // ❔ expected: "1.0.0-1+2" + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment inherit on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "1.0.1-PullRequest2.2" + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-1+2", configuration); + } + else + { + // ❔ expected: "1.0.1-1+2" + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment inherit on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "1.1.0-PullRequest2.2" + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-1+2", configuration); + } + else + { + // ❔ expected: "1.1.0-1+2" + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment inherit on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + + /// + /// GitHubFlow - Pull requests (increment none on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+2", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment none on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+2", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment none on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+2", configuration); + } + else + { + // ❔ expected: "0.0.1-1+2" + fixture.AssertFullSemver("0.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment none on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+2", configuration); + } + else + { + // ❔ expected: "0.1.0-1+2" + fixture.AssertFullSemver("0.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment none on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+2", configuration); + } + else + { + // ❔ expected: "1.0.0-1+2" + fixture.AssertFullSemver("0.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment patch on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+2", configuration); + } + + /// + /// GitHubFlow - Pull requests (increment patch on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "0.0.1-PullRequest2.2" + fixture.AssertFullSemver("0.0.2-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-2+2", configuration); + } + else + { + // ❔ expected: "0.0.1-2+2" + fixture.AssertFullSemver("0.0.2-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment patch on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+2", configuration); + } + + /// + /// GitHubFlow - Pull requests (increment patch on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+2", configuration); + } + else + { + // ❔ expected: "0.1.0-1+2" + fixture.AssertFullSemver("0.0.2-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment patch on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+2", configuration); + } + else + { + // ❔ expected: "1.0.0-1+2" + fixture.AssertFullSemver("0.0.2-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment minor on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+2", configuration); + } + + /// + /// GitHubFlow - Pull requests (increment minor on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "0.1.0-PullRequest2.2" + fixture.AssertFullSemver("0.2.0-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-2+2", configuration); + } + else + { + // ❔ expected: "0.1.0-1+2" + fixture.AssertFullSemver("0.2.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment minor on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "0.1.1-PullRequest2.2" + fixture.AssertFullSemver("0.2.0-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1+2", configuration); + } + else + { + // ❔ expected: "0.1.1-1+2" + fixture.AssertFullSemver("0.2.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment minor on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+2", configuration); + } + + /// + /// GitHubFlow - Pull requests (increment minor on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+2", configuration); + } + else + { + // ❔ expected: "1.0.0-1+2" + fixture.AssertFullSemver("0.2.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment major on main and inherit on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + + /// + /// GitHubFlow - Pull requests (increment major on main and none on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.None) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "1.0.0-PullRequest2.2" + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-2+2", configuration); + } + else + { + // ❔ expected: "1.0.0-1+2" + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment major on main and patch on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Patch) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "1.0.1-PullRequest2.2" + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-1+2", configuration); + } + else + { + // ❔ expected: "1.0.1-1+2" + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment major on main and minor on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Minor) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-PullRequest2.2", configuration); + } + else + { + // ❔ expected: "1.1.0-PullRequest2.2" + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + } + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-1+2", configuration); + } + else + { + // ❔ expected: "1.1.0-1+2" + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + } + + /// + /// GitHubFlow - Pull requests (increment major on main and major on feature) + /// + [TestCase(false)] + [TestCase(true)] + public void EnsurePullRequestWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Major) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.2", configuration); + + fixture.Checkout("main"); + fixture.Remove("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+2", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment inherit on main) + /// + [TestCase(false, IncrementStrategy.Inherit)] + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseBranchWithIncrementInheritOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("release/3.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("release/3.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+4", configuration); + + fixture.ApplyTag("3.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("4.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment inherit on main and inherit on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + public void EnsureReleaseBranchWithIncrementInheritOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+4", configuration); + + fixture.ApplyTag("3.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("4.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment inherit on main and none on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+4", configuration); + + fixture.ApplyTag("2.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-2+6", configuration); + } + else + { + // ❔ expected: "2.0.0-2+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("2.0.0"); + fixture.ApplyTag("2.0.0"); + } + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment inherit on main and patch on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.1+4", configuration); + + fixture.ApplyTag("2.0.1-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1+6", configuration); + } + else + { + // ❔ expected: "2.0.1-1+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("2.0.1"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment inherit on main and minor on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.1+4", configuration); + + fixture.ApplyTag("2.1.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+6", configuration); + } + else + { + // ❔ expected: "2.1.0-1+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("2.1.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment inherit on main and major on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + public void EnsureReleaseBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+4", configuration); + + fixture.ApplyTag("3.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("4.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment none on main) + /// + [TestCase(false, IncrementStrategy.Inherit)] + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MergeTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+4", configuration); + + fixture.ApplyTag("2.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("G"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + } + } + + /// + /// GitHubFlow - Release branch (Increment none on main and inherit on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+4", configuration); + + fixture.ApplyTag("0.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-3+6", configuration); + } + else + { + // ❔ expected: "0.0.0-3+6" + fixture.AssertFullSemver("0.0.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MakeACommit("G"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-4+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + } + + /// + /// GitHubFlow - Release branch (Increment none on main and none on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+4", configuration); + + fixture.ApplyTag("0.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-3+6", configuration); + } + else + { + // ❔ expected: "0.0.0-3+6" + fixture.AssertFullSemver("0.0.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MakeACommit("G"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-4+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + } + + /// + /// GitHubFlow - Release branch (Increment none on main and patch on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+4", configuration); + + fixture.ApplyTag("0.0.1-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MakeACommit("G"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + } + } + + /// + /// GitHubFlow - Release branch (Increment none on main and minor on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+4", configuration); + + fixture.ApplyTag("0.1.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("G"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + } + } + + /// + /// GitHubFlow - Release branch (Increment none on main and minor on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); + + fixture.ApplyTag("1.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("G"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + } + } + + /// + /// GitHubFlow - Release branch (Increment patch on main) + /// + [TestCase(false, IncrementStrategy.Inherit)] + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseBranchWithIncrementPatchOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+4", configuration); + + fixture.ApplyTag("2.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment patch on main and inherit on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + public void EnsureReleaseBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.1+4", configuration); + + fixture.ApplyTag("0.0.3-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.3"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.4-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment patch on main and none on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+4", configuration); + + fixture.ApplyTag("0.0.2-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-2+6", configuration); + } + else + { + // ❔ expected: "0.0.2-2+6" + fixture.AssertFullSemver("0.0.3-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.2"); + fixture.ApplyTag("0.0.2"); + } + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment patch on main and patch on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + public void EnsureReleaseBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.1+4", configuration); + + fixture.ApplyTag("0.0.3-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.3"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.4-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment patch on main and minor on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + public void EnsureReleaseBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+4", configuration); + + fixture.ApplyTag("0.1.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment patch on main and major on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + public void EnsureReleaseBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); + + fixture.ApplyTag("1.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment minor on main) + /// + [TestCase(false, IncrementStrategy.Inherit)] + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseBranchWithIncrementMinorOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+4", configuration); + + fixture.ApplyTag("2.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment minor on main and inherit on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + public void EnsureReleaseBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.1+4", configuration); + + fixture.ApplyTag("0.3.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.3.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.4.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment minor on main and none on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+4", configuration); + + fixture.ApplyTag("0.2.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-2+6", configuration); + } + else + { + // ❔ expected: "0.2.0-2+6" + fixture.AssertFullSemver("0.3.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.2.0"); + fixture.ApplyTag("0.2.0"); + } + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment minor on main and patch on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-beta.1+4", configuration); + + fixture.ApplyTag("0.2.1-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.1-1+6", configuration); + } + else + { + // ❔ expected: "0.2.1-1+6" + fixture.AssertFullSemver("0.3.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("0.2.1"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment minor on main and minor on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + public void EnsureReleaseBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.1+4", configuration); + + fixture.ApplyTag("0.3.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.3.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.4.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment minor on main and major on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + public void EnsureReleaseBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+4", configuration); + + fixture.ApplyTag("1.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment major on main) + /// + [TestCase(false, IncrementStrategy.Inherit)] + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseBranchWithIncrementMajorOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("release/3.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo("release/3.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+4", configuration); + + fixture.ApplyTag("3.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("4.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment major on main and inherit on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + [TestCase(false, "release/1.1.1")] + [TestCase(true, "release/1.1.1")] + public void EnsureReleaseBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+4", configuration); + + fixture.ApplyTag("3.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("4.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment major on main and none on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+4", configuration); + + fixture.ApplyTag("2.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-2+6", configuration); + } + else + { + // ❔ expected: "2.0.0-2+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("2.0.0"); + fixture.ApplyTag("2.0.0"); + } + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment major on main and patch on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.1+4", configuration); + + fixture.ApplyTag("2.0.1-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1+6", configuration); + } + else + { + // ❔ expected: "2.0.1-1+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("2.0.1"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment major on main and minor on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.1+4", configuration); + + fixture.ApplyTag("2.1.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+6", configuration); + } + else + { + // ❔ expected: "2.1.0-1+6" + fixture.AssertFullSemver("3.0.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("2.1.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + /// + /// GitHubFlow - Release branch (Increment major on main and major on release) + /// + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + [TestCase(false, "release/1.1.1")] + [TestCase(true, "release/1.1.1")] + public void EnsureReleaseBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.Checkout("main"); + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MergeTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+3", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.1+4", configuration); + + fixture.ApplyTag("3.0.0-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+0", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-beta.2+1", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("4.0.0-1+1", configuration); + } + + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMain( + bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout("release/2.0.0"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo("release/2.0.0", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndInheritOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-2+6", configuration); + } + else + { + // ❔ expected: "1.0.0-2+6" + fixture.AssertFullSemver("2.0.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("1.0.0"); + fixture.ApplyTag("1.0.0"); + } + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+3", configuration); + + fixture.ApplyTag("1.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-1+6", configuration); + } + else + { + // ❔ expected: "1.0.1-1+6" + fixture.AssertFullSemver("2.0.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("1.0.1"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.0.2")] + [TestCase(true, "release/1.0.2")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+3", configuration); + + fixture.ApplyTag("1.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-1+6", configuration); + } + else + { + // ❔ expected: "1.1.0-1+6" + fixture.AssertFullSemver("2.0.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("1.1.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.0.2")] + [TestCase(true, "release/1.0.2")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + [TestCase(false, "release/1.1.1")] + [TestCase(true, "release/1.1.1")] + [TestCase(false, "release/2.0.0")] + [TestCase(true, "release/2.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Inherit) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMain( + bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout("release/2.0.0"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo("release/2.0.0", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + } + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+3", configuration); + + fixture.ApplyTag("0.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+6", configuration); + } + else + { + // ❔ expected: "0.0.0-2+6" + fixture.AssertFullSemver("0.0.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MakeACommit("F"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-3+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.1+3", configuration); + + fixture.ApplyTag("0.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-2+6", configuration); + } + else + { + // ❔ expected: "0.0.0-2+6" + fixture.AssertFullSemver("0.0.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.0"); + fixture.ApplyTag("0.0.0"); + } + fixture.MakeACommit("F"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-3+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + } + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(true, "release/0.0.1")] + public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+3", configuration); + + fixture.ApplyTag("0.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.MakeACommit("F"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + } + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(true, "release/0.0.1")] + [TestCase(true, "release/0.0.2")] + [TestCase(true, "release/0.1.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("F"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + } + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(true, "release/0.0.1")] + [TestCase(true, "release/0.0.2")] + [TestCase(true, "release/0.1.0")] + [TestCase(true, "release/0.1.1")] + [TestCase(true, "release/0.2.0")] + [TestCase(true, "release/1.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.None) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("F"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-2+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + } + } + + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMain( + bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout("release/2.0.0"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo("release/2.0.0", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.1-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+3", configuration); + + fixture.ApplyTag("0.0.2-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.1+3", configuration); + + fixture.ApplyTag("0.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-2+6", configuration); + } + else + { + // ❔ expected: "0.0.1-2+6" + fixture.AssertFullSemver("0.0.2-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.0.1"); + fixture.ApplyTag("0.0.1"); + } + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+3", configuration); + + fixture.ApplyTag("0.0.2-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(true, "release/0.1.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(true, "release/0.1.0")] + [TestCase(true, "release/0.1.1")] + [TestCase(true, "release/1.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Patch) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-1+1", configuration); + } + + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMain( + bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout("release/2.0.0"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo("release/2.0.0", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.1.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+3", configuration); + + fixture.ApplyTag("0.2.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-2+6", configuration); + } + else + { + // ❔ not expected + fixture.AssertFullSemver("0.2.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("0.1.0"); + fixture.ApplyTag("0.1.0"); + } + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.1+3", configuration); + + fixture.ApplyTag("0.1.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1+6", configuration); + } + else + { + // ❔ not expected + fixture.AssertFullSemver("0.2.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("0.1.1"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.1+3", configuration); + + fixture.ApplyTag("0.2.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.2.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.3.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Minor) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-1+1", configuration); + } + + [TestCase(true, IncrementStrategy.Inherit)] + [TestCase(false, IncrementStrategy.None)] + [TestCase(true, IncrementStrategy.None)] + [TestCase(false, IncrementStrategy.Patch)] + [TestCase(true, IncrementStrategy.Patch)] + [TestCase(false, IncrementStrategy.Minor)] + [TestCase(true, IncrementStrategy.Minor)] + [TestCase(false, IncrementStrategy.Major)] + [TestCase(true, IncrementStrategy.Major)] + public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMain( + bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(incrementOnReleaseBranch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo("release/2.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout("release/2.0.0"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo("release/2.0.0", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.None) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-2+6", configuration); + } + else + { + // ❔ expected: "1.0.0-2+6" + fixture.AssertFullSemver("2.0.0-1+6", configuration); + } + + if (!useTrunkBased) + { + fixture.Repository.Tags.Remove("1.0.0"); + fixture.ApplyTag("1.0.0"); + } + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Patch) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.1+3", configuration); + + fixture.ApplyTag("1.0.1-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-1+6", configuration); + } + else + { + // ❔ expected: "1.0.1-1+6" + fixture.AssertFullSemver("2.0.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("1.0.1"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.0.2")] + [TestCase(true, "release/1.0.2")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Minor) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.1+3", configuration); + + fixture.ApplyTag("1.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("1.1.0-1+6", configuration); + } + else + { + // ❔ expected: "1.1.0-1+6" + fixture.AssertFullSemver("2.0.0-1+6", configuration); + } + + if (!useTrunkBased) fixture.ApplyTag("1.1.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+1", configuration); + } + + [TestCase(false, "release/next")] + [TestCase(true, "release/next")] + [TestCase(false, "release/0.0.0")] + [TestCase(true, "release/0.0.0")] + [TestCase(false, "release/0.0.1")] + [TestCase(true, "release/0.0.1")] + [TestCase(false, "release/0.0.2")] + [TestCase(true, "release/0.0.2")] + [TestCase(false, "release/0.1.0")] + [TestCase(true, "release/0.1.0")] + [TestCase(false, "release/0.1.1")] + [TestCase(true, "release/0.1.1")] + [TestCase(false, "release/0.2.0")] + [TestCase(true, "release/0.2.0")] + [TestCase(false, "release/1.0.0")] + [TestCase(true, "release/1.0.0")] + [TestCase(false, "release/1.0.1")] + [TestCase(true, "release/1.0.1")] + [TestCase(false, "release/1.0.2")] + [TestCase(true, "release/1.0.2")] + [TestCase(false, "release/1.1.0")] + [TestCase(true, "release/1.1.0")] + [TestCase(false, "release/1.1.1")] + [TestCase(true, "release/1.1.1")] + [TestCase(false, "release/2.0.0")] + [TestCase(true, "release/2.0.0")] + public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch( + bool useTrunkBased, string releaseBranch) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder + .WithIncrement(IncrementStrategy.Major) + .WithBranch("main", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment) + .WithIncrement(IncrementStrategy.Major) + ).WithBranch("release", _ => _ + .WithIncrement(IncrementStrategy.Major) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).WithBranch("feature", _ => _ + .WithIncrement(IncrementStrategy.Inherit) + .WithDeploymentMode(DeploymentMode.ManualDeployment) + ).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-1+1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.BranchTo(releaseBranch); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + fixture.ApplyTag("2.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-foo.2+1", configuration); + + fixture.Checkout(releaseBranch); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-PullRequest2.5", configuration); + + fixture.Checkout("feature/foo"); + fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("2.0.0-1+6", configuration); + + if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("3.0.0-1+1", configuration); + } +} diff --git a/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs index 41656728e6..6754a39139 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs @@ -136,6 +136,6 @@ public void CalculatesCorrectVersionAfterReleaseBranchMergedToMain() fixture.Repository.CreatePullRequestRef("release/2.0.0", MainBranch, normalise: true); - fixture.AssertFullSemver("2.0.0-PullRequest2.3"); + fixture.AssertFullSemver("2.0.0-PullRequest2.4"); } } diff --git a/src/GitVersion.Core.Tests/IntegrationTests/ReleaseBranchScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/ReleaseBranchScenarios.cs index 315cfad80c..9a777ef127 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/ReleaseBranchScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/ReleaseBranchScenarios.cs @@ -44,11 +44,11 @@ public void NoMergeBacksToDevelopInCaseThereAreChangesInReleaseBranch() fixture.Checkout("develop"); fixture.AssertFullSemver("1.1.0-alpha.0"); fixture.Repository.MergeNoFF("release/1.0.0"); - fixture.AssertFullSemver("1.1.0-alpha.2"); + fixture.AssertFullSemver("1.1.0-alpha.1"); fixture.Repository.MakeACommit(); - fixture.AssertFullSemver("1.1.0-alpha.3"); + fixture.AssertFullSemver("1.1.0-alpha.2"); fixture.Repository.Branches.Remove("release/1.0.0"); - fixture.AssertFullSemver("1.1.0-alpha.3"); + fixture.AssertFullSemver("1.1.0-alpha.2"); } [Test] @@ -60,9 +60,9 @@ public void CanTakeVersionFromReleaseBranch() fixture.Repository.CreateBranch("release-2.0.0"); fixture.Checkout("release-2.0.0"); - fixture.AssertFullSemver("2.0.0-beta.1+0"); + fixture.AssertFullSemver("2.0.0-beta.1+5"); fixture.Repository.MakeCommits(2); - fixture.AssertFullSemver("2.0.0-beta.1+2"); + fixture.AssertFullSemver("2.0.0-beta.1+7"); } [Test] @@ -74,9 +74,9 @@ public void CanTakeVersionFromReleasesBranch() fixture.Repository.CreateBranch("releases/2.0.0"); fixture.Checkout("releases/2.0.0"); - fixture.AssertFullSemver("2.0.0-beta.1+0"); + fixture.AssertFullSemver("2.0.0-beta.1+5"); fixture.Repository.MakeCommits(2); - fixture.AssertFullSemver("2.0.0-beta.1+2"); + fixture.AssertFullSemver("2.0.0-beta.1+7"); } [Test] @@ -100,9 +100,9 @@ public void ReleaseBranchWithNextVersionSetInConfig() fixture.Repository.MakeCommits(5); fixture.BranchTo("release-2.0.0"); - fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); fixture.Repository.MakeCommits(2); - fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+7", configuration); } [Test] @@ -118,9 +118,9 @@ public void CanTakeVersionFromReleaseBranchWithLabelOverridden() fixture.Repository.CreateBranch("release-2.0.0"); fixture.Checkout("release-2.0.0"); - fixture.AssertFullSemver("2.0.0-rc.1+0", configuration); + fixture.AssertFullSemver("2.0.0-rc.1+5", configuration); fixture.Repository.MakeCommits(2); - fixture.AssertFullSemver("2.0.0-rc.1+2", configuration); + fixture.AssertFullSemver("2.0.0-rc.1+7", configuration); } [Test] @@ -133,9 +133,9 @@ public void CanHandleReleaseBranchWithStability() fixture.Repository.CreateBranch("release-2.0.0-Final"); fixture.Checkout("release-2.0.0-Final"); - fixture.AssertFullSemver("2.0.0-beta.1+0"); + fixture.AssertFullSemver("2.0.0-beta.1+5"); fixture.Repository.MakeCommits(2); - fixture.AssertFullSemver("2.0.0-beta.1+2"); + fixture.AssertFullSemver("2.0.0-beta.1+7"); } [Test] @@ -152,9 +152,9 @@ public void WhenReleaseBranchOffDevelopIsMergedIntoMainAndDevelopVersionIsTakenW fixture.Checkout(MainBranch); fixture.Repository.MergeNoFF("release-2.0.0", Generate.SignatureNow()); - fixture.AssertFullSemver("2.0.0-0"); + fixture.AssertFullSemver("2.0.0-6"); fixture.Repository.MakeCommits(2); - fixture.AssertFullSemver("2.0.0-2"); + fixture.AssertFullSemver("2.0.0-8"); } [Test] @@ -169,7 +169,7 @@ public void WhenReleaseBranchOffMainIsMergedIntoMainVersionIsTakenWithIt() fixture.Checkout(MainBranch); fixture.Repository.MergeNoFF("release-2.0.0", Generate.SignatureNow()); - fixture.AssertFullSemver("2.0.0-0"); + fixture.AssertFullSemver("2.0.0-6"); } [Test] @@ -184,9 +184,9 @@ public void MainVersioningContinuousCorrectlyAfterMergingReleaseBranch() fixture.Checkout(MainBranch); fixture.Repository.MergeNoFF("release-2.0.0", Generate.SignatureNow()); - fixture.AssertFullSemver("2.0.0-0"); + fixture.AssertFullSemver("2.0.0-6"); fixture.Repository.Branches.Remove("release-2.0.0"); - fixture.AssertFullSemver("2.0.0-0"); + fixture.AssertFullSemver("2.0.0-6"); fixture.Repository.ApplyTag("2.0.0"); fixture.Repository.MakeCommits(1); fixture.AssertFullSemver("2.0.1-1"); @@ -234,7 +234,7 @@ public void WhenReleaseBranchIsMergedIntoMainHighestVersionIsTakenWithIt() fixture.Checkout(MainBranch); fixture.Repository.MergeNoFF("release-1.0.0", Generate.SignatureNow()); - fixture.AssertFullSemver("2.0.0-5"); + fixture.AssertFullSemver("2.0.0-11"); } [Test] @@ -262,7 +262,7 @@ public void WhenReleaseBranchIsMergedIntoMainHighestVersionIsTakenWithItEvenWith fixture.Checkout(MainBranch); fixture.Repository.MergeNoFF("release-1.0.0", Generate.SignatureNow()); - fixture.AssertFullSemver("3.0.0-10"); + fixture.AssertFullSemver("3.0.0-16"); } [Test] @@ -281,7 +281,7 @@ public void WhenMergingReleaseBackToDevShouldNotResetBetaVersion() fixture.Checkout("release-2.0.0"); fixture.Repository.MakeCommits(1); - fixture.AssertFullSemver("2.0.0-beta.1+1"); + fixture.AssertFullSemver("2.0.0-beta.1+2"); //tag it to bump to beta 2 fixture.Repository.ApplyTag("2.0.0-beta1"); @@ -317,12 +317,12 @@ public void HotfixOffReleaseBranchShouldNotResetCount() fixture.Checkout("release-2.0.0"); fixture.Repository.MakeCommits(1); - fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); //tag it to bump to beta 2 fixture.Repository.MakeCommits(4); - fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+6", configuration); //merge down to develop fixture.Repository.CreateBranch("hotfix-2.0.0"); @@ -332,7 +332,7 @@ public void HotfixOffReleaseBranchShouldNotResetCount() fixture.Checkout("release-2.0.0"); fixture.Repository.MergeNoFF("hotfix-2.0.0", Generate.SignatureNow()); fixture.Repository.Branches.Remove(fixture.Repository.Branches["hotfix-2.0.0"]); - fixture.AssertFullSemver("2.0.0-beta.1+7", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+8", configuration); } [Test] @@ -354,14 +354,14 @@ public void MergeOnReleaseBranchShouldNotResetCount() fixture.Repository.CreateBranch("release/2.0.0-xxx"); fixture.Checkout("release/2.0.0-xxx"); fixture.Repository.MakeACommit(); - fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); fixture.Checkout("release/2.0.0"); fixture.Repository.MakeACommit(); - fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); fixture.Repository.MergeNoFF("release/2.0.0-xxx"); - fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+4", configuration); } [Test] @@ -375,12 +375,12 @@ public void CommitOnDevelopAfterReleaseBranchMergeToDevelopShouldNotResetCount() // Create release from develop fixture.BranchTo("release-2.0.0"); - fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); // Make some commits on release fixture.MakeACommit("release 1"); fixture.MakeACommit("release 2"); - fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); // First forward merge release to develop fixture.Checkout("develop"); @@ -389,24 +389,24 @@ public void CommitOnDevelopAfterReleaseBranchMergeToDevelopShouldNotResetCount() // Make some new commit on release fixture.Checkout("release-2.0.0"); fixture.Repository.MakeACommit("release 3 - after first merge"); - fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+4", configuration); // Make new commit on develop fixture.Checkout("develop"); // Checkout to release (no new commits) fixture.Checkout("release-2.0.0"); - fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+4", configuration); fixture.Checkout("develop"); fixture.Repository.MakeACommit("develop after merge"); // Checkout to release (no new commits) fixture.Checkout("release-2.0.0"); - fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+4", configuration); // Make some new commit on release fixture.Repository.MakeACommit("release 4"); fixture.Repository.MakeACommit("release 5"); - fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+6", configuration); // Second merge release to develop fixture.Checkout("develop"); @@ -414,7 +414,7 @@ public void CommitOnDevelopAfterReleaseBranchMergeToDevelopShouldNotResetCount() // Checkout to release (no new commits) fixture.Checkout("release-2.0.0"); - fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+6", configuration); } [Test] @@ -428,12 +428,12 @@ public void CommitBeetweenMergeReleaseToDevelopShouldNotResetCount() Commands.Checkout(fixture.Repository, "develop"); fixture.Repository.CreateBranch("release-2.0.0"); Commands.Checkout(fixture.Repository, "release-2.0.0"); - fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); // Make some commits on release var commit1 = fixture.Repository.MakeACommit(); fixture.Repository.MakeACommit(); - fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); // Merge release to develop - emulate commit between other person release commit push and this commit merge to develop Commands.Checkout(fixture.Repository, "develop"); @@ -442,12 +442,12 @@ public void CommitBeetweenMergeReleaseToDevelopShouldNotResetCount() // Check version on release after merge to develop Commands.Checkout(fixture.Repository, "release-2.0.0"); - fixture.AssertFullSemver("2.0.0-beta.1+2", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+3", configuration); // Check version on release after making some new commits fixture.Repository.MakeACommit(); fixture.Repository.MakeACommit(); - fixture.AssertFullSemver("2.0.0-beta.1+4", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+5", configuration); } [Test] @@ -505,11 +505,11 @@ public void FeatureFromReleaseBranchShouldNotResetCount() Commands.Checkout(fixture.Repository, "develop"); fixture.Repository.CreateBranch("release-2.0.0"); Commands.Checkout(fixture.Repository, "release-2.0.0"); - fixture.AssertFullSemver("2.0.0-beta.1+0", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+1", configuration); // Make some commits on release fixture.Repository.MakeCommits(10); - fixture.AssertFullSemver("2.0.0-beta.1+10", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+11", configuration); // Create feature from release fixture.BranchTo("feature/xxx"); @@ -518,9 +518,9 @@ public void FeatureFromReleaseBranchShouldNotResetCount() // Check version on release Commands.Checkout(fixture.Repository, "release-2.0.0"); - fixture.AssertFullSemver("2.0.0-beta.1+10", configuration); - fixture.Repository.MakeACommit("release 11"); fixture.AssertFullSemver("2.0.0-beta.1+11", configuration); + fixture.Repository.MakeACommit("release 11"); + fixture.AssertFullSemver("2.0.0-beta.1+12", configuration); // Make new commit on feature Commands.Checkout(fixture.Repository, "feature/xxx"); @@ -528,14 +528,14 @@ public void FeatureFromReleaseBranchShouldNotResetCount() // Checkout to release (no new commits) Commands.Checkout(fixture.Repository, "release-2.0.0"); - fixture.AssertFullSemver("2.0.0-beta.1+11", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+12", configuration); // Merge feature to release fixture.Repository.MergeNoFF("feature/xxx", Generate.SignatureNow()); - fixture.AssertFullSemver("2.0.0-beta.1+15", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+16", configuration); fixture.Repository.MakeACommit("release 13 - after feature merge"); - fixture.AssertFullSemver("2.0.0-beta.1+16", configuration); + fixture.AssertFullSemver("2.0.0-beta.1+17", configuration); } [Test] @@ -593,7 +593,7 @@ public void FeatureOnReleaseFeatureBranchDeleted() // begin the release branch fixture.Repository.CreateBranch(release450); Commands.Checkout(fixture.Repository, release450); - fixture.AssertFullSemver("4.5.0-beta.1+0", configuration); + fixture.AssertFullSemver("4.5.0-beta.1+1", configuration); fixture.Repository.CreateBranch(featureBranch); Commands.Checkout(fixture.Repository, featureBranch); @@ -602,7 +602,7 @@ public void FeatureOnReleaseFeatureBranchDeleted() fixture.Repository.MergeNoFF(featureBranch, Generate.SignatureNow()); // commit 2 fixture.Repository.Branches.Remove(featureBranch); - fixture.AssertFullSemver("4.5.0-beta.1+2", configuration); + fixture.AssertFullSemver("4.5.0-beta.1+3", configuration); } /// @@ -626,7 +626,7 @@ public void FeatureOnReleaseFeatureBranchNotDeleted() // begin the release branch fixture.Repository.CreateBranch(release450); Commands.Checkout(fixture.Repository, release450); - fixture.AssertFullSemver("4.5.0-beta.1+0", configuration); + fixture.AssertFullSemver("4.5.0-beta.1+1", configuration); fixture.Repository.CreateBranch(featureBranch); Commands.Checkout(fixture.Repository, featureBranch); @@ -634,7 +634,7 @@ public void FeatureOnReleaseFeatureBranchNotDeleted() Commands.Checkout(fixture.Repository, release450); fixture.Repository.MergeNoFF(featureBranch, Generate.SignatureNow()); // commit 2 - fixture.AssertFullSemver("4.5.0-beta.1+2", configuration); + fixture.AssertFullSemver("4.5.0-beta.1+3", configuration); } [TestCase("release/1.2.0", "1.2.0-beta.1+1", SemanticVersionFormat.Loose)] diff --git a/src/GitVersion.Core.Tests/IntegrationTests/RemoteRepositoryScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/RemoteRepositoryScenarios.cs index b41871e072..e81eb3c3a5 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/RemoteRepositoryScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/RemoteRepositoryScenarios.cs @@ -67,8 +67,8 @@ public void GivenARemoteGitRepositoryWithCommitsAndBranchesThenClonedLocalShould gitPreparer.Prepare(); - fixture.AssertFullSemver("1.0.0-beta.1+5"); - fixture.AssertFullSemver("1.0.0-beta.1+5", repository: fixture.LocalRepositoryFixture.Repository); + fixture.AssertFullSemver("1.0.0-beta.1+10"); + fixture.AssertFullSemver("1.0.0-beta.1+10", repository: fixture.LocalRepositoryFixture.Repository); } [Test] diff --git a/src/GitVersion.Core.Tests/IntegrationTests/SemVerOfAFeatureBranchStartedFromAReleaseBranchGetsDecrementedScenario.cs b/src/GitVersion.Core.Tests/IntegrationTests/SemVerOfAFeatureBranchStartedFromAReleaseBranchGetsDecrementedScenario.cs index 319acb8137..b150e366b6 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/SemVerOfAFeatureBranchStartedFromAReleaseBranchGetsDecrementedScenario.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/SemVerOfAFeatureBranchStartedFromAReleaseBranchGetsDecrementedScenario.cs @@ -19,13 +19,13 @@ public void ShouldPickUpReleaseVersionAfterCreatedFromRelease() fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.1.0-beta.1+1"); + fixture.AssertFullSemver("1.1.0-beta.1+2"); // Create a feature branch from the release/1.1.0 branch fixture.BranchTo("feature/test"); fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.1.0-test.1+2"); + fixture.AssertFullSemver("1.1.0-test.1+3"); } } diff --git a/src/GitVersion.Core.Tests/IntegrationTests/SupportBranchScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/SupportBranchScenarios.cs index 49f8f2bf73..284077f656 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/SupportBranchScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/SupportBranchScenarios.cs @@ -38,13 +38,13 @@ public void SupportIsCalculatedCorrectly() // Create 1.2.0 release Commands.Checkout(fixture.Repository, "support/1.0.0"); fixture.Repository.MergeNoFF("release/1.2.0"); - fixture.AssertFullSemver("1.2.0-0"); + fixture.AssertFullSemver("1.2.0-2"); fixture.Repository.ApplyTag("1.2.0"); // Create 1.2.1 hotfix fixture.BranchTo("hotfix/1.2.1"); fixture.MakeACommit(); - fixture.AssertFullSemver("1.2.1-beta.1+3"); + fixture.AssertFullSemver("1.2.1-beta.1+1"); fixture.Checkout("support/1.0.0"); fixture.MergeNoFF("hotfix/1.2.1"); fixture.AssertFullSemver("1.2.1-2"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/VersionInCurrentBranchNameScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/VersionInCurrentBranchNameScenarios.cs index 1f544b7099..cf67eefaeb 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/VersionInCurrentBranchNameScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/VersionInCurrentBranchNameScenarios.cs @@ -13,7 +13,7 @@ public void TakesVersionFromNameOfReleaseBranch() using var fixture = new BaseGitFlowRepositoryFixture("1.0.0"); fixture.BranchTo("release/2.0.0"); - fixture.AssertFullSemver("2.0.0-beta.1+0"); + fixture.AssertFullSemver("2.0.0-beta.1+1"); } [Test] @@ -48,7 +48,7 @@ public void TakesVersionFromNameOfRemoteReleaseBranchInOrigin() fixture.LocalRepositoryFixture.Checkout("origin/release/2.0.0"); - fixture.LocalRepositoryFixture.AssertFullSemver("2.0.0-beta.1+1"); + fixture.LocalRepositoryFixture.AssertFullSemver("2.0.0-beta.1+6"); } [Test] diff --git a/src/GitVersion.Core.Tests/IntegrationTests/VersionInMergedBranchNameScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/VersionInMergedBranchNameScenarios.cs index f1cefe017a..77fd5129a2 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/VersionInMergedBranchNameScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/VersionInMergedBranchNameScenarios.cs @@ -64,7 +64,7 @@ public void TakesVersionFromNameOfRemoteReleaseBranchInOrigin() fixture.LocalRepositoryFixture.MergeNoFF("origin/release/2.0.0"); - fixture.LocalRepositoryFixture.AssertFullSemver("2.0.0-0"); + fixture.LocalRepositoryFixture.AssertFullSemver("2.0.0-7"); } [Test] diff --git a/src/GitVersion.Core.Tests/IntegrationTests/VersionInTagScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/VersionInTagScenarios.cs index d78735900c..f03603c417 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/VersionInTagScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/VersionInTagScenarios.cs @@ -58,7 +58,7 @@ public void TagPreReleaseWeightIsConfigured_GitFlowReleaseIsFinished_WeightedPre fixture.MakeACommit("Feature commit 1"); fixture.BranchTo("release/1.1.0"); fixture.MakeACommit("Release commit 1"); - fixture.AssertFullSemver("1.1.0-beta.1+1", configuration); + fixture.AssertFullSemver("1.1.0-beta.1+3", configuration); fixture.Checkout("main"); fixture.MergeNoFF("release/1.1.0"); @@ -85,7 +85,7 @@ public void TagPreReleaseWeightIsNotConfigured_GitFlowReleaseIsFinished_Weighted fixture.MakeACommit("Feature commit 1"); fixture.BranchTo("release/1.1.0"); fixture.MakeACommit("Release commit 1"); - fixture.AssertFullSemver("1.1.0-beta.1+1", configuration); + fixture.AssertFullSemver("1.1.0-beta.1+3", configuration); fixture.Checkout("main"); fixture.MergeNoFF("release/1.1.0"); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs index b2b7c500a9..33fb2b9aef 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs @@ -68,25 +68,25 @@ public string GetVersionWithTrackMergeTargetOnDevelop(IncrementStrategy incremen return fixture!.GetVersion(trunkBased).FullSemVer; } - [TestCase(IncrementStrategy.None, IncrementStrategy.None, ExpectedResult = "0.0.0-alpha.1+2")] - [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, ExpectedResult = "0.0.1-alpha.1+2")] - [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, ExpectedResult = "0.1.0-alpha.1+2")] - [TestCase(IncrementStrategy.None, IncrementStrategy.Major, ExpectedResult = "1.0.0-alpha.1+2")] - - [TestCase(IncrementStrategy.Patch, IncrementStrategy.None, ExpectedResult = "0.0.0-alpha.1+2")] - [TestCase(IncrementStrategy.Patch, IncrementStrategy.Patch, ExpectedResult = "0.0.1-alpha.1+2")] - [TestCase(IncrementStrategy.Patch, IncrementStrategy.Minor, ExpectedResult = "0.1.0-alpha.1+2")] - [TestCase(IncrementStrategy.Patch, IncrementStrategy.Major, ExpectedResult = "1.0.0-alpha.1+2")] - - [TestCase(IncrementStrategy.Minor, IncrementStrategy.None, ExpectedResult = "0.0.0-alpha.1+2")] - [TestCase(IncrementStrategy.Minor, IncrementStrategy.Patch, ExpectedResult = "0.0.1-alpha.1+2")] - [TestCase(IncrementStrategy.Minor, IncrementStrategy.Minor, ExpectedResult = "0.1.0-alpha.1+2")] - [TestCase(IncrementStrategy.Minor, IncrementStrategy.Major, ExpectedResult = "1.0.0-alpha.1+2")] - - [TestCase(IncrementStrategy.Major, IncrementStrategy.None, ExpectedResult = "0.0.0-alpha.1+2")] - [TestCase(IncrementStrategy.Major, IncrementStrategy.Patch, ExpectedResult = "0.0.1-alpha.1+2")] - [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, ExpectedResult = "0.1.0-alpha.1+2")] - [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, ExpectedResult = "1.0.0-alpha.1+2")] + [TestCase(IncrementStrategy.None, IncrementStrategy.None, ExpectedResult = "0.0.0-alpha.1+1")] + [TestCase(IncrementStrategy.None, IncrementStrategy.Patch, ExpectedResult = "0.0.1-alpha.1+1")] + [TestCase(IncrementStrategy.None, IncrementStrategy.Minor, ExpectedResult = "0.1.0-alpha.1+1")] + [TestCase(IncrementStrategy.None, IncrementStrategy.Major, ExpectedResult = "1.0.0-alpha.1+1")] + + [TestCase(IncrementStrategy.Patch, IncrementStrategy.None, ExpectedResult = "0.0.1-alpha.1+1")] + [TestCase(IncrementStrategy.Patch, IncrementStrategy.Patch, ExpectedResult = "0.0.2-alpha.1+1")] + [TestCase(IncrementStrategy.Patch, IncrementStrategy.Minor, ExpectedResult = "0.1.0-alpha.1+1")] + [TestCase(IncrementStrategy.Patch, IncrementStrategy.Major, ExpectedResult = "1.0.0-alpha.1+1")] + + [TestCase(IncrementStrategy.Minor, IncrementStrategy.None, ExpectedResult = "0.1.0-alpha.1+1")] + [TestCase(IncrementStrategy.Minor, IncrementStrategy.Patch, ExpectedResult = "0.1.1-alpha.1+1")] + [TestCase(IncrementStrategy.Minor, IncrementStrategy.Minor, ExpectedResult = "0.2.0-alpha.1+1")] + [TestCase(IncrementStrategy.Minor, IncrementStrategy.Major, ExpectedResult = "1.0.0-alpha.1+1")] + + [TestCase(IncrementStrategy.Major, IncrementStrategy.None, ExpectedResult = "1.0.0-alpha.1+1")] + [TestCase(IncrementStrategy.Major, IncrementStrategy.Patch, ExpectedResult = "1.0.1-alpha.1+1")] + [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, ExpectedResult = "1.1.0-alpha.1+1")] + [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, ExpectedResult = "2.0.0-alpha.1+1")] public string GetVersionWithNoTrackMergeTargetOnDevelop(IncrementStrategy incrementOnMain, IncrementStrategy increment) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs index 6445d464cc..d5459cdbbf 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New.WithLabel(null) .WithVersionStrategy(VersionStrategies.TrunkBased) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs index 8a794e8616..30f8101bd8 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithAMergeCommitFromMainWhen private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New.WithLabel(null) .WithVersionStrategy(VersionStrategies.TrunkBased) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs index 99346fb127..e96310cd18 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhen private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs index 79613c831f..193cc5aed3 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpM private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs index 356e1c3021..aaeaa2b476 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpM private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs index c23a133f91..969aaed852 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpM private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs index db029d830d..62e32e28ff 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAs private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs index 2197f87b0b..7236aacf6d 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAs private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs index ea7747aa59..f650c0a6cc 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAs private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs index 9f3fd4fca8..0c92efc643 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAs private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs index a43ab72ee2..009b6215d1 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpM private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs index c097da8bf1..14d9c2ccdd 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpM private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs index 7e03c0029a..5f0767ae1a 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpM private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs index b0dc36582c..6013c955d6 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAs private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs index cf6bf5def1..138761ab33 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAs private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs index 88f4b0c92e..39f9620be2 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAs private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs index 12ea448041..88ff5cce5f 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAs private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() @@ -231,13 +233,12 @@ public string GetVersionWithNoLabelOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Patch, "{BranchName}", ExpectedResult = "0.0.1-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithNoLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; @@ -440,13 +441,12 @@ public string GetVersionWithEmptyLabelOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Patch, "{BranchName}", ExpectedResult = "0.0.1-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithEmptyLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; @@ -649,13 +649,12 @@ public string GetVersionWithLabelFooOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Patch, "{BranchName}", ExpectedResult = "0.0.1-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithLabelFooAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; @@ -858,13 +857,12 @@ public string GetVersionWithLabelBarOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Patch, "{BranchName}", ExpectedResult = "0.0.1-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithLabelBarAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs index 8b7808d63f..9b6b561af9 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitMergedToMainWhen private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs index d7c028d45c..92fbe59dc1 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreR private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs index 8711eaea64..20c386ca0c 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreR private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs index 8ccdca3a5c..1527f08305 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreR private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs index 318456a731..5a353777d3 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStab private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs index d66ed5eea3..f229797b48 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedTo private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs index d1b5c57edc..8f8ef2bbfc 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs @@ -14,7 +14,7 @@ public class GivenAFeatureBranchWithOneCommitWhen private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs index c6ba38b315..d12165d239 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs @@ -14,7 +14,7 @@ public class GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs index aad3baade1..3f84dc2f66 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs @@ -14,7 +14,7 @@ public class GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs index 79badbe5df..9a876cf5f0 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs @@ -14,7 +14,7 @@ public class GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs index 4040ad96dd..9842379241 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs @@ -14,7 +14,9 @@ public class GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() @@ -80,8 +82,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs index 156234a55a..5abbaf3580 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs @@ -14,7 +14,9 @@ public class GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() @@ -80,8 +82,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs index ea3a375d5f..9fae774544 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs @@ -14,7 +14,9 @@ public class GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() @@ -80,8 +82,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs index a75ab7755e..fb3d3dac19 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs @@ -14,7 +14,9 @@ public class GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() @@ -80,8 +82,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs index fad5196b3a..67b15775fa 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs index 18060a587a..772986b48c 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithThreeCommitsMergedToMainWhen private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs index 27ba0c4a96..97c751018b 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs @@ -14,7 +14,9 @@ public class GivenAFeatureBranchWithThreeCommitsWhen private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs index d734f91b1b..c0b100c769 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs index 96ff7c1d99..101414163d 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs @@ -15,7 +15,9 @@ public class GivenAFeatureBranchWithTwoCommitsMergedToMainWhen private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs index 5ca91c660d..b8bea24527 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs @@ -14,7 +14,9 @@ public class GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs index 9712a5cc7e..50ccd86281 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs @@ -14,7 +14,9 @@ public class GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseB private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs index 8001fbe161..67d7c20c26 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs @@ -14,7 +14,9 @@ public class GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseF private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs index dd13044296..89bf9b3e06 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs @@ -15,7 +15,9 @@ public class GivenAMainBranchWithOneCommitBranchedToFeatureWhen private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs index 342e335655..d8156e59d0 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs @@ -15,7 +15,9 @@ public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMess private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs index a8bc27b841..4019639f51 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs @@ -15,7 +15,9 @@ public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMess private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs index 1b53dcd4e1..62e5d6ff53 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs @@ -15,7 +15,9 @@ public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMess private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs index cf22d83b58..a50c1a162b 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs @@ -15,7 +15,9 @@ public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPre private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() @@ -248,13 +250,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] - public string GetVersionWithNoLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; @@ -476,13 +477,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] - public string GetVersionWithEmptyLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; @@ -704,13 +704,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] - public string GetVersionWithLabelFooAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; @@ -932,13 +931,12 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] - public string GetVersionWithLabelBarAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs index d6b5e15637..25b6ad9987 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs @@ -15,7 +15,9 @@ public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPre private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() @@ -248,13 +250,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] - public string GetVersionWithNoLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; @@ -476,13 +477,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] - public string GetVersionWithEmptyLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; @@ -704,13 +704,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] - public string GetVersionWithLabelFooAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; @@ -932,13 +931,12 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "1.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] - public string GetVersionWithLabelBarAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs index 883c900658..f663364bc2 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs @@ -15,7 +15,9 @@ public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPre private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() @@ -248,13 +250,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithNoLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; @@ -476,13 +477,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithEmptyLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; @@ -704,13 +704,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithLabelFooAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; @@ -932,13 +931,12 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithLabelBarAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs index a46910e703..ecef9b1c3d 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs @@ -15,7 +15,9 @@ public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsSta private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() @@ -248,13 +250,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithNoLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; @@ -476,13 +477,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithEmptyLabelAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; @@ -704,13 +704,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithLabelFooAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; @@ -932,13 +931,12 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+0")] - public string GetVersionWithLabelBarAndPreventIncrementWhenCurrentCommitTaggedFalseOnMain( + public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration trunkBased = TrunkBasedBuilder - .WithPreventIncrementWhenCurrentCommitTagged(false) .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(trunkBased).FullSemVer; diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs index 47f2826def..daa7518428 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs @@ -15,7 +15,9 @@ public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs index cae332c393..f00c2d00ee 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs @@ -15,7 +15,9 @@ public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBu private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs index 5e13f68ce1..53ddc84c9e 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs @@ -15,7 +15,9 @@ public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBu private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs index 6c806e5549..44eb2c83a2 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs @@ -15,7 +15,9 @@ public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBu private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs index de3cb67f98..47ce985b4f 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs @@ -15,7 +15,9 @@ public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTagge private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs index cf89dbbf1f..5077a32f32 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs @@ -15,7 +15,9 @@ public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTagge private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs index 21aa63002b..c398abf1be 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs @@ -15,7 +15,9 @@ public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTagge private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs index 92fb7f6e77..5f93545dc7 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs @@ -15,7 +15,9 @@ public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTagge private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment).WithIsMainBranch(false)); + .WithBranch("feature", _ => _ + .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) + ); [OneTimeSetUp] public void OneTimeSetUp() diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs index 6db3b80029..5aa0122b0c 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs @@ -42,12 +42,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Minor, "", ExpectedResult = "0.2.0-4")] [TestCase(IncrementStrategy.Major, "", ExpectedResult = "0.2.0-4")] - [TestCase(IncrementStrategy.None, "foo", ExpectedResult = "0.2.0-foo.2+1")] + [TestCase(IncrementStrategy.None, "foo", ExpectedResult = "0.2.0-foo.1+1")] [TestCase(IncrementStrategy.Patch, "foo", ExpectedResult = "0.2.0-foo.1+1")] [TestCase(IncrementStrategy.Minor, "foo", ExpectedResult = "0.2.0-foo.1+1")] [TestCase(IncrementStrategy.Major, "foo", ExpectedResult = "2.0.0-foo.1+1")] - [TestCase(IncrementStrategy.None, "bar", ExpectedResult = "0.2.0-bar.2+1")] + [TestCase(IncrementStrategy.None, "bar", ExpectedResult = "0.2.0-bar.1+1")] [TestCase(IncrementStrategy.Patch, "bar", ExpectedResult = "0.2.0-bar.1+1")] [TestCase(IncrementStrategy.Minor, "bar", ExpectedResult = "0.2.0-bar.1+1")] [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs index d561e33b67..15e7652db3 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs @@ -37,12 +37,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Minor, null, ExpectedResult = "0.2.0-bar")] [TestCase(IncrementStrategy.Major, null, ExpectedResult = "0.2.0-bar")] - [TestCase(IncrementStrategy.None, "", ExpectedResult = "0.2.0-2+1")] + [TestCase(IncrementStrategy.None, "", ExpectedResult = "0.2.0-1+1")] [TestCase(IncrementStrategy.Patch, "", ExpectedResult = "0.2.0-1+1")] [TestCase(IncrementStrategy.Minor, "", ExpectedResult = "0.2.0-1+1")] [TestCase(IncrementStrategy.Major, "", ExpectedResult = "2.0.0-1+1")] - [TestCase(IncrementStrategy.None, "foo", ExpectedResult = "0.2.0-foo.2+1")] + [TestCase(IncrementStrategy.None, "foo", ExpectedResult = "0.2.0-foo.1+1")] [TestCase(IncrementStrategy.Patch, "foo", ExpectedResult = "0.2.0-foo.1+1")] [TestCase(IncrementStrategy.Minor, "foo", ExpectedResult = "0.2.0-foo.1+1")] [TestCase(IncrementStrategy.Major, "foo", ExpectedResult = "2.0.0-foo.1+1")] diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs index 13e4d8f0fb..be2b625fb9 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs @@ -37,7 +37,7 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Minor, null, ExpectedResult = "0.2.0-foo.4")] [TestCase(IncrementStrategy.Major, null, ExpectedResult = "0.2.0-foo.4")] - [TestCase(IncrementStrategy.None, "", ExpectedResult = "0.2.0-2+1")] + [TestCase(IncrementStrategy.None, "", ExpectedResult = "0.2.0-1+1")] [TestCase(IncrementStrategy.Patch, "", ExpectedResult = "0.2.0-1+1")] [TestCase(IncrementStrategy.Minor, "", ExpectedResult = "0.2.0-1+1")] [TestCase(IncrementStrategy.Major, "", ExpectedResult = "2.0.0-1+1")] @@ -47,7 +47,7 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Minor, "foo", ExpectedResult = "0.2.0-foo.4")] [TestCase(IncrementStrategy.Major, "foo", ExpectedResult = "0.2.0-foo.4")] - [TestCase(IncrementStrategy.None, "bar", ExpectedResult = "0.2.0-bar.2+1")] + [TestCase(IncrementStrategy.None, "bar", ExpectedResult = "0.2.0-bar.1+1")] [TestCase(IncrementStrategy.Patch, "bar", ExpectedResult = "0.2.0-bar.1+1")] [TestCase(IncrementStrategy.Minor, "bar", ExpectedResult = "0.2.0-bar.1+1")] [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] diff --git a/src/GitVersion.Core/Configuration/EffectiveConfiguration.cs b/src/GitVersion.Core/Configuration/EffectiveConfiguration.cs index 9505fb4383..9708f95329 100644 --- a/src/GitVersion.Core/Configuration/EffectiveConfiguration.cs +++ b/src/GitVersion.Core/Configuration/EffectiveConfiguration.cs @@ -10,13 +10,21 @@ namespace GitVersion.Configuration; /// public record EffectiveConfiguration { - public EffectiveConfiguration(IGitVersionConfiguration configuration, IBranchConfiguration branchConfiguration) + public EffectiveConfiguration(IGitVersionConfiguration configuration, IBranchConfiguration branchConfiguration, + EffectiveConfiguration? fallbackConfiguration = null) { configuration.NotNull(); branchConfiguration.NotNull(); - var fallbackBranchConfiguration = configuration.GetFallbackBranchConfiguration(); - branchConfiguration = branchConfiguration.Inherit(fallbackBranchConfiguration); + if (fallbackConfiguration is null) + { + var fallbackBranchConfiguration = configuration.GetFallbackBranchConfiguration(); + branchConfiguration = branchConfiguration.Inherit(fallbackBranchConfiguration); + } + else + { + branchConfiguration = branchConfiguration.Inherit(fallbackConfiguration); + } if (!branchConfiguration.DeploymentMode.HasValue) throw new("Configuration value for 'Deployment mode' has no value. (this should not happen, please report an issue)"); diff --git a/src/GitVersion.Core/Configuration/IBranchConfiguration.cs b/src/GitVersion.Core/Configuration/IBranchConfiguration.cs index 0d1bb62da8..52d05a612f 100644 --- a/src/GitVersion.Core/Configuration/IBranchConfiguration.cs +++ b/src/GitVersion.Core/Configuration/IBranchConfiguration.cs @@ -26,6 +26,10 @@ public interface IBranchConfiguration public bool IsMatch(string branchName) => RegularExpression != null && Regex.IsMatch(branchName, RegularExpression, RegexOptions.IgnoreCase); + IReadOnlyCollection SourceBranches { get; } + + IReadOnlyCollection IsSourceBranchFor { get; } + bool? TracksReleaseBranches { get; } bool? IsReleaseBranch { get; } @@ -34,9 +38,7 @@ public bool IsMatch(string branchName) int? PreReleaseWeight { get; } - IReadOnlyCollection SourceBranches { get; } - - IReadOnlyCollection IsSourceBranchFor { get; } - IBranchConfiguration Inherit(IBranchConfiguration configuration); + + IBranchConfiguration Inherit(EffectiveConfiguration configuration); } diff --git a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs index 9c5bb4ffec..f580c31840 100644 --- a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs +++ b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs @@ -8,16 +8,23 @@ namespace GitVersion.Configuration; internal static class ConfigurationExtensions { - public static EffectiveBranchConfiguration GetEffectiveBranchConfiguration(this IGitVersionConfiguration configuration, IBranch branch) + public static EffectiveBranchConfiguration GetEffectiveBranchConfiguration( + this IGitVersionConfiguration configuration, IBranch branch, EffectiveConfiguration? parentConfiguration = null) { - var effectiveConfiguration = GetEffectiveConfiguration(configuration, branch.Name); - return new(effectiveConfiguration, branch); + var effectiveConfiguration = GetEffectiveConfiguration(configuration, branch.Name, parentConfiguration); + return new EffectiveBranchConfiguration(effectiveConfiguration, branch); } - public static EffectiveConfiguration GetEffectiveConfiguration(this IGitVersionConfiguration configuration, ReferenceName branchName) + public static EffectiveConfiguration GetEffectiveConfiguration( + this IGitVersionConfiguration configuration, ReferenceName branchName, EffectiveConfiguration? parentConfiguration = null) { var branchConfiguration = configuration.GetBranchConfiguration(branchName); - return new(configuration, branchConfiguration); + EffectiveConfiguration? fallbackConfiguration = null; + if (branchConfiguration.Increment == IncrementStrategy.Inherit) + { + fallbackConfiguration = parentConfiguration; + } + return new EffectiveConfiguration(configuration, branchConfiguration, fallbackConfiguration); } public static IBranchConfiguration GetBranchConfiguration(this IGitVersionConfiguration configuration, IBranch branch) diff --git a/src/GitVersion.Core/Git/ReferenceName.cs b/src/GitVersion.Core/Git/ReferenceName.cs index 630511dda2..4606610a05 100644 --- a/src/GitVersion.Core/Git/ReferenceName.cs +++ b/src/GitVersion.Core/Git/ReferenceName.cs @@ -1,5 +1,6 @@ using System.Diagnostics.CodeAnalysis; using System.Text.RegularExpressions; +using GitVersion.Configuration; using GitVersion.Extensions; using GitVersion.Helpers; @@ -77,6 +78,12 @@ public static ReferenceName FromBranchName(string branchName) public override int GetHashCode() => equalityHelper.GetHashCode(this); public override string ToString() => Friendly; + public bool TryGetSemanticVersion([NotNullWhen(true)] out (SemanticVersion Value, string? Name) result, IGitVersionConfiguration configuration) + => TryGetSemanticVersion(out result, configuration.VersionInBranchRegex, configuration.TagPrefix, configuration.SemanticVersionFormat); + + public bool TryGetSemanticVersion([NotNullWhen(true)] out (SemanticVersion Value, string? Name) result, EffectiveConfiguration configuration) + => TryGetSemanticVersion(out result, configuration.VersionInBranchRegex, configuration.TagPrefix, configuration.SemanticVersionFormat); + public bool TryGetSemanticVersion([NotNullWhen(true)] out (SemanticVersion Value, string? Name) result, Regex versionPatternRegex, string? tagPrefix, diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index b5b8f6ba18..3ddd9b1b99 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -61,7 +61,7 @@ GitVersion.Configuration.EffectiveConfiguration.AssemblyInformationalFormat.get GitVersion.Configuration.EffectiveConfiguration.AssemblyVersioningFormat.get -> string? GitVersion.Configuration.EffectiveConfiguration.AssemblyVersioningScheme.get -> GitVersion.Configuration.AssemblyVersioningScheme GitVersion.Configuration.EffectiveConfiguration.DeploymentMode.get -> GitVersion.VersionCalculation.DeploymentMode -GitVersion.Configuration.EffectiveConfiguration.EffectiveConfiguration(GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.Configuration.IBranchConfiguration! branchConfiguration) -> void +GitVersion.Configuration.EffectiveConfiguration.EffectiveConfiguration(GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.Configuration.IBranchConfiguration! branchConfiguration, GitVersion.Configuration.EffectiveConfiguration? fallbackConfiguration = null) -> void GitVersion.Configuration.EffectiveConfiguration.Ignore.get -> GitVersion.Configuration.IIgnoreConfiguration! GitVersion.Configuration.EffectiveConfiguration.PreventIncrementOfMergedBranch.get -> bool GitVersion.Configuration.EffectiveConfiguration.PreventIncrementWhenBranchMerged.get -> bool @@ -94,6 +94,7 @@ GitVersion.Configuration.IBranchConfiguration GitVersion.Configuration.IBranchConfiguration.CommitMessageIncrementing.get -> GitVersion.VersionCalculation.CommitMessageIncrementMode? GitVersion.Configuration.IBranchConfiguration.DeploymentMode.get -> GitVersion.VersionCalculation.DeploymentMode? GitVersion.Configuration.IBranchConfiguration.Increment.get -> GitVersion.IncrementStrategy +GitVersion.Configuration.IBranchConfiguration.Inherit(GitVersion.Configuration.EffectiveConfiguration! configuration) -> GitVersion.Configuration.IBranchConfiguration! GitVersion.Configuration.IBranchConfiguration.Inherit(GitVersion.Configuration.IBranchConfiguration! configuration) -> GitVersion.Configuration.IBranchConfiguration! GitVersion.Configuration.IBranchConfiguration.IsMainBranch.get -> bool? GitVersion.Configuration.IBranchConfiguration.IsMatch(string! branchName) -> bool @@ -284,6 +285,8 @@ GitVersion.Git.ReferenceName.IsPullRequest.get -> bool GitVersion.Git.ReferenceName.IsRemoteBranch.get -> bool GitVersion.Git.ReferenceName.IsTag.get -> bool GitVersion.Git.ReferenceName.ReferenceName(string! canonical) -> void +GitVersion.Git.ReferenceName.TryGetSemanticVersion(out (GitVersion.SemanticVersion! Value, string? Name) result, GitVersion.Configuration.EffectiveConfiguration! configuration) -> bool +GitVersion.Git.ReferenceName.TryGetSemanticVersion(out (GitVersion.SemanticVersion! Value, string? Name) result, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> bool GitVersion.Git.ReferenceName.TryGetSemanticVersion(out (GitVersion.SemanticVersion! Value, string? Name) result, System.Text.RegularExpressions.Regex! versionPatternRegex, string? tagPrefix, GitVersion.SemanticVersionFormat format) -> bool GitVersion.Git.ReferenceName.WithoutOrigin.get -> string! GitVersion.Git.RefSpecDirection @@ -499,9 +502,9 @@ GitVersion.SemanticVersion.BuildMetaData.init -> void GitVersion.SemanticVersion.CompareTo(GitVersion.SemanticVersion? value) -> int GitVersion.SemanticVersion.CompareTo(GitVersion.SemanticVersion? value, bool includePreRelease) -> int GitVersion.SemanticVersion.Equals(GitVersion.SemanticVersion? obj) -> bool -GitVersion.SemanticVersion.Increment(GitVersion.VersionField increment, string? label) -> GitVersion.SemanticVersion! -GitVersion.SemanticVersion.Increment(GitVersion.VersionField increment, string? label, bool forceIncrement) -> GitVersion.SemanticVersion! -GitVersion.SemanticVersion.Increment(GitVersion.VersionField increment, string? label, GitVersion.SemanticVersion.IncrementMode mode) -> GitVersion.SemanticVersion! +GitVersion.SemanticVersion.Increment(GitVersion.VersionField increment, string? label, bool forceIncrement, params GitVersion.SemanticVersion?[]! alternativeSemanticVersions) -> GitVersion.SemanticVersion! +GitVersion.SemanticVersion.Increment(GitVersion.VersionField increment, string? label, GitVersion.SemanticVersion.IncrementMode mode, params GitVersion.SemanticVersion?[]! alternativeSemanticVersions) -> GitVersion.SemanticVersion! +GitVersion.SemanticVersion.Increment(GitVersion.VersionField increment, string? label, params GitVersion.SemanticVersion?[]! alternativeSemanticVersions) -> GitVersion.SemanticVersion! GitVersion.SemanticVersion.IncrementMode GitVersion.SemanticVersion.IncrementMode.EnsureIntegrity = 2 -> GitVersion.SemanticVersion.IncrementMode GitVersion.SemanticVersion.IncrementMode.Force = 1 -> GitVersion.SemanticVersion.IncrementMode @@ -527,6 +530,7 @@ GitVersion.SemanticVersion.SemanticVersion(GitVersion.SemanticVersion! semanticV GitVersion.SemanticVersion.SemanticVersion(long major = 0, long minor = 0, long patch = 0) -> void GitVersion.SemanticVersion.ToString(string! format) -> string! GitVersion.SemanticVersion.ToString(string? format, System.IFormatProvider? formatProvider) -> string! +GitVersion.SemanticVersion.WithLabel(string? label) -> GitVersion.SemanticVersion! GitVersion.SemanticVersionBuildMetaData GitVersion.SemanticVersionBuildMetaData.Branch.get -> string? GitVersion.SemanticVersionBuildMetaData.Branch.init -> void @@ -670,7 +674,7 @@ GitVersion.VersionCalculation.IEffectiveBranchConfigurationFinder GitVersion.VersionCalculation.IEffectiveBranchConfigurationFinder.GetConfigurations(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> System.Collections.Generic.IEnumerable! GitVersion.VersionCalculation.IIncrementStrategyFinder GitVersion.VersionCalculation.IIncrementStrategyFinder.DetermineIncrementedField(GitVersion.Git.ICommit! currentCommit, GitVersion.Git.ICommit? baseVersionSource, bool shouldIncrement, GitVersion.Configuration.EffectiveConfiguration! configuration, string? label) -> GitVersion.VersionField -GitVersion.VersionCalculation.IIncrementStrategyFinder.GetIncrementForcedByCommit(GitVersion.Git.ICommit! commit, GitVersion.Configuration.EffectiveConfiguration! configuration) -> GitVersion.VersionField +GitVersion.VersionCalculation.IIncrementStrategyFinder.GetIncrementForcedByCommit(GitVersion.Git.ICommit! commit, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> GitVersion.VersionField GitVersion.VersionCalculation.IIncrementStrategyFinder.GetIncrementForCommits(string? majorVersionBumpMessage, string? minorVersionBumpMessage, string? patchVersionBumpMessage, string? noBumpMessage, GitVersion.Git.ICommit![]! commits) -> GitVersion.VersionField? GitVersion.VersionCalculation.IIncrementStrategyFinder.GetMergedCommits(GitVersion.Git.ICommit! mergeCommit, int index, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> System.Collections.Generic.IEnumerable! GitVersion.VersionCalculation.INextVersionCalculator @@ -732,6 +736,8 @@ override GitVersion.SemanticVersionPreReleaseTag.GetHashCode() -> int override GitVersion.SemanticVersionPreReleaseTag.ToString() -> string! override GitVersion.SemanticVersionWithTag.ToString() -> string! override GitVersion.VersionCalculation.BaseVersion.ToString() -> string! +override GitVersion.VersionCalculation.BaseVersionOperand.ToString() -> string! +override GitVersion.VersionCalculation.BaseVersionOperator.ToString() -> string! override GitVersion.VersionCalculation.NextVersion.Equals(object? other) -> bool override GitVersion.VersionCalculation.NextVersion.GetHashCode() -> int override GitVersion.VersionCalculation.NextVersion.ToString() -> string! diff --git a/src/GitVersion.Core/SemVer/SemanticVersion.cs b/src/GitVersion.Core/SemVer/SemanticVersion.cs index d889176b15..130d21d72e 100644 --- a/src/GitVersion.Core/SemVer/SemanticVersion.cs +++ b/src/GitVersion.Core/SemVer/SemanticVersion.cs @@ -62,7 +62,11 @@ public bool Equals(SemanticVersion? obj) { return false; } - return this.Major == obj.Major && this.Minor == obj.Minor && this.Patch == obj.Patch && this.PreReleaseTag == obj.PreReleaseTag && this.BuildMetaData == obj.BuildMetaData; + return this.Major == obj.Major + && this.Minor == obj.Minor + && this.Patch == obj.Patch + && this.PreReleaseTag == obj.PreReleaseTag + && this.BuildMetaData == obj.BuildMetaData; } public bool IsEmpty() => Equals(Empty); @@ -329,13 +333,18 @@ public string ToString(string? format, IFormatProvider? formatProvider) } } - public SemanticVersion Increment(VersionField increment, string? label) - => Increment(increment, label, mode: IncrementMode.Standard); + public SemanticVersion WithLabel(string? label) => Increment(VersionField.None, label, mode: IncrementMode.Standard); - public SemanticVersion Increment(VersionField increment, string? label, bool forceIncrement) - => Increment(increment, label, mode: forceIncrement ? IncrementMode.Force : IncrementMode.Standard); + public SemanticVersion Increment( + VersionField increment, string? label, params SemanticVersion?[] alternativeSemanticVersions) + => Increment(increment, label, mode: IncrementMode.Standard, alternativeSemanticVersions); - public SemanticVersion Increment(VersionField increment, string? label, IncrementMode mode) + public SemanticVersion Increment( + VersionField increment, string? label, bool forceIncrement, params SemanticVersion?[] alternativeSemanticVersions) + => Increment(increment, label, mode: forceIncrement ? IncrementMode.Force : IncrementMode.Standard, alternativeSemanticVersions); + + public SemanticVersion Increment( + VersionField increment, string? label, IncrementMode mode, params SemanticVersion?[] alternativeSemanticVersions) { long major = Major; long minor = Minor; @@ -396,6 +405,27 @@ public SemanticVersion Increment(VersionField increment, string? label, Incremen throw new ArgumentOutOfRangeException(nameof(increment)); } + SemanticVersion semanticVersion = new(major, minor, patch); + + bool foundAlternativeSemanticVersion = false; + foreach (var alternativeSemanticVersion in alternativeSemanticVersions) + { + if (semanticVersion.IsLessThan(alternativeSemanticVersion, includePreRelease: false)) + { + semanticVersion = alternativeSemanticVersion!; + foundAlternativeSemanticVersion = true; + } + } + + major = semanticVersion.Major; + minor = semanticVersion.Minor; + patch = semanticVersion.Patch; + + if (foundAlternativeSemanticVersion && increment == VersionField.None) + { + preReleaseNumber = 1; + } + string preReleaseTagName; if (hasPreReleaseTag) { @@ -418,7 +448,7 @@ public SemanticVersion Increment(VersionField increment, string? label, Incremen Major = major, Minor = minor, Patch = patch, - PreReleaseTag = new(preReleaseTagName, preReleaseNumber, true) + PreReleaseTag = new SemanticVersionPreReleaseTag(preReleaseTagName, preReleaseNumber, true) }; } diff --git a/src/GitVersion.Core/VersionCalculation/Abstractions/IIncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/Abstractions/IIncrementStrategyFinder.cs index 2c34ed344a..5bd1ce41eb 100644 --- a/src/GitVersion.Core/VersionCalculation/Abstractions/IIncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/Abstractions/IIncrementStrategyFinder.cs @@ -15,5 +15,5 @@ ICommit[] commits IEnumerable GetMergedCommits(ICommit mergeCommit, int index, IIgnoreConfiguration ignore); - VersionField GetIncrementForcedByCommit(ICommit commit, EffectiveConfiguration configuration); + VersionField GetIncrementForcedByCommit(ICommit commit, IGitVersionConfiguration configuration); } diff --git a/src/GitVersion.Core/VersionCalculation/EffectiveBranchConfigurationFinder.cs b/src/GitVersion.Core/VersionCalculation/EffectiveBranchConfigurationFinder.cs index 561ddf7b80..95b7ab6703 100644 --- a/src/GitVersion.Core/VersionCalculation/EffectiveBranchConfigurationFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/EffectiveBranchConfigurationFinder.cs @@ -6,12 +6,12 @@ namespace GitVersion.VersionCalculation; -internal class EffectiveBranchConfigurationFinder(ILog log, IRepositoryStore repositoryStore) : IEffectiveBranchConfigurationFinder +internal sealed class EffectiveBranchConfigurationFinder(ILog log, IRepositoryStore repositoryStore) : IEffectiveBranchConfigurationFinder { private readonly ILog log = log.NotNull(); private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); - public virtual IEnumerable GetConfigurations(IBranch branch, IGitVersionConfiguration configuration) + public IEnumerable GetConfigurations(IBranch branch, IGitVersionConfiguration configuration) { branch.NotNull(); configuration.NotNull(); diff --git a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs index c22d218a5f..c48e070785 100644 --- a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs @@ -237,7 +237,7 @@ private static ICommit GetMergedHead(ICommit mergeCommit) return parents.Single(); } - public VersionField GetIncrementForcedByCommit(ICommit commit, EffectiveConfiguration configuration) + public VersionField GetIncrementForcedByCommit(ICommit commit, IGitVersionConfiguration configuration) { commit.NotNull(); configuration.NotNull(); diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichIncrement.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichIncrement.cs index d22b319014..3f9b5992fb 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichIncrement.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichIncrement.cs @@ -1,5 +1,7 @@ +using System.ComponentModel; using GitVersion.Configuration; using GitVersion.Extensions; +using GitVersion.Git; namespace GitVersion.VersionCalculation.TrunkBased; @@ -7,16 +9,38 @@ internal sealed class EnrichIncrement : ITrunkBasedContextPreEnricher { public void Enrich(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { - var incrementForcedByBranch = commit.GetIncrementForcedByBranch(); - var incrementForcedByCommit = commit.Increment; + var effectiveConfiguration = commit.GetEffectiveConfiguration(context.Configuration); + var incrementForcedByBranch = effectiveConfiguration.Increment.ToVersionField(); + var incrementForcedByCommit = GetIncrementForcedByCommit(context, commit.Value, effectiveConfiguration); + commit.Increment = incrementForcedByCommit; context.Increment = context.Increment.Consolidate(incrementForcedByBranch, incrementForcedByCommit); if (commit.Predecessor is not null && commit.Predecessor.BranchName != commit.BranchName) context.Label = null; - context.Label ??= commit.Configuration.GetBranchSpecificLabel(commit.BranchName, null); + context.Label ??= effectiveConfiguration.GetBranchSpecificLabel(commit.BranchName, null); - if (commit.Configuration.IsMainBranch) + if (effectiveConfiguration.IsMainBranch) context.BaseVersionSource = commit.Predecessor?.Value; - context.ForceIncrement |= commit.Configuration.IsMainBranch || commit.IsPredecessorTheLastCommitOnTrunk; + context.ForceIncrement |= effectiveConfiguration.IsMainBranch || commit.IsPredecessorTheLastCommitOnTrunk(context.Configuration); + } + + private static VersionField GetIncrementForcedByCommit( + TrunkBasedContext context, ICommit commit, EffectiveConfiguration configuration) + { + context.NotNull(); + commit.NotNull(); + configuration.NotNull(); + + return configuration.CommitMessageIncrementing switch + { + CommitMessageIncrementMode.Enabled + => context.IncrementStrategyFinder.GetIncrementForcedByCommit(commit, context.Configuration), + CommitMessageIncrementMode.Disabled => VersionField.None, + CommitMessageIncrementMode.MergeMessageOnly => commit.IsMergeCommit() + ? context.IncrementStrategyFinder.GetIncrementForcedByCommit(commit, context.Configuration) : VersionField.None, + _ => throw new InvalidEnumArgumentException( + nameof(configuration.CommitMessageIncrementing), (int)configuration.CommitMessageIncrementing, typeof(CommitMessageIncrementMode) + ) + }; } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichSemanticVersion.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichSemanticVersion.cs index 55a3c58213..41c0af40e0 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichSemanticVersion.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichSemanticVersion.cs @@ -8,8 +8,10 @@ internal sealed class EnrichSemanticVersion : ITrunkBasedContextPreEnricher public void Enrich(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { var branchSpecificLabel = context.TargetLabel; - branchSpecificLabel ??= iteration.Configuration.GetBranchSpecificLabel(commit.BranchName, null); - branchSpecificLabel ??= commit.Configuration.GetBranchSpecificLabel(commit.BranchName, null); + branchSpecificLabel ??= iteration.GetEffectiveConfiguration(context.Configuration) + .GetBranchSpecificLabel(commit.BranchName, null); + branchSpecificLabel ??= commit.GetEffectiveConfiguration(context.Configuration) + .GetBranchSpecificLabel(commit.BranchName, null); var semanticVersions = commit.SemanticVersions.Where( element => element.IsMatchForBranchSpecificLabel(branchSpecificLabel) diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs index ea937bec17..bd1ac19de9 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs @@ -11,14 +11,17 @@ internal sealed class CommitOnNonTrunk : ITrunkBasedIncrementer // A 58 minutes ago public bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => commit is { HasChildIteration: false, Configuration.IsMainBranch: false } && context.SemanticVersion is null; + => !commit.HasChildIteration && !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch + && context.SemanticVersion is null; public IEnumerable GetIncrements( TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { if (commit.Predecessor is not null && commit.Predecessor.BranchName != commit.BranchName) context.Label = null; - context.Label ??= commit.Configuration.GetBranchSpecificLabel(commit.BranchName, null); + + var effectiveConfiguration = commit.GetEffectiveConfiguration(context.Configuration); + context.Label ??= effectiveConfiguration.GetBranchSpecificLabel(commit.BranchName, null); if (commit.Successor is null) { @@ -33,6 +36,7 @@ public IEnumerable GetIncrements( }; context.BaseVersionSource = commit.Value; + context.ForceIncrement = false; } } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs index 076ce28c5a..e2eac0a217 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs @@ -6,7 +6,7 @@ namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; internal abstract class CommitOnNonTrunkBranchedBase : ITrunkBasedIncrementer { public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => !commit.Configuration.IsMainBranch && commit.BranchName != iteration.BranchName && commit.Successor is null; + => !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && commit.BranchName != iteration.BranchName && commit.Successor is null; public virtual IEnumerable GetIncrements( TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) @@ -14,10 +14,11 @@ public virtual IEnumerable GetIncrements( context.BaseVersionSource = commit.Value; var incrementForcedByBranch = iteration.Configuration.Increment == IncrementStrategy.Inherit - ? commit.GetIncrementForcedByBranch() : iteration.Configuration.Increment.ToVersionField(); + ? commit.GetIncrementForcedByBranch(context.Configuration) : iteration.Configuration.Increment.ToVersionField(); context.Increment = context.Increment.Consolidate(incrementForcedByBranch); - context.Label = iteration.Configuration.GetBranchSpecificLabel(iteration.BranchName, null) ?? context.Label; + var iterationEffectiveConfiguration = iteration.GetEffectiveConfiguration(context.Configuration); + context.Label = iterationEffectiveConfiguration.GetBranchSpecificLabel(iteration.BranchName, null) ?? context.Label; context.ForceIncrement = true; yield return new BaseVersionOperator() diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToNonTrunk.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToNonTrunk.cs index 075a104070..c6e10bebf3 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToNonTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToNonTrunk.cs @@ -14,5 +14,5 @@ internal sealed class CommitOnNonTrunkBranchedToNonTrunk : CommitOnNonTrunkBranc // A 58 minutes ago <<-- public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => base.MatchPrecondition(iteration, commit, context) && !iteration.Configuration.IsMainBranch; + => base.MatchPrecondition(iteration, commit, context) && !(iteration.Configuration.IsMainBranch == true); } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToTrunk.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToTrunk.cs index ddfa42b371..6ea2c066a6 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToTrunk.cs @@ -14,5 +14,5 @@ internal sealed class CommitOnNonTrunkBranchedToTrunk : CommitOnNonTrunkBranched // A 58 minutes ago <<-- public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => base.MatchPrecondition(iteration, commit, context) && iteration.Configuration.IsMainBranch; + => base.MatchPrecondition(iteration, commit, context) && iteration.Configuration.IsMainBranch == true; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs index ed39b3c745..54a48ead70 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs @@ -6,7 +6,7 @@ namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; internal abstract class CommitOnNonTrunkWithPreReleaseTagBase : ITrunkBasedIncrementer { public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => commit is { HasChildIteration: false, Configuration.IsMainBranch: false } + => !commit.HasChildIteration && !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && context.SemanticVersion?.IsPreRelease == true; public virtual IEnumerable GetIncrements( @@ -21,7 +21,9 @@ public virtual IEnumerable GetIncrements( SemanticVersion = context.SemanticVersion.NotNull() }; - context.Increment = commit.GetIncrementForcedByBranch(); - context.Label = commit.Configuration.GetBranchSpecificLabel(commit.BranchName, null); + context.Increment = commit.GetIncrementForcedByBranch(context.Configuration); + var effectiveConfiguration = commit.GetEffectiveConfiguration(context.Configuration); + context.Label = effectiveConfiguration.GetBranchSpecificLabel(commit.BranchName, null); + context.ForceIncrement = false; } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs index 30c46d0850..436f1a8b81 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs @@ -6,7 +6,7 @@ namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; internal abstract class CommitOnNonTrunkWithStableTagBase : ITrunkBasedIncrementer { public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => !commit.Configuration.IsMainBranch && !commit.HasChildIteration + => !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && !commit.HasChildIteration && context.SemanticVersion?.IsPreRelease == false; public virtual IEnumerable GetIncrements( @@ -21,7 +21,8 @@ public virtual IEnumerable GetIncrements( SemanticVersion = context.SemanticVersion.NotNull() }; - context.Increment = commit.GetIncrementForcedByBranch(); - context.Label = commit.Configuration.GetBranchSpecificLabel(commit.BranchName, null); + context.Increment = commit.GetIncrementForcedByBranch(context.Configuration); + var effectiveConfiguration = commit.GetEffectiveConfiguration(context.Configuration); + context.Label = effectiveConfiguration.GetBranchSpecificLabel(commit.BranchName, null); } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs new file mode 100644 index 0000000000..f1303da970 --- /dev/null +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs @@ -0,0 +1,30 @@ +namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; + +internal sealed class FirstCommitOnRelease : ITrunkBasedIncrementer +{ + // B 57 minutes ago (HEAD -> release/1.0.0) + // A 58 minutes ago <<-- + + // A 58 minutes ago (HEAD -> release/1.0.0) <<-- + + // C 56 minutes ago (HEAD -> release/1.0.0) + // B 57 minutes ago <<-- + // A 58 minutes ago (main) + + public bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + => !commit.HasChildIteration && !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch + && commit.GetEffectiveConfiguration(context.Configuration).IsReleaseBranch + && context.SemanticVersion is null && (commit.Predecessor is null + || commit.Predecessor?.BranchName != commit.BranchName); + + public IEnumerable GetIncrements( + TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + { + var effectiveConfiguration = commit.GetEffectiveConfiguration(context.Configuration); + if (commit.BranchName.TryGetSemanticVersion(out var element, effectiveConfiguration)) + { + context.AlternativeSemanticVersions.Add(element.Value); + yield break; + } + } +} diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs index e09a8308f0..92aaea67ad 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs @@ -5,7 +5,8 @@ namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; internal abstract class MergeCommitOnNonTrunkBase : ITrunkBasedIncrementer { public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => commit is { HasChildIteration: true, Configuration.IsMainBranch: false } && context.SemanticVersion is null; + => commit.HasChildIteration && !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch + && context.SemanticVersion is null; public virtual IEnumerable GetIncrements( TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) @@ -14,21 +15,26 @@ public virtual IEnumerable GetIncrements( var baseVersion = TrunkBasedVersionStrategy.DetermineBaseVersionRecursive( iteration: commit.ChildIteration, - targetLabel: context.TargetLabel + targetLabel: context.TargetLabel, + incrementStrategyFinder: context.IncrementStrategyFinder, + configuration: context.Configuration ); context.Label ??= baseVersion.Operator?.Label; + var effectiveConfiguration = commit.GetEffectiveConfiguration(context.Configuration); var increment = VersionField.None; - if (!commit.Configuration.PreventIncrementOfMergedBranch) + if (!effectiveConfiguration.PreventIncrementOfMergedBranch) { increment = increment.Consolidate(context.Increment); } - if (!commit.ChildIteration.Configuration.PreventIncrementWhenBranchMerged) + + if (!effectiveConfiguration.PreventIncrementWhenBranchMerged) { increment = increment.Consolidate(baseVersion.Operator?.Increment); } - if (commit.Configuration.CommitMessageIncrementing != CommitMessageIncrementMode.Disabled) + + if (effectiveConfiguration.CommitMessageIncrementing != CommitMessageIncrementMode.Disabled) { increment = increment.Consolidate(commit.Increment); } @@ -39,9 +45,17 @@ public virtual IEnumerable GetIncrements( context.BaseVersionSource = baseVersion.BaseVersionSource; context.SemanticVersion = baseVersion.SemanticVersion; } - else if (baseVersion.Operator?.AlternativeSemanticVersion is not null) + else { - context.AlternativeSemanticVersions.Add(baseVersion.Operator.AlternativeSemanticVersion); + if (baseVersion.SemanticVersion != SemanticVersion.Empty) + { + context.AlternativeSemanticVersions.Add(baseVersion.SemanticVersion); + } + + if (baseVersion.Operator?.AlternativeSemanticVersion is not null) + { + context.AlternativeSemanticVersions.Add(baseVersion.Operator.AlternativeSemanticVersion); + } } yield break; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/RemoveIncrement.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/RemoveIncrement.cs index bdcc596329..8e22515998 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/RemoveIncrement.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/RemoveIncrement.cs @@ -4,7 +4,7 @@ internal sealed class RemoveIncrement : ITrunkBasedContextPostEnricher { public void Enrich(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { - if (commit.Configuration.IsMainBranch) + if (commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch) { context.Increment = VersionField.None; context.Label = null; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunk.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunk.cs index 9c20645c01..d06c22f112 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunk.cs @@ -11,14 +11,17 @@ internal sealed class CommitOnTrunk : ITrunkBasedIncrementer // A 58 minutes ago <<-- public bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => !commit.HasChildIteration && commit.Configuration.IsMainBranch && context.SemanticVersion is null; + => !commit.HasChildIteration + && commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && context.SemanticVersion is null; public IEnumerable GetIncrements( TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { if (commit.Predecessor is not null && commit.Predecessor.BranchName != commit.BranchName) context.Label = null; - context.Label ??= commit.Configuration.GetBranchSpecificLabel(commit.BranchName, null); + + var effectiveConfiguration = commit.GetEffectiveConfiguration(context.Configuration); + context.Label ??= effectiveConfiguration.GetBranchSpecificLabel(commit.BranchName, null); context.ForceIncrement = true; yield return new BaseVersionOperator() diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs index af8b2f8ff6..20dc43edf7 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs @@ -6,18 +6,27 @@ namespace GitVersion.VersionCalculation.TrunkBased.Trunk; internal abstract class CommitOnTrunkBranchedBase : ITrunkBasedIncrementer { public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => commit.Configuration.IsMainBranch && commit.BranchName != iteration.BranchName && commit.Successor is null; + => commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch + && commit.BranchName != iteration.BranchName && commit.Successor is null; public virtual IEnumerable GetIncrements( TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) { context.BaseVersionSource = commit.Value; + var effectiveConfiguration = iteration.GetEffectiveConfiguration(context.Configuration); + if (iteration.Configuration.IsReleaseBranch == true + && iteration.BranchName.TryGetSemanticVersion(out var element, effectiveConfiguration)) + { + context.AlternativeSemanticVersions.Add(element.Value); + } + var incrementForcedByBranch = iteration.Configuration.Increment == IncrementStrategy.Inherit - ? commit.GetIncrementForcedByBranch() : iteration.Configuration.Increment.ToVersionField(); + ? commit.GetIncrementForcedByBranch(context.Configuration) : iteration.Configuration.Increment.ToVersionField(); context.Increment = incrementForcedByBranch; - context.Label = iteration.Configuration.GetBranchSpecificLabel(iteration.BranchName, null) ?? context.Label; + var iterationEffectiveConfiguration = iteration.GetEffectiveConfiguration(context.Configuration); + context.Label = iterationEffectiveConfiguration.GetBranchSpecificLabel(iteration.BranchName, null) ?? context.Label; context.ForceIncrement = true; yield return new BaseVersionOperator() diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToNonTrunk.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToNonTrunk.cs index 7d3fada9ed..0edd05aede 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToNonTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToNonTrunk.cs @@ -14,5 +14,5 @@ internal sealed class CommitOnTrunkBranchedToNonTrunk : CommitOnTrunkBranchedBas // A 58 minutes ago <<-- public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => base.MatchPrecondition(iteration, commit, context) && !iteration.Configuration.IsMainBranch; + => base.MatchPrecondition(iteration, commit, context) && !(iteration.Configuration.IsMainBranch == true); } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToTrunk.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToTrunk.cs index 4a7b5ac008..136fec9d0c 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToTrunk.cs @@ -14,5 +14,5 @@ internal sealed class CommitOnTrunkBranchedToTrunk : CommitOnTrunkBranchedBase // A 58 minutes ago <<-- public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => base.MatchPrecondition(iteration, commit, context) && iteration.Configuration.IsMainBranch; + => base.MatchPrecondition(iteration, commit, context) && iteration.Configuration.IsMainBranch == true; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs index 953ebc3f9d..3168ed4518 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs @@ -5,7 +5,7 @@ namespace GitVersion.VersionCalculation.TrunkBased.Trunk; internal abstract class CommitOnTrunkWithPreReleaseTagBase : ITrunkBasedIncrementer { public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => commit.Configuration.IsMainBranch && !commit.HasChildIteration + => commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && !commit.HasChildIteration && context.SemanticVersion?.IsPreRelease == true; public virtual IEnumerable GetIncrements( diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTagBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTagBase.cs index 65de504abc..b96aa7097d 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTagBase.cs @@ -6,7 +6,7 @@ namespace GitVersion.VersionCalculation.TrunkBased.Trunk; internal abstract class CommitOnTrunkWithStableTagBase : ITrunkBasedIncrementer { public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => commit.Configuration.IsMainBranch && !commit.HasChildIteration + => commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && !commit.HasChildIteration && context.SemanticVersion?.IsPreRelease == false; public virtual IEnumerable GetIncrements( @@ -21,6 +21,7 @@ public virtual IEnumerable GetIncrements( BaseVersionSource = context.BaseVersionSource }; - context.Label = commit.Configuration.GetBranchSpecificLabel(commit.BranchName, null); + var effectiveConfiguration = commit.GetEffectiveConfiguration(context.Configuration); + context.Label = effectiveConfiguration.GetBranchSpecificLabel(commit.BranchName, null); } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs index 2924d8fc1e..0a7ce3c916 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs @@ -18,10 +18,12 @@ public override IEnumerable GetIncrements( yield return item; } - if (iteration.Configuration.IsMainBranch) + if (iteration.Configuration.IsMainBranch == true) { - context.Increment = commit.GetIncrementForcedByBranch(); - context.Label = commit.Configuration.GetBranchSpecificLabel(commit.BranchName, null); + context.Increment = commit.GetIncrementForcedByBranch(context.Configuration); + + var effectiveConfiguration = commit.GetEffectiveConfiguration(context.Configuration); + context.Label = effectiveConfiguration.GetBranchSpecificLabel(commit.BranchName, null); context.ForceIncrement = false; yield return new BaseVersionOperator() diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs index 7ec910b0f5..af4c5fd05c 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs @@ -16,7 +16,7 @@ public override IEnumerable GetIncrements( yield return item; } - if (iteration.Configuration.IsMainBranch) + if (iteration.Configuration.IsMainBranch == true) { context.ForceIncrement = true; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastMergeCommitOnTrunk.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastMergeCommitOnTrunk.cs index 4e8e72001a..d18db2846c 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastMergeCommitOnTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastMergeCommitOnTrunk.cs @@ -1,3 +1,4 @@ + namespace GitVersion.VersionCalculation.TrunkBased.Trunk; internal sealed class LastMergeCommitOnTrunk : MergeCommitOnTrunkBase diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunkBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunkBase.cs index 165984cdcc..d9d6ecaad8 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunkBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunkBase.cs @@ -5,7 +5,7 @@ namespace GitVersion.VersionCalculation.TrunkBased.Trunk; internal abstract class MergeCommitOnTrunkBase : ITrunkBasedIncrementer { public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => commit.HasChildIteration && commit.Configuration.IsMainBranch && context.SemanticVersion is null; + => commit.HasChildIteration && commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && context.SemanticVersion is null; public virtual IEnumerable GetIncrements( TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) @@ -14,21 +14,26 @@ public virtual IEnumerable GetIncrements( var baseVersion = TrunkBasedVersionStrategy.DetermineBaseVersionRecursive( iteration: commit.ChildIteration!, - targetLabel: context.TargetLabel + targetLabel: context.TargetLabel, + incrementStrategyFinder: context.IncrementStrategyFinder, + configuration: context.Configuration ); context.Label ??= baseVersion.Operator?.Label; var increment = VersionField.None; - if (!commit.Configuration.PreventIncrementOfMergedBranch) + + if (!commit.GetEffectiveConfiguration(context.Configuration).PreventIncrementOfMergedBranch) { increment = increment.Consolidate(context.Increment); } - if (!commit.ChildIteration.Configuration.PreventIncrementWhenBranchMerged) + + if (!commit.ChildIteration.GetEffectiveConfiguration(context.Configuration).PreventIncrementWhenBranchMerged) { increment = increment.Consolidate(baseVersion.Operator?.Increment); } - if (commit.Configuration.CommitMessageIncrementing != CommitMessageIncrementMode.Disabled) + + if (commit.GetEffectiveConfiguration(context.Configuration).CommitMessageIncrementing != CommitMessageIncrementMode.Disabled) { increment = increment.Consolidate(commit.Increment); } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs index 31d139af01..ad3f515387 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using GitVersion.Configuration; using GitVersion.Extensions; using GitVersion.Git; @@ -9,16 +10,18 @@ namespace GitVersion.VersionCalculation.TrunkBased; "HasSuccessor = {" + nameof(HasSuccessor) + "}, HasPredecessor = {" + nameof(HasPredecessor) + "}, " + "HasChildIteration = {" + nameof(HasChildIteration) + "}, Message = {" + nameof(Message) + @"} \}" )] -internal record TrunkBasedCommit(TrunkBasedIteration Iteration, ICommit Value, ReferenceName BranchName, EffectiveConfiguration Configuration, VersionField Increment) +internal record TrunkBasedCommit(TrunkBasedIteration Iteration, ICommit Value, ReferenceName BranchName, IBranchConfiguration Configuration) { - public bool IsPredecessorTheLastCommitOnTrunk - => !Configuration.IsMainBranch && Predecessor?.Configuration.IsMainBranch == true; + public bool IsPredecessorTheLastCommitOnTrunk(IGitVersionConfiguration configuration) + => !GetEffectiveConfiguration(configuration).IsMainBranch && Predecessor?.GetEffectiveConfiguration(configuration).IsMainBranch == true; + + public VersionField Increment { get; set; } public TrunkBasedIteration Iteration { get; } = Iteration.NotNull(); public ReferenceName BranchName { get; } = BranchName.NotNull(); - public EffectiveConfiguration Configuration { get; } = Configuration.NotNull(); + private IBranchConfiguration Configuration { get; } = Configuration.NotNull(); public bool HasSuccessor => Successor is not null; @@ -34,36 +37,54 @@ public bool IsPredecessorTheLastCommitOnTrunk public TrunkBasedIteration? ChildIteration { get; private set; } + [MemberNotNullWhen(true, nameof(ChildIteration))] public bool HasChildIteration => ChildIteration is not null && ChildIteration.Commits.Count != 0; + public TrunkBasedIteration? ParentIteration => Iteration.ParentIteration; + + public TrunkBasedCommit? ParentCommit => Iteration.ParentCommit; + + [MemberNotNullWhen(true, nameof(ParentIteration), nameof(ParentCommit))] + public bool HasParentIteration => Iteration.ParentIteration is not null && Iteration.ParentCommit is not null; + public IReadOnlyCollection SemanticVersions => semanticVersions; private readonly HashSet semanticVersions = []; - public VersionField GetIncrementForcedByBranch() + private EffectiveConfiguration? effectiveConfiguration; + + public EffectiveConfiguration GetEffectiveConfiguration(IGitVersionConfiguration configuration) { - ICommit lastCommit = null!; + if (effectiveConfiguration is not null) return effectiveConfiguration; + + IBranchConfiguration branchConfiguration = Configuration; + + IBranchConfiguration? last = Configuration; for (var i = this; i is not null; i = i.Predecessor) { - if (i.Configuration.Increment != IncrementStrategy.Inherit) - return i.Configuration.Increment.ToVersionField(); - lastCommit = i.Value; - } + if (branchConfiguration.Increment != IncrementStrategy.Inherit) break; - if (Iteration.Parent is not null && lastCommit.Parents.FirstOrDefault() is ICommit commit) - { - var trunkCommit = Iteration.Parent.FindCommit(commit); - if (trunkCommit is not null) - return trunkCommit.GetIncrementForcedByBranch(); + if (i.Configuration != last) + { + branchConfiguration = branchConfiguration.Inherit(i.Configuration); + } + + last = i.Configuration; } - for (var i = Iteration; i is not null; i = i.Parent) + if (branchConfiguration.Increment == IncrementStrategy.Inherit && HasParentIteration) { - if (i.Configuration.Increment != IncrementStrategy.Inherit) - return i.Configuration.Increment.ToVersionField(); + var parentConfiguration = ParentCommit.GetEffectiveConfiguration(configuration); + branchConfiguration = branchConfiguration.Inherit(parentConfiguration); } - return VersionField.None; + return effectiveConfiguration = new EffectiveConfiguration(configuration, branchConfiguration); + } + + public VersionField GetIncrementForcedByBranch(IGitVersionConfiguration configuration) + { + var result = GetEffectiveConfiguration(configuration); + return result.Increment.ToVersionField(); } public void AddSemanticVersions(params SemanticVersion[] values) @@ -80,11 +101,11 @@ public void AddSemanticVersions(IEnumerable values) public void AddChildIteration(TrunkBasedIteration iteration) => ChildIteration = iteration.NotNull(); public TrunkBasedCommit Append( - ICommit value, ReferenceName branchName, EffectiveConfiguration configuration, VersionField increment) + ICommit value, ReferenceName branchName, IBranchConfiguration configuration) { if (HasPredecessor) throw new InvalidOperationException(); - TrunkBasedCommit commit = new(Iteration, value, branchName, configuration, increment); + TrunkBasedCommit commit = new(Iteration, value, branchName, configuration); Predecessor = commit; commit.Successor = this; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedContext.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedContext.cs index 8386762d05..8dbd7712c8 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedContext.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedContext.cs @@ -1,9 +1,15 @@ +using GitVersion.Configuration; +using GitVersion.Extensions; using GitVersion.Git; namespace GitVersion.VersionCalculation.TrunkBased; -internal record TrunkBasedContext +internal record TrunkBasedContext(IIncrementStrategyFinder IncrementStrategyFinder, IGitVersionConfiguration Configuration) { + public IIncrementStrategyFinder IncrementStrategyFinder { get; } = IncrementStrategyFinder.NotNull(); + + public IGitVersionConfiguration Configuration { get; } = Configuration.NotNull(); + public string? TargetLabel { get; init; } public SemanticVersion? SemanticVersion { get; set; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs index b8ec6f9673..94d5f44454 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs @@ -5,13 +5,35 @@ namespace GitVersion.VersionCalculation.TrunkBased; [DebuggerDisplay( - @"\{ Id = {" + nameof(Id) + "}, BranchName = {" + nameof(BranchName) + "}, Depth = {" + nameof(Depth) + "}, NumberOfCommits = {" + nameof(NumberOfCommits) + "}" + @"} \}" + @"\{ Id = {" + nameof(Id) + "}, " + + "BranchName = {" + nameof(BranchName) + "}, " + + "Depth = {" + nameof(Depth) + "}, " + + "NumberOfCommits = {" + nameof(NumberOfCommits) + "}" + @"} \}" )] internal record TrunkBasedIteration { - public EffectiveConfiguration Configuration { get; } + public IBranchConfiguration Configuration { get; } - public TrunkBasedIteration? Parent { get; } + private EffectiveConfiguration? effectiveConfiguration; + + public EffectiveConfiguration GetEffectiveConfiguration(IGitVersionConfiguration configuration) + { + if (effectiveConfiguration is not null) return effectiveConfiguration; + + IBranchConfiguration branchConfiguration = Configuration; + + if (branchConfiguration.Increment == IncrementStrategy.Inherit && Commits.FirstOrDefault() is TrunkBasedCommit commit) + { + var parentConfiguration = commit.GetEffectiveConfiguration(configuration); + branchConfiguration = branchConfiguration.Inherit(parentConfiguration); + } + + return effectiveConfiguration = new EffectiveConfiguration(configuration, branchConfiguration); + } + + public TrunkBasedIteration? ParentIteration { get; } + + public TrunkBasedCommit? ParentCommit { get; } public string Id { get; } @@ -26,24 +48,26 @@ internal record TrunkBasedIteration private readonly Dictionary commitLookup = []; - public TrunkBasedIteration(string id, ReferenceName branchName, EffectiveConfiguration configuration, TrunkBasedIteration? parent) + public TrunkBasedIteration(string id, ReferenceName branchName, IBranchConfiguration configuration, + TrunkBasedIteration? parentIteration, TrunkBasedCommit? parentCommit) { Id = id.NotNullOrEmpty(); - Depth = parent?.Depth ?? 0 + 1; + Depth = parentIteration?.Depth ?? 0 + 1; BranchName = branchName.NotNull(); Configuration = configuration.NotNull(); - Parent = parent; + ParentIteration = parentIteration; + ParentCommit = parentCommit; } public TrunkBasedCommit CreateCommit( - ICommit value, ReferenceName branchName, EffectiveConfiguration configuration, VersionField increment) + ICommit value, ReferenceName branchName, IBranchConfiguration configuration) { TrunkBasedCommit commit; if (commits.Count != 0) - commit = commits.Peek().Append(value, branchName, configuration, increment); + commit = commits.Peek().Append(value, branchName, configuration); //, increment); else { - commit = new(this, value, branchName, configuration, increment); + commit = new TrunkBasedCommit(this, value, branchName, configuration); //, increment); } commits.Push(commit); commitLookup.Add(value, commit); diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs index 2839d46878..ede42d8b06 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs @@ -215,16 +215,16 @@ private NextVersion CalculateNextVersion(IBranch branch, IGitVersionConfiguratio return new(maxVersion.IncrementedVersion, calculatedBase, maxVersion.BranchConfiguration); } - private static NextVersion CompareVersions(NextVersion versions1, NextVersion version2) + private static NextVersion CompareVersions(NextVersion version1, NextVersion version2) { - if (versions1.BaseVersion.BaseVersionSource == null) + if (version1.BaseVersion.BaseVersionSource == null) return version2; if (version2.BaseVersion.BaseVersionSource == null) - return versions1; + return version1; - return versions1.BaseVersion.BaseVersionSource.When < version2.BaseVersion.BaseVersionSource.When - ? versions1 + return version1.BaseVersion.BaseVersionSource.When >= version2.BaseVersion.BaseVersionSource.When + ? version1 : version2; } @@ -244,8 +244,20 @@ IEnumerable GetNextVersionsInternal() foreach (var effectiveBranchConfiguration in effectiveBranchConfigurations) { this.log.Info($"Calculating base versions for '{effectiveBranchConfiguration.Branch.Name}'"); - foreach (var versionStrategy in this.versionStrategies) + + var versionStrategies = this.versionStrategies.ToList(); + var fallbackVersionStrategy = versionStrategies.FirstOrDefault(element => element is FallbackVersionStrategy); + if (fallbackVersionStrategy is not null) + { + versionStrategies.Remove(fallbackVersionStrategy); + versionStrategies.Add(fallbackVersionStrategy); + } + + var atLeastOneBaseVersionReturned = false; + foreach (var versionStrategy in versionStrategies) { + if (atLeastOneBaseVersionReturned && versionStrategy is FallbackVersionStrategy) continue; + using (this.log.IndentLog($"[Using '{versionStrategy.GetType().Name}' strategy]")) { foreach (var baseVersion in versionStrategy.GetBaseVersions(effectiveBranchConfiguration)) @@ -253,6 +265,8 @@ IEnumerable GetNextVersionsInternal() log.Info(baseVersion.ToString()); if (IncludeVersion(baseVersion, configuration.Ignore)) { + atLeastOneBaseVersionReturned = true; + yield return new NextVersion( incrementedVersion: baseVersion.GetIncrementedVersion(), baseVersion: baseVersion, diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs index 0d32d3dd48..ed9b94c57c 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs @@ -37,18 +37,9 @@ public SemanticVersion GetIncrementedVersion() result = result.Increment( increment: Operator.Increment, label: Operator.Label, - forceIncrement: Operator.ForceIncrement + forceIncrement: Operator.ForceIncrement, + Operator.AlternativeSemanticVersion ); - - if (result.IsLessThan(Operator.AlternativeSemanticVersion, includePreRelease: false)) - { - result = new SemanticVersion(result) - { - Major = Operator.AlternativeSemanticVersion!.Major, - Minor = Operator.AlternativeSemanticVersion.Minor, - Patch = Operator.AlternativeSemanticVersion.Patch - }; - } } return result; diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs index 0a963bb947..20944f2084 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs @@ -13,4 +13,18 @@ public BaseVersionOperand() : this(string.Empty, SemanticVersion.Empty) public string Source { get; init; } = Source.NotNull(); public SemanticVersion SemanticVersion { get; init; } = SemanticVersion.NotNull(); + + public ICommit? BaseVersionSource { get; init; } = BaseVersionSource; + + public override string ToString() + { + StringBuilder stringBuilder = new(); + + stringBuilder.Append($"{Source}: Take '{SemanticVersion:f}'"); + + if (BaseVersionSource is not null) + stringBuilder.Append($" based on commit '{BaseVersionSource.Id.ToString(7)}'."); + + return stringBuilder.ToString(); + } } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperator.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperator.cs index 8f2708bc99..705c485c82 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperator.cs @@ -15,4 +15,31 @@ public sealed record class BaseVersionOperator : IBaseVersionIncrement public string? Label { get; init; } public SemanticVersion? AlternativeSemanticVersion { get; init; } + + public override string ToString() + { + StringBuilder stringBuilder = new(); + + stringBuilder.Append($"{Source}: "); + if (ForceIncrement) + stringBuilder.Append("Force version increment "); + else + { + stringBuilder.Append("Version increment "); + } + + stringBuilder.Append($"+semver '{Increment}'"); + + if (Label is null) + stringBuilder.Append(" with no label"); + else + { + stringBuilder.Append($" with label '{Label}'"); + } + + if (BaseVersionSource is not null) + stringBuilder.Append($" based on commit '{BaseVersionSource.Id.ToString(7)}'."); + + return stringBuilder.ToString(); + } } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs index fd26fce6b4..547cba2277 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs @@ -1,6 +1,7 @@ using GitVersion.Common; using GitVersion.Configuration; using GitVersion.Extensions; +using GitVersion.Git; using GitVersion.Logging; namespace GitVersion.VersionCalculation; @@ -40,28 +41,23 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur { this.log.Info($"Found commit [{commit}] matching merge message format: {mergeMessage.FormatName}"); - var shouldIncrement = !configuration.Value.PreventIncrementOfMergedBranch; - var message = commit.Message.Trim(); var baseVersionSource = commit; - if (shouldIncrement) + if (commit.IsMergeCommit()) { - var parents = commit.Parents.ToArray(); - if (parents.Length == 2 && message.Contains("Merge branch") && message.Contains("release")) - { - baseVersionSource = this.repositoryStore.FindMergeBase(parents[0], parents[1]); - } + baseVersionSource = this.repositoryStore.FindMergeBase(commit.Parents[0], commit.Parents[1]); } var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); - var increment = shouldIncrement ? incrementStrategyFinder.DetermineIncrementedField( - currentCommit: Context.CurrentCommit, - baseVersionSource: baseVersionSource, - shouldIncrement: true, - configuration: configuration.Value, - label: label - ) : VersionField.None; + var increment = configuration.Value.PreventIncrementOfMergedBranch + ? VersionField.None : incrementStrategyFinder.DetermineIncrementedField( + currentCommit: Context.CurrentCommit, + baseVersionSource: baseVersionSource, + shouldIncrement: true, + configuration: configuration.Value, + label: label + ); - yield return new BaseVersion($"Merge message '{message}'", mergeMessage.Version, baseVersionSource) + yield return new BaseVersion($"Merge message '{commit.Message.Trim()}'", mergeMessage.Version, null) { Operator = new BaseVersionOperator() { diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs index 35cf8075b9..82a61aed04 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs @@ -40,15 +40,11 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur ).SelectMany(elements => elements).Distinct().ToArray(); var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); - var semanticVersionsWithTag = taggedSemanticVersionService.GetTaggedSemanticVersions( - branch: Context.CurrentBranch, - configuration: Context.Configuration, - label: label, - notOlderThan: Context.CurrentCommit.When, - taggedSemanticVersion: configuration.Value.GetTaggedSemanticVersion() - ).SelectMany(elements => elements).Distinct().ToArray(); + var maxTaggedSemanticVersion = taggedSemanticVersions + .Where(element => !element.Value.IsMatchForBranchSpecificLabel(label)).Max(); - foreach (var semanticVersionWithTag in semanticVersionsWithTag) + foreach (var semanticVersionWithTag + in taggedSemanticVersions.Where(element => element.Value.IsMatchForBranchSpecificLabel(label))) { var baseVersionSource = semanticVersionWithTag.Tag.Commit; var increment = incrementStrategyFinder.DetermineIncrementedField( @@ -65,7 +61,8 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur { Increment = increment, ForceIncrement = false, - Label = label + Label = label, + AlternativeSemanticVersion = maxTaggedSemanticVersion?.Value } }; } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrackReleaseBranchesVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrackReleaseBranchesVersionStrategy.cs index 6d8ddf164f..ac2f1291a3 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrackReleaseBranchesVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrackReleaseBranchesVersionStrategy.cs @@ -18,7 +18,7 @@ internal sealed class TrackReleaseBranchesVersionStrategy( private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); private readonly IBranchRepository branchRepository = branchRepository.NotNull(); private readonly IIncrementStrategyFinder incrementStrategyFinder = incrementStrategyFinder.NotNull(); - private readonly VersionInBranchNameVersionStrategy releaseVersionStrategy = new(contextLazy, repositoryStore); + private readonly VersionInBranchNameVersionStrategy releaseVersionStrategy = new(contextLazy); private GitVersionContext Context => contextLazy.Value; diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs index 6d4495491f..4b6efc9697 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs @@ -1,4 +1,3 @@ -using System.ComponentModel; using GitVersion.Common; using GitVersion.Configuration; using GitVersion.Core; @@ -53,6 +52,8 @@ internal sealed class TrunkBasedVersionStrategy( new CommitOnTrunkBranchedToNonTrunk(), // NonTrunk + new FirstCommitOnRelease(), + new CommitOnNonTrunk(), new CommitOnNonTrunkWithPreReleaseTag(), new LastCommitOnNonTrunkWithPreReleaseTag(), @@ -74,16 +75,31 @@ public IEnumerable GetBaseVersions(EffectiveBranchConfiguration con if (!Context.Configuration.VersionStrategy.HasFlag(VersionStrategies.TrunkBased)) yield break; - var iteration = CreateIteration(branchName: Context.CurrentBranch.Name, configuration: configuration.Value); + var branchConfiguration = Context.Configuration.GetBranchConfiguration(Context.CurrentBranch); + + var iteration = CreateIteration( + branchName: Context.CurrentBranch.Name, + configuration: branchConfiguration + ); - var commitsInReverseOrder = configuration.Value.Ignore.Filter(Context.CurrentBranchCommits); + var commitsInReverseOrder = Context.Configuration.Ignore.Filter(Context.CurrentBranchCommits); + TaggedSemanticVersions taggedSemanticVersion = TaggedSemanticVersions.OfBranch; + if (branchConfiguration.TrackMergeTarget == true) taggedSemanticVersion |= TaggedSemanticVersions.OfMergeTargets; + if (branchConfiguration.TracksReleaseBranches == true) + { + taggedSemanticVersion |= TaggedSemanticVersions.OfReleaseBranches; + } + if (!(branchConfiguration.IsMainBranch == true || branchConfiguration.IsReleaseBranch == true)) + { + taggedSemanticVersion |= TaggedSemanticVersions.OfMainBranches; + } var taggedSemanticVersions = taggedSemanticVersionService.GetTaggedSemanticVersions( branch: Context.CurrentBranch, configuration: Context.Configuration, label: null, notOlderThan: Context.CurrentCommit.When, - taggedSemanticVersion: configuration.Value.GetTaggedSemanticVersion() + taggedSemanticVersion: taggedSemanticVersion ); var targetLabel = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); IterateOverCommitsRecursive( @@ -93,18 +109,20 @@ public IEnumerable GetBaseVersions(EffectiveBranchConfiguration con taggedSemanticVersions: taggedSemanticVersions ); - yield return DetermineBaseVersion(iteration, targetLabel); + yield return DetermineBaseVersion(iteration, targetLabel, incrementStrategyFinder, Context.Configuration); } private TrunkBasedIteration CreateIteration( - ReferenceName branchName, EffectiveConfiguration configuration, TrunkBasedIteration? parent = null) + ReferenceName branchName, IBranchConfiguration configuration, + TrunkBasedIteration? parentIteration = null, TrunkBasedCommit? parentCommit = null) { var iterationCount = Interlocked.Increment(ref iterationCounter); - return new( + return new TrunkBasedIteration( id: $"#{iterationCount}", branchName: branchName, configuration: configuration, - parent: parent + parentIteration: parentIteration, + parentCommit: parentCommit ); } @@ -114,77 +132,118 @@ private bool IterateOverCommitsRecursive( { traversedCommits ??= []; - Lazy> commitsWasBranchedFromLazy = new( - () => GetCommitsWasBranchedFrom(branchName: iteration.BranchName) - ); + bool exit = false; var configuration = iteration.Configuration; var branchName = iteration.BranchName; + var branch = repositoryStore.FindBranch(branchName); + + Lazy> commitsWasBranchedFromLazy = new( + () => branch is null + ? new Dictionary() + : GetCommitsWasBranchedFrom(branch) + ); foreach (var item in commitsInReverseOrder) { if (!traversedCommits.Add(item)) continue; if (commitsWasBranchedFromLazy.Value.TryGetValue(item, out var effectiveConfigurationWasBranchedFrom) - && (!configuration.IsMainBranch || effectiveConfigurationWasBranchedFrom.Value.IsMainBranch)) + && (!(configuration.IsMainBranch == true) || effectiveConfigurationWasBranchedFrom.Value.IsMainBranch == true)) { + var excludeBranch = branch; + configuration = effectiveConfigurationWasBranchedFrom.Value; branchName = effectiveConfigurationWasBranchedFrom.Branch.Name; + branch = repositoryStore.FindBranch(branchName); + + commitsWasBranchedFromLazy = new Lazy> + (() => branch is null ? new Dictionary() + : GetCommitsWasBranchedFrom(branch, excludeBranch is null ? Array.Empty() : [excludeBranch]) + ); + + TaggedSemanticVersions taggedSemanticVersion = TaggedSemanticVersions.OfBranch; + if ((configuration.TrackMergeTarget ?? Context.Configuration.TrackMergeTarget) == true) + { + taggedSemanticVersion |= TaggedSemanticVersions.OfMergeTargets; + } + if ((configuration.TracksReleaseBranches ?? Context.Configuration.TracksReleaseBranches) == true) + { + taggedSemanticVersion |= TaggedSemanticVersions.OfReleaseBranches; + } + if (!(configuration.IsMainBranch == true || configuration.IsReleaseBranch == true)) + { + taggedSemanticVersion |= TaggedSemanticVersions.OfMainBranches; + } taggedSemanticVersions = taggedSemanticVersionService.GetTaggedSemanticVersions( branch: effectiveConfigurationWasBranchedFrom.Branch, configuration: Context.Configuration, label: null, notOlderThan: Context.CurrentCommit.When, - taggedSemanticVersion: effectiveConfigurationWasBranchedFrom.Value.GetTaggedSemanticVersion() + taggedSemanticVersion: taggedSemanticVersion ); } - var incrementForcedByCommit = GetIncrementForcedByCommit(item, configuration); - var commit = iteration.CreateCommit(item, branchName, configuration, incrementForcedByCommit); + var commit = iteration.CreateCommit(item, branchName, configuration); var semanticVersions = taggedSemanticVersions[item].ToArray(); commit.AddSemanticVersions(semanticVersions.Select(element => element.Value)); - var label = targetLabel ?? configuration.GetBranchSpecificLabel(branchName, null); + var label = targetLabel ?? new EffectiveConfiguration( + configuration: Context.Configuration, + branchConfiguration: configuration + ).GetBranchSpecificLabel(branchName, null); + foreach (var semanticVersion in semanticVersions) { - if (semanticVersion.Value.IsMatchForBranchSpecificLabel(label)) return true; + if (semanticVersion.Value.IsMatchForBranchSpecificLabel(label)) + { + if (configuration.Increment != IncrementStrategy.Inherit) + { + return true; + } + else + { + exit = true; + } + } + } + + if (exit && configuration.Increment != IncrementStrategy.Inherit) + { + return true; } if (item.IsMergeCommit()) { Lazy> mergedCommitsInReverseOrderLazy = new( - () => incrementStrategyFinder.GetMergedCommits(item, 1, configuration.Ignore).Reverse().ToList() + () => incrementStrategyFinder.GetMergedCommits(item, 1, Context.Configuration.Ignore).Reverse().ToList() ); - if (configuration.TrackMergeMessage + if ((configuration.TrackMergeMessage ?? Context.Configuration.TrackMergeMessage) == true && MergeMessage.TryParse(item, Context.Configuration, out var mergeMessage)) { - if (mergeMessage.Version is not null) - { - commit.AddSemanticVersions(mergeMessage.Version); - return true; - } - if (mergeMessage.MergedBranch is not null) { - var childConfiguration = Context.Configuration.GetEffectiveConfiguration( - mergeMessage.MergedBranch - ); + var childConfiguration = Context.Configuration.GetBranchConfiguration(mergeMessage.MergedBranch); + var childBranchName = mergeMessage.MergedBranch; - if (childConfiguration.IsMainBranch) + if (childConfiguration.IsMainBranch == true) { - if (configuration.IsMainBranch) throw new NotImplementedException(); + if (configuration.IsMainBranch == true) throw new NotImplementedException(); + mergedCommitsInReverseOrderLazy = new( - () => incrementStrategyFinder.GetMergedCommits(item, 0, configuration.Ignore).Reverse().ToList() + () => incrementStrategyFinder.GetMergedCommits(item, 0, Context.Configuration.Ignore).Reverse().ToList() ); childConfiguration = configuration; + childBranchName = iteration.BranchName; } var childIteration = CreateIteration( - branchName: mergeMessage.MergedBranch, + branchName: childBranchName, configuration: childConfiguration, - parent: iteration + parentIteration: iteration, + parentCommit: commit ); var done = IterateOverCommitsRecursive( @@ -206,32 +265,13 @@ private bool IterateOverCommitsRecursive( return false; } - private VersionField GetIncrementForcedByCommit(ICommit commit, EffectiveConfiguration configuration) - { - commit.NotNull(); - configuration.NotNull(); - - return configuration.CommitMessageIncrementing switch - { - CommitMessageIncrementMode.Enabled => incrementStrategyFinder.GetIncrementForcedByCommit(commit, configuration), - CommitMessageIncrementMode.Disabled => VersionField.None, - CommitMessageIncrementMode.MergeMessageOnly => commit.IsMergeCommit() - ? incrementStrategyFinder.GetIncrementForcedByCommit(commit, configuration) : VersionField.None, - _ => throw new InvalidEnumArgumentException( - nameof(configuration.CommitMessageIncrementing), (int)configuration.CommitMessageIncrementing, typeof(CommitMessageIncrementMode) - ) - }; - } - - private IReadOnlyDictionary GetCommitsWasBranchedFrom(ReferenceName branchName) + private IReadOnlyDictionary GetCommitsWasBranchedFrom( + IBranch branch, params IBranch[] excludedBranches) { - Dictionary result = []; - - var branch = repositoryStore.FindBranch(branchName); - if (branch is null) return result; + Dictionary result = new(); var branchCommits = repositoryStore.FindCommitBranchesBranchedFrom( - branch, Context.Configuration + branch, Context.Configuration, excludedBranches: excludedBranches ).ToList(); var branchCommitDictionary = branchCommits.ToDictionary( @@ -240,36 +280,38 @@ private IReadOnlyDictionary GetCommitsWas foreach (var item in branchCommitDictionary.Keys) { var branchConfiguration = Context.Configuration.GetBranchConfiguration(item); - if (branchConfiguration.Increment == IncrementStrategy.Inherit) continue; if (result.ContainsKey(branchCommitDictionary[item])) { + if (branchConfiguration.Increment == IncrementStrategy.Inherit && branchConfiguration.IsMainBranch is null) + { + throw new InvalidOperationException(); + } + if ((branchConfiguration.IsMainBranch ?? Context.Configuration.IsMainBranch) == true - && !result[branchCommitDictionary[item]].Value.IsMainBranch) + && result[branchCommitDictionary[item]].Configuration.IsMainBranch == false) { - result[branchCommitDictionary[item]] - = new(new(Context.Configuration, branchConfiguration), item); + result[branchCommitDictionary[item]] = new(item, branchConfiguration); } } else { - result.Add( - key: branchCommitDictionary[item], - value: new(new(Context.Configuration, branchConfiguration), item) - ); + result.Add(key: branchCommitDictionary[item], value: new(item, branchConfiguration)); } } return result; } - private static BaseVersion DetermineBaseVersion(TrunkBasedIteration iteration, string? targetLabel) - => DetermineBaseVersionRecursive(iteration, targetLabel); + private static BaseVersion DetermineBaseVersion(TrunkBasedIteration iteration, string? targetLabel, + IIncrementStrategyFinder incrementStrategyFinder, IGitVersionConfiguration configuration) + => DetermineBaseVersionRecursive(iteration, targetLabel, incrementStrategyFinder, configuration); - internal static BaseVersion DetermineBaseVersionRecursive(TrunkBasedIteration iteration, string? targetLabel) + internal static BaseVersion DetermineBaseVersionRecursive(TrunkBasedIteration iteration, string? targetLabel, + IIncrementStrategyFinder incrementStrategyFinder, IGitVersionConfiguration configuration) { iteration.NotNull(); - var incrementSteps = GetIncrements(iteration, targetLabel).ToArray(); + var incrementSteps = GetIncrements(iteration, targetLabel, incrementStrategyFinder, configuration).ToArray(); BaseVersion? result = null; for (var i = 0; i < incrementSteps.Length; i++) @@ -283,15 +325,20 @@ internal static BaseVersion DetermineBaseVersionRecursive(TrunkBasedIteration it result ??= new BaseVersion(); result = result.Apply(baseVersionOperator); } + else if (incrementSteps[i] is BaseVersion baseVersion) + { + result = baseVersion; + } } return result ?? throw new InvalidOperationException(); } - private static IEnumerable GetIncrements(TrunkBasedIteration iteration, string? targetLabel) + private static IEnumerable GetIncrements(TrunkBasedIteration iteration, string? targetLabel, + IIncrementStrategyFinder incrementStrategyFinder, IGitVersionConfiguration configuration) { - TrunkBasedContext context = new() + TrunkBasedContext context = new(incrementStrategyFinder, configuration) { - TargetLabel = targetLabel, + TargetLabel = targetLabel }; foreach (var commit in iteration.Commits) diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs index 12d1525677..dabbcb6bda 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs @@ -1,8 +1,6 @@ using System.Diagnostics.CodeAnalysis; -using GitVersion.Common; using GitVersion.Configuration; using GitVersion.Extensions; -using GitVersion.Git; namespace GitVersion.VersionCalculation; @@ -11,13 +9,9 @@ namespace GitVersion.VersionCalculation; /// BaseVersionSource is the commit where the branch was branched from its parent. /// Does not increment. /// -internal sealed class VersionInBranchNameVersionStrategy( - Lazy contextLazy, - IRepositoryStore repositoryStore) - : IVersionStrategy +internal sealed class VersionInBranchNameVersionStrategy(Lazy contextLazy) : IVersionStrategy { private readonly Lazy contextLazy = contextLazy.NotNull(); - private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); private GitVersionContext Context => contextLazy.Value; @@ -39,9 +33,6 @@ public bool TryGetBaseVersion(EffectiveBranchConfiguration configuration, [NotNu if (!configuration.Value.IsReleaseBranch) return false; - Lazy commitBranchWasBranchedFrom = new( - () => this.repositoryStore.FindCommitBranchBranchedFrom(configuration.Branch, Context.Configuration) - ); foreach (var branch in new[] { Context.CurrentBranch, configuration.Branch }) { if (branch.Name.TryGetSemanticVersion(out var result, configuration.Value.VersionInBranchRegex, @@ -56,7 +47,7 @@ public bool TryGetBaseVersion(EffectiveBranchConfiguration configuration, [NotNu var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, branchNameOverride); - baseVersion = new BaseVersion("Version in branch name", result.Value, commitBranchWasBranchedFrom.Value.Commit) + baseVersion = new BaseVersion("Version in branch name", result.Value, null) { Operator = new BaseVersionOperator() { diff --git a/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs b/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs index 74aa84e7ff..c15937ee55 100644 --- a/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs +++ b/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs @@ -67,7 +67,11 @@ protected virtual void Dispose(bool disposing) public void Checkout(string branch) => Commands.Checkout(Repository, branch); - public void Remove(string branch) => Repository.Branches.Remove(branch); + public void Remove(string branch) + { + Repository.Branches.Remove(branch); + SequenceDiagram.Destroy(branch); + } public static void Init(string path, string branchName = "main") => GitTestExtensions.ExecuteGitCmd($"init {path} -b {branchName}"); diff --git a/src/GitVersion.Testing/Fixtures/SequenceDiagram.cs b/src/GitVersion.Testing/Fixtures/SequenceDiagram.cs index c5f93a2c6b..322e7a9355 100644 --- a/src/GitVersion.Testing/Fixtures/SequenceDiagram.cs +++ b/src/GitVersion.Testing/Fixtures/SequenceDiagram.cs @@ -24,6 +24,11 @@ public SequenceDiagram() /// public void Activate(string branch) => this.diagramBuilder.AppendLineFormat("activate {0}", GetParticipant(branch)); + /// + /// Deactivates a branch/participant in the sequence diagram + /// + public void Deactivate(string branch) => this.diagramBuilder.AppendLineFormat("deactivate {0}", GetParticipant(branch)); + /// /// Destroys a branch/participant in the sequence diagram /// From 61f86b1d3d5015ba40dadd993a48337bc871359d Mon Sep 17 00:00:00 2001 From: HHobeck Date: Wed, 17 Apr 2024 17:52:38 +0200 Subject: [PATCH 089/544] Update configuration.md --- docs/input/docs/reference/configuration.md | 145 +++++------------- .../Workflows/GitHubFlow/v1.yml | 2 + 2 files changed, 40 insertions(+), 107 deletions(-) diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index 502d25a71d..6209359ea1 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -37,12 +37,11 @@ To see the effective configuration (defaults and overrides), you can run The following supported workflow configurations are available in GitVersion and can be referenced by the workflow property: - GitFlow (GitFlow/v1) - GitHubFlow (GitHubFlow/v1) -- TrunkBased (TrunkBased/v1) Example of using a `TrunkBased` workflow with a different `tag-prefix`: ```yaml -workflow: TrunkBased/v1 +workflow: GitHubFlow/v1 tag-prefix: '[abc]' ``` @@ -76,8 +75,10 @@ branches: prevent-increment: when-current-commit-tagged: false track-merge-target: true + track-merge-message: true regex: ^dev(elop)?(ment)?$ - source-branches: [] + source-branches: + - main is-source-branch-for: [] tracks-release-branches: true is-release-branch: false @@ -89,10 +90,9 @@ branches: prevent-increment: of-merged-branch: true track-merge-target: false + track-merge-message: true regex: ^master$|^main$ - source-branches: - - develop - - release + source-branches: [] is-source-branch-for: [] tracks-release-branches: false is-release-branch: false @@ -101,17 +101,15 @@ branches: release: mode: ManualDeployment label: beta - increment: None + increment: Minor prevent-increment: of-merged-branch: true when-current-commit-tagged: false track-merge-target: false regex: ^releases?[/-](?.+) source-branches: - - develop - main - support - - release is-source-branch-for: [] tracks-release-branches: false is-release-branch: true @@ -121,23 +119,28 @@ branches: mode: ManualDeployment label: '{BranchName}' increment: Inherit - prevent-increment: {} + prevent-increment: + when-current-commit-tagged: false + track-merge-message: true regex: ^features?[/-](?.+) source-branches: - develop - main - release - - feature - support - hotfix is-source-branch-for: [] + is-main-branch: false pre-release-weight: 30000 pull-request: mode: ContinuousDelivery label: PullRequest increment: Inherit - prevent-increment: {} + prevent-increment: + of-merged-branch: true + when-current-commit-tagged: false label-number-pattern: '[/-](?\d+)' + track-merge-message: true regex: ^(pull|pull\-requests|pr)[/-] source-branches: - develop @@ -156,12 +159,11 @@ branches: when-current-commit-tagged: false regex: ^hotfix(es)?[/-](?.+) source-branches: - - release - main - support - - hotfix is-source-branch-for: [] is-release-branch: true + is-main-branch: false pre-release-weight: 30000 support: label: '' @@ -181,7 +183,8 @@ branches: mode: ManualDeployment label: '{BranchName}' increment: Inherit - prevent-increment: {} + prevent-increment: + when-current-commit-tagged: true regex: (?.+) source-branches: - main @@ -192,6 +195,7 @@ branches: - hotfix - support is-source-branch-for: [] + is-main-branch: false ignore: sha: [] mode: ContinuousDelivery @@ -241,10 +245,10 @@ branches: increment: Patch prevent-increment: of-merged-branch: true - track-merge-target: false + tracks-merge-target: false + tracks-merge-message: true regex: ^master$|^main$ - source-branches: - - release + source-branches: [] is-source-branch-for: [] tracks-release-branches: false is-release-branch: false @@ -253,15 +257,16 @@ branches: release: mode: ManualDeployment label: beta - increment: None + increment: Patch prevent-increment: of-merged-branch: true + when-branch-merged: false when-current-commit-tagged: false track-merge-target: false + track-merge-message: true regex: ^releases?[/-](?.+) source-branches: - main - - release is-source-branch-for: [] tracks-release-branches: false is-release-branch: true @@ -271,17 +276,23 @@ branches: mode: ManualDeployment label: '{BranchName}' increment: Inherit + prevent-increment: + when-current-commit-tagged: false regex: ^features?[/-](?.+) source-branches: - main - release - - feature is-source-branch-for: [] + track-merge-message: true + is-main-branch: false pre-release-weight: 30000 pull-request: mode: ContinuousDelivery label: PullRequest increment: Inherit + prevent-increment: + of-merged-branch: true + when-current-commit-tagged: false label-number-pattern: '[/-](?\d+)' regex: ^(pull|pull\-requests|pr)[/-] source-branches: @@ -289,11 +300,14 @@ branches: - release - feature is-source-branch-for: [] + track-merge-message: true pre-release-weight: 30000 unknown: mode: ManualDeployment label: '{BranchName}' increment: Inherit + prevent-increment: + when-current-commit-tagged: false regex: (?.+) source-branches: - main @@ -301,6 +315,8 @@ branches: - feature - pull-request is-source-branch-for: [] + track-merge-message: false + is-main-branch: false ignore: sha: [] mode: ContinuousDelivery @@ -321,96 +337,11 @@ is-release-branch: false is-main-branch: false ``` -The supported built-in configuration for the `TrunkBased` workflow (`workflow: TrunkBased/v1`) looks like: - -```yaml -assembly-versioning-scheme: MajorMinorPatch -assembly-file-versioning-scheme: MajorMinorPatch -tag-prefix: '[vV]?' -version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* -major-version-bump-message: '\+semver:\s?(breaking|major)' -minor-version-bump-message: '\+semver:\s?(feature|minor)' -patch-version-bump-message: '\+semver:\s?(fix|patch)' -no-bump-message: '\+semver:\s?(none|skip)' -tag-pre-release-weight: 60000 -commit-date-format: yyyy-MM-dd -merge-message-formats: {} -update-build-number: true -semantic-version-format: Strict -strategies: -- TrunkBased -- ConfiguredNextVersion -branches: - main: - mode: ContinuousDeployment - label: '' - increment: Patch - prevent-increment: - of-merged-branch: true - track-merge-target: false - regex: ^master$|^main$ - source-branches: [] - tracks-release-branches: false - is-release-branch: false - is-main-branch: true - pre-release-weight: 55000 - feature: - increment: Minor - regex: ^features?[/-](?.+) - prevent-increment: - when-current-commit-tagged: false - source-branches: - - main - pre-release-weight: 30000 - hotfix: - increment: Patch - regex: ^hotfix(es)?[/-](?.+) - prevent-increment: - when-current-commit-tagged: false - source-branches: - - main - pre-release-weight: 30000 - pull-request: - mode: ContinuousDelivery - label: PullRequest - increment: Inherit - label-number-pattern: '[/-](?\d+)' - regex: ^(pull|pull\-requests|pr)[/-] - source-branches: - - main - pre-release-weight: 30000 - unknown: - increment: Patch - regex: (?.+) - prevent-increment: - when-current-commit-tagged: false - source-branches: - - main - pre-release-weight: 30000 -ignore: - sha: [] -mode: ContinuousDelivery -label: '{BranchName}' -increment: Inherit -prevent-increment: - of-merged-branch: false - when-branch-merged: false - when-current-commit-tagged: true -track-merge-target: false -track-merge-message: true -commit-message-incrementing: Enabled -regex: '' -tracks-release-branches: false -is-release-branch: false -is-main-branch: false - -``` - The details of the available options are as follows: ### workflow -The base template of the configuration to use. Possible values are: GitFlow/v1 or GitHubFlow/v1 or TrunkBased/v1. Defaults to GitFlow/v1 if not set. +The base template of the configuration to use. Possible values are: GitFlow/v1 or GitHubFlow/v1. Defaults to GitFlow/v1 if not set. To create a configuration from scratch without using a base template please specify an empty string. ### next-version diff --git a/src/GitVersion.Configuration/Workflows/GitHubFlow/v1.yml b/src/GitVersion.Configuration/Workflows/GitHubFlow/v1.yml index 7ca7e472d6..b6496b4d1d 100644 --- a/src/GitVersion.Configuration/Workflows/GitHubFlow/v1.yml +++ b/src/GitVersion.Configuration/Workflows/GitHubFlow/v1.yml @@ -91,6 +91,8 @@ branches: source-branches: - main - release + - feature + - pull-request is-source-branch-for: [] track-merge-message: false is-main-branch: false From 75837f7fca65fd1c1aa99b080d55d61203866c18 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Wed, 17 Apr 2024 18:07:30 +0200 Subject: [PATCH 090/544] Refactor unit tests --- ...gnGitFlowWithTrunkBasedVersionStrategy.cs} | 199 +--- ...itHubFlowWithTrunkBasedVersionStrategy.cs} | 199 +--- ...ingTrunkBasedVersionStrategyWithGitFlow.cs | 844 ++++++++++++++++- ...ngTrunkBasedVersionStrategyWithGitFlow2.cs | 861 ------------------ 4 files changed, 840 insertions(+), 1263 deletions(-) rename src/GitVersion.Core.Tests/IntegrationTests/{PhaseGitFlowWithTrunkBasedVersionStrategy.cs => AlignGitFlowWithTrunkBasedVersionStrategy.cs} (98%) rename src/GitVersion.Core.Tests/IntegrationTests/{PhaseGitHubFlowWithTrunkBasedVersionStrategy.cs => AlignGitHubFlowWithTrunkBasedVersionStrategy.cs} (98%) delete mode 100644 src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow2.cs diff --git a/src/GitVersion.Core.Tests/IntegrationTests/PhaseGitFlowWithTrunkBasedVersionStrategy.cs b/src/GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithTrunkBasedVersionStrategy.cs similarity index 98% rename from src/GitVersion.Core.Tests/IntegrationTests/PhaseGitFlowWithTrunkBasedVersionStrategy.cs rename to src/GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithTrunkBasedVersionStrategy.cs index 75f6ef06ba..fb568691dd 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/PhaseGitFlowWithTrunkBasedVersionStrategy.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithTrunkBasedVersionStrategy.cs @@ -5,207 +5,10 @@ namespace GitVersion.Core.Tests.IntegrationTests; [TestFixture] [Parallelizable(ParallelScope.All)] -public class PhaseGitFlowWithTrunkBasedVersionStrategy +public class AlignGitFlowWithTrunkBasedVersionStrategy { private static GitFlowConfigurationBuilder configurationBuilder => GitFlowConfigurationBuilder.New; - [Test] - public void __Just_A_Test_00__() - { - var builder = configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased); - var configuration = builder - .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ - .WithDeploymentMode(DeploymentMode.ManualDeployment) - .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ - .WithIncrement(IncrementStrategy.Inherit) - .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).Build(); - - using var fixture = new EmptyRepositoryFixture("main"); - - fixture.MakeACommit("A"); - fixture.BranchTo("feature/foo"); - fixture.MakeACommit("B"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); - - fixture.BranchTo("feature/bar"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-bar.1+1", configuration); - - fixture.MakeACommit("C"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-bar.1+2", configuration); - } - - [TestCase(true, "release/0.0.0")] - public void __Just_A_Test_01__(bool useTrunkBased, string releaseBranch) - { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) - : configurationBuilder; - var configuration = builder - .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ - .WithDeploymentMode(DeploymentMode.ManualDeployment) - .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ - .WithIncrement(IncrementStrategy.Inherit) - .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ - .WithIncrement(IncrementStrategy.Inherit) - .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).Build(); - - using var fixture = new EmptyRepositoryFixture("main"); - - fixture.MakeACommit("A"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.1-1+1", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); - fixture.BranchTo(releaseBranch); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); - - fixture.MakeACommit("B"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); - - fixture.BranchTo("feature/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); - - fixture.MakeACommit("C"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-foo.1+2", configuration); - - fixture.MakeACommit("D"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-foo.1+3", configuration); - - fixture.ApplyTag("0.0.2-foo.1"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); - - fixture.MakeACommit("E"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); - - fixture.Checkout(releaseBranch); - fixture.BranchTo("pull/2/merge"); - fixture.MergeNoFF("feature/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-PullRequest2.5", configuration); - - fixture.Checkout("feature/foo"); - fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.1+5", configuration); - - fixture.MergeTo("main", removeBranchAfterMerging: true); - - if (useTrunkBased) - { - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-1+6", configuration); - } - else - { - // ❔ expected: "0.0.2-1+6" - fixture.AssertFullSemver("0.0.2-1+6", configuration); - } - - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); - fixture.MakeACommit("F"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.3-1+1", configuration); - } - - [TestCase(true)] - public void __Just_A_Test_02__(bool useTrunkBased) - { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) - : configurationBuilder; - var configuration = builder - .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ - .WithDeploymentMode(DeploymentMode.ManualDeployment) - .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ - .WithIncrement(IncrementStrategy.Minor) - ).Build(); - - using var fixture = new EmptyRepositoryFixture("main"); - - fixture.MakeACommit("A"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-1+1", configuration); - - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); - fixture.MakeACommit("B"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("2.0.0-1+1", configuration); - - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); - fixture.BranchTo("feature/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("2.1.0-foo.1+0", configuration); - - fixture.MakeACommit("C"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("2.1.0-foo.1+1", configuration); - - fixture.ApplyTag("2.1.0-foo.1"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("2.1.0-foo.2+0", configuration); - - fixture.MakeACommit("D"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("2.1.0-foo.2+1", configuration); - - fixture.MakeACommit("E"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("2.1.0-foo.2+2", configuration); - - fixture.MergeTo("main"); - - if (useTrunkBased) - { - // ✅ succeeds as expected - fixture.AssertFullSemver("2.1.0-1+4", configuration); - } - else - { - // ❔ expected: "2.1.0-1+4" - fixture.AssertFullSemver("3.0.0-1+4", configuration); - } - } - /// /// GitHubFlow - Feature branch (Increment inherit on main and inherit on feature) /// diff --git a/src/GitVersion.Core.Tests/IntegrationTests/PhaseGitHubFlowWithTrunkBasedVersionStrategy.cs b/src/GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithTrunkBasedVersionStrategy.cs similarity index 98% rename from src/GitVersion.Core.Tests/IntegrationTests/PhaseGitHubFlowWithTrunkBasedVersionStrategy.cs rename to src/GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithTrunkBasedVersionStrategy.cs index 9b57409ba2..742250c376 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/PhaseGitHubFlowWithTrunkBasedVersionStrategy.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithTrunkBasedVersionStrategy.cs @@ -5,207 +5,10 @@ namespace GitVersion.Core.Tests.IntegrationTests; [TestFixture] [Parallelizable(ParallelScope.All)] -public class PhaseGitHubFlowWithTrunkBasedVersionStrategy +public class AlignGitHubFlowWithTrunkBasedVersionStrategy { private static GitHubFlowConfigurationBuilder configurationBuilder => GitHubFlowConfigurationBuilder.New; - [Test] - public void __Just_A_Test_00__() - { - var builder = configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased); - var configuration = builder - .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ - .WithDeploymentMode(DeploymentMode.ManualDeployment) - .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ - .WithIncrement(IncrementStrategy.Inherit) - .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).Build(); - - using var fixture = new EmptyRepositoryFixture("main"); - - fixture.MakeACommit("A"); - fixture.BranchTo("feature/foo"); - fixture.MakeACommit("B"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); - - fixture.BranchTo("feature/bar"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-bar.1+1", configuration); - - fixture.MakeACommit("C"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-bar.1+2", configuration); - } - - [TestCase(true, "release/0.0.0")] - public void __Just_A_Test_01__(bool useTrunkBased, string releaseBranch) - { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) - : configurationBuilder; - var configuration = builder - .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ - .WithDeploymentMode(DeploymentMode.ManualDeployment) - .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ - .WithIncrement(IncrementStrategy.Inherit) - .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ - .WithIncrement(IncrementStrategy.Inherit) - .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).Build(); - - using var fixture = new EmptyRepositoryFixture("main"); - - fixture.MakeACommit("A"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.1-1+1", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); - fixture.BranchTo(releaseBranch); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); - - fixture.MakeACommit("B"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); - - fixture.BranchTo("feature/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); - - fixture.MakeACommit("C"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-foo.1+2", configuration); - - fixture.MakeACommit("D"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-foo.1+3", configuration); - - fixture.ApplyTag("0.0.2-foo.1"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); - - fixture.MakeACommit("E"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); - - fixture.Checkout(releaseBranch); - fixture.BranchTo("pull/2/merge"); - fixture.MergeNoFF("feature/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-PullRequest2.5", configuration); - - fixture.Checkout("feature/foo"); - fixture.MergeTo(releaseBranch, removeBranchAfterMerging: true); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.1+5", configuration); - - fixture.MergeTo("main", removeBranchAfterMerging: true); - - if (useTrunkBased) - { - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-1+6", configuration); - } - else - { - // ❔ expected: "0.0.2-1+6" - fixture.AssertFullSemver("0.0.2-1+6", configuration); - } - - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); - fixture.MakeACommit("F"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.3-1+1", configuration); - } - - [TestCase(true)] - public void __Just_A_Test_02__(bool useTrunkBased) - { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) - : configurationBuilder; - var configuration = builder - .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ - .WithDeploymentMode(DeploymentMode.ManualDeployment) - .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ - .WithIncrement(IncrementStrategy.Minor) - ).Build(); - - using var fixture = new EmptyRepositoryFixture("main"); - - fixture.MakeACommit("A"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-1+1", configuration); - - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); - fixture.MakeACommit("B"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("2.0.0-1+1", configuration); - - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); - fixture.BranchTo("feature/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("2.1.0-foo.1+0", configuration); - - fixture.MakeACommit("C"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("2.1.0-foo.1+1", configuration); - - fixture.ApplyTag("2.1.0-foo.1"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("2.1.0-foo.2+0", configuration); - - fixture.MakeACommit("D"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("2.1.0-foo.2+1", configuration); - - fixture.MakeACommit("E"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("2.1.0-foo.2+2", configuration); - - fixture.MergeTo("main"); - - if (useTrunkBased) - { - // ✅ succeeds as expected - fixture.AssertFullSemver("2.1.0-1+4", configuration); - } - else - { - // ❔ expected: "2.1.0-1+4" - fixture.AssertFullSemver("3.0.0-1+4", configuration); - } - } - /// /// GitHubFlow - Feature branch (Increment inherit on main and inherit on feature) /// diff --git a/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow.cs b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow.cs index fbbaa9ed63..373d689197 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow.cs @@ -14,7 +14,7 @@ public class CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow /// [TestCase(false)] [TestCase(true)] - public void EnsureFeature1(bool useTrunkBased) + public void EnsureFeature(bool useTrunkBased) { var builder = useTrunkBased ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) @@ -71,7 +71,7 @@ public void EnsureFeature1(bool useTrunkBased) /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeature2(bool useTrunkBased) + public void EnsureMergeMainToFeature(bool useTrunkBased) { var builder = useTrunkBased ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) @@ -181,7 +181,7 @@ public void EnsurePullRequest(bool useTrunkBased) [TestCase(false)] [TestCase(true)] - public void EnsureReleaseAndFeatureBranch1(bool useTrunkBased) + public void EnsureReleaseAndFeatureBranch(bool useTrunkBased) { var builder = useTrunkBased ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) @@ -265,7 +265,7 @@ public void EnsureReleaseAndFeatureBranch1(bool useTrunkBased) [TestCase(false, "release/0.0.2")] [TestCase(true, "release/0.0.2")] [TestCase(true, "release/0.1.0")] - public void EnsureReleaseAndFeatureBranch2(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseAndFeatureBranch(bool useTrunkBased, string releaseBranch) { var builder = useTrunkBased ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) @@ -345,7 +345,7 @@ public void EnsureReleaseAndFeatureBranch2(bool useTrunkBased, string releaseBra /// [TestCase(false)] [TestCase(true)] - public void EnsureReleaseBranch1(bool useTrunkBased) + public void EnsureReleaseBranch(bool useTrunkBased) { var builder = useTrunkBased ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) @@ -426,7 +426,7 @@ public void EnsureReleaseBranch1(bool useTrunkBased) [TestCase(false, "release/0.0.2")] [TestCase(true, "release/0.0.2")] [TestCase(true, "release/0.1.0")] - public void EnsureReleaseBranch2(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranch(bool useTrunkBased, string releaseBranch) { var builder = useTrunkBased ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) @@ -494,4 +494,836 @@ public void EnsureReleaseBranch2(bool useTrunkBased, string releaseBranch) // ✅ succeeds as expected fixture.AssertFullSemver("0.1.1-1", configuration); } + + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureDevelopmentWithDevelopBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.1", configuration); + + fixture.ApplyTag("0.1.0-alpha.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.2", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); + + fixture.Checkout("develop"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.6", configuration); + + fixture.Checkout("feature/foo"); + fixture.Repository.Branches.Remove("pull/2/merge"); + fixture.MergeTo("develop", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.6", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/3/merge"); + fixture.MergeNoFF("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest3.7", configuration); + + fixture.Checkout("develop"); + fixture.Repository.Branches.Remove("pull/3/merge"); + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-7", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureDevelopmentWithDevelopBranchFast(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.0", configuration); + + fixture.BranchTo("feature/foo"); + + if (useTrunkBased) + { + // ❔ expected: "0.1.0-foo.1+0" + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); + } + + fixture.MakeACommit("B"); + + if (useTrunkBased) + { + // ❔ expected: "0.1.0-foo.1+1" + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); + } + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); + + fixture.Checkout("develop"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.4", configuration); + + fixture.Checkout("feature/foo"); + fixture.Repository.Branches.Remove("pull/2/merge"); + fixture.MergeTo("develop", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.4", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/3/merge"); + fixture.MergeNoFF("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest3.5", configuration); + + fixture.Checkout("develop"); + fixture.Repository.Branches.Remove("pull/3/merge"); + fixture.MergeTo("main"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-5", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void EnsureDevelopmentWithMainBranchFast(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); + + fixture.ApplyTag("0.0.2-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-foo.2+2", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest2.4", configuration); + + fixture.Checkout("feature/foo"); + fixture.Repository.Branches.Remove("pull/2/merge"); + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-4", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void EnsureBugFixWithMainBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("hotfix/bar"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.ApplyTag("0.0.2-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+1", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+2", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("hotfix/bar"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest2.4", configuration); + + fixture.Checkout("hotfix/bar"); + fixture.Repository.Branches.Remove("pull/2/merge"); + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-4", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void EnsureBugFixWithDevelopBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.1", configuration); + + fixture.BranchTo("hotfix/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+2", configuration); + + fixture.ApplyTag("0.0.2-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+0", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+1", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+2", configuration); + + fixture.Checkout("develop"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("hotfix/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.5", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/3/merge"); + fixture.MergeNoFF("hotfix/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest3.5", configuration); + + fixture.Checkout("hotfix/foo"); + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-5", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void EnsureBugFixWithDevelopBranchFast(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.0", configuration); + + fixture.BranchTo("hotfix/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); + + fixture.ApplyTag("0.0.2-beta.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+0", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+1", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-beta.2+2", configuration); + + fixture.Checkout("develop"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("hotfix/foo"); + + if (useTrunkBased) + { + // ❔ expected: "0.1.0-PullRequest2.4" + fixture.AssertFullSemver("0.0.2-PullRequest2.4", configuration); + } + else + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.4", configuration); + } + + fixture.Checkout("main"); + fixture.BranchTo("pull/3/merge"); + fixture.MergeNoFF("hotfix/foo"); + + if (useTrunkBased) + { + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-PullRequest3.4", configuration); + } + else + { + // ❔ expected: "0.0.2-PullRequest3.4" + fixture.AssertFullSemver("0.1.0-PullRequest3.4", configuration); + } + + fixture.Checkout("hotfix/foo"); + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.2-4", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.3-1", configuration); + } + + [Test] + public void JustATest() + { + var configuration = configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased).Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + fixture.ApplyTag("0.1.0"); + + for (int i = 0; i < 10; i++) fixture.MakeACommit(); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.10-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureDevelopmentWithReleaseNextBranch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.1", configuration); + + fixture.BranchTo("release/next"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.Checkout("develop"); + fixture.MakeACommit(); + fixture.Checkout("release/next"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+2", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+3", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+4", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); + + fixture.Checkout("release/next"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.7", configuration); + + fixture.Checkout("feature/foo"); + fixture.Repository.Branches.Remove("pull/2/merge"); + fixture.MergeTo("release/next", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+7", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/3/merge"); + fixture.MergeNoFF("release/next"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest3.8", configuration); + + fixture.Checkout("release/next"); + fixture.Repository.Branches.Remove("pull/3/merge"); + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-8", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureDevelopmentWithReleaseNextBranchFast(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.0", configuration); + + fixture.BranchTo("release/next"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.Checkout("develop"); + fixture.MakeACommit(); + fixture.Checkout("release/next"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+2", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+2", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); + + fixture.ApplyTag("0.1.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); + + fixture.Checkout("release/next"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.6", configuration); + + fixture.Checkout("feature/foo"); + fixture.Repository.Branches.Remove("pull/2/merge"); + fixture.MergeTo("release/next", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-beta.1+6", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/3/merge"); + fixture.MergeNoFF("release/next"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest3.7", configuration); + + fixture.Checkout("release/next"); + fixture.Repository.Branches.Remove("pull/3/merge"); + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-7", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.1-1", configuration); + } + + [TestCase(false)] + [TestCase(true)] + public void EnsureFeatureDevelopmentWithRelease100Branch(bool useTrunkBased) + { + var builder = useTrunkBased + ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + : configurationBuilder; + var configuration = builder.Build(); + + using var fixture = new EmptyRepositoryFixture("main"); + + fixture.MakeACommit("A"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.0.1-1", configuration); + + if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + fixture.BranchTo("develop"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.0", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-alpha.1", configuration); + + fixture.BranchTo("release/1.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.Checkout("develop"); + fixture.MakeACommit(); + fixture.Checkout("release/1.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); + + fixture.MakeACommit("B"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); + + fixture.MakeACommit("C"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); + + fixture.BranchTo("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); + + fixture.MakeACommit("D"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.1+4", configuration); + + fixture.ApplyTag("1.0.0-foo.1"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); + + fixture.MakeACommit("E"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); + + fixture.MakeACommit("F"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-foo.2+2", configuration); + + fixture.Checkout("release/1.0.0"); + fixture.BranchTo("pull/2/merge"); + fixture.MergeNoFF("feature/foo"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest2.7", configuration); + + fixture.Checkout("feature/foo"); + fixture.Repository.Branches.Remove("pull/2/merge"); + fixture.MergeTo("release/1.0.0", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-beta.1+7", configuration); + + fixture.Checkout("main"); + fixture.BranchTo("pull/3/merge"); + fixture.MergeNoFF("release/1.0.0"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-PullRequest3.8", configuration); + + fixture.Checkout("release/1.0.0"); + fixture.Repository.Branches.Remove("pull/3/merge"); + fixture.MergeTo("main", removeBranchAfterMerging: true); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.0-8", configuration); + + if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + fixture.MakeACommit("G"); + + // ✅ succeeds as expected + fixture.AssertFullSemver("1.0.1-1", configuration); + } } diff --git a/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow2.cs b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow2.cs deleted file mode 100644 index 05ede021f4..0000000000 --- a/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow2.cs +++ /dev/null @@ -1,861 +0,0 @@ -using GitVersion.Configuration; -using GitVersion.VersionCalculation; - -namespace GitVersion.Core.Tests.IntegrationTests; - -[TestFixture] -[Parallelizable(ParallelScope.All)] -public class CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow2 -{ - private static GitFlowConfigurationBuilder configurationBuilder => GitFlowConfigurationBuilder.New; - - /// - /// GitFlow - PullRequest to Develop branch (Increment patch on main, minor on development and minor on feature branch) - /// - [TestCase(false)] - [TestCase(true)] - public void GitFlowFeatureDevelopmentWithDevelopBranch(bool useTrunkBased) - { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) - : configurationBuilder; - var configuration = builder.Build(); - - using var fixture = new EmptyRepositoryFixture("main"); - - fixture.MakeACommit("A"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.1-1", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); - fixture.BranchTo("develop"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-alpha.0", configuration); - - fixture.MakeACommit("B"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-alpha.1", configuration); - - fixture.ApplyTag("0.1.0-alpha.1"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-alpha.1", configuration); - - fixture.MakeACommit("C"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-alpha.2", configuration); - - fixture.BranchTo("feature/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.1+2", configuration); - - fixture.MakeACommit("D"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); - - fixture.ApplyTag("0.1.0-foo.1"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); - - fixture.MakeACommit("E"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); - - fixture.MakeACommit("F"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); - - fixture.Checkout("develop"); - fixture.BranchTo("pull/2/merge"); - fixture.MergeNoFF("feature/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-PullRequest2.6", configuration); - - fixture.Checkout("feature/foo"); - fixture.Repository.Branches.Remove("pull/2/merge"); - fixture.MergeTo("develop", removeBranchAfterMerging: true); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-alpha.6", configuration); - - fixture.Checkout("main"); - fixture.BranchTo("pull/3/merge"); - fixture.MergeNoFF("develop"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-PullRequest3.7", configuration); - - fixture.Checkout("develop"); - fixture.Repository.Branches.Remove("pull/3/merge"); - fixture.MergeTo("main"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-7", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); - fixture.MakeACommit("G"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.1-1", configuration); - } - - /// - /// GitFlow - PullRequest to Develop branch (Increment patch on main, minor on development and minor on feature branch) - /// - [TestCase(false)] - [TestCase(true)] - public void GitFlowFeatureDevelopmentWithDevelopBranchFast(bool useTrunkBased) - { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) - : configurationBuilder; - var configuration = builder.Build(); - - using var fixture = new EmptyRepositoryFixture("main"); - - fixture.MakeACommit("A"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.1-1", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); - fixture.BranchTo("develop"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-alpha.0", configuration); - - fixture.BranchTo("feature/foo"); - - if (useTrunkBased) - { - // ❔ expected: "0.1.0-foo.1+0" - fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); - } - else - { - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); - } - - fixture.MakeACommit("B"); - - if (useTrunkBased) - { - // ❔ expected: "0.1.0-foo.1+1" - fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); - } - else - { - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); - } - - fixture.ApplyTag("0.1.0-foo.1"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); - - fixture.MakeACommit("C"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); - - fixture.MakeACommit("D"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); - - fixture.Checkout("develop"); - fixture.BranchTo("pull/2/merge"); - fixture.MergeNoFF("feature/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-PullRequest2.4", configuration); - - fixture.Checkout("feature/foo"); - fixture.Repository.Branches.Remove("pull/2/merge"); - fixture.MergeTo("develop", removeBranchAfterMerging: true); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-alpha.4", configuration); - - fixture.Checkout("main"); - fixture.BranchTo("pull/3/merge"); - fixture.MergeNoFF("develop"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-PullRequest3.5", configuration); - - fixture.Checkout("develop"); - fixture.Repository.Branches.Remove("pull/3/merge"); - fixture.MergeTo("main"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-5", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); - fixture.MakeACommit("E"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.1-1", configuration); - } - - /// - /// GitFlow - Feature PullRequest to Main branch (Increment patch on main, minor on development and minor on feature branch) - /// - [TestCase(false)] - [TestCase(true)] - public void GitFlowFeatureDevelopmentWithMainBranchFast(bool useTrunkBased) - { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) - : configurationBuilder; - var configuration = builder.Build(); - - using var fixture = new EmptyRepositoryFixture("main"); - - fixture.MakeACommit("A"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.1-1", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); - fixture.BranchTo("feature/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); - - fixture.MakeACommit("B"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); - - fixture.ApplyTag("0.0.2-foo.1"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-foo.2+0", configuration); - - fixture.MakeACommit("C"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-foo.2+1", configuration); - - fixture.MakeACommit("D"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-foo.2+2", configuration); - - fixture.Checkout("main"); - fixture.BranchTo("pull/2/merge"); - fixture.MergeNoFF("feature/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-PullRequest2.4", configuration); - - fixture.Checkout("feature/foo"); - fixture.Repository.Branches.Remove("pull/2/merge"); - fixture.MergeTo("main", removeBranchAfterMerging: true); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-4", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); - fixture.MakeACommit("F"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.3-1", configuration); - } - - /// - /// GitFlow - Feature PullRequest to Main branch (Increment patch on main, minor on development and minor on feature branch) - /// - [TestCase(false)] - [TestCase(true)] - public void GitFlowBugFixWithMainBranch(bool useTrunkBased) - { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) - : configurationBuilder; - var configuration = builder.Build(); - - using var fixture = new EmptyRepositoryFixture("main"); - - fixture.MakeACommit("A"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.1-1", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); - fixture.BranchTo("hotfix/bar"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); - - fixture.MakeACommit("B"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); - - fixture.ApplyTag("0.0.2-beta.1"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.2+0", configuration); - - fixture.MakeACommit("C"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.2+1", configuration); - - fixture.MakeACommit("D"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.2+2", configuration); - - fixture.Checkout("main"); - fixture.BranchTo("pull/2/merge"); - fixture.MergeNoFF("hotfix/bar"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-PullRequest2.4", configuration); - - fixture.Checkout("hotfix/bar"); - fixture.Repository.Branches.Remove("pull/2/merge"); - fixture.MergeTo("main", removeBranchAfterMerging: true); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-4", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); - fixture.MakeACommit("F"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.3-1", configuration); - } - - /// - /// GitFlow - Feature PullRequest to Main branch (Increment patch on main, minor on development and minor on feature branch) - /// - [TestCase(false)] - [TestCase(true)] - public void GitFlowBugFixWithDevelopBranch(bool useTrunkBased) - { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) - : configurationBuilder; - var configuration = builder.Build(); - - using var fixture = new EmptyRepositoryFixture("main"); - - fixture.MakeACommit("A"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.1-1", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); - fixture.BranchTo("develop"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-alpha.0", configuration); - - fixture.MakeACommit("B"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-alpha.1", configuration); - - fixture.BranchTo("hotfix/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); - - fixture.MakeACommit("C"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.1+2", configuration); - - fixture.ApplyTag("0.0.2-beta.1"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.2+0", configuration); - - fixture.MakeACommit("D"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.2+1", configuration); - - fixture.MakeACommit("E"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.2+2", configuration); - - fixture.Checkout("develop"); - fixture.BranchTo("pull/2/merge"); - fixture.MergeNoFF("hotfix/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-PullRequest2.5", configuration); - - fixture.Checkout("main"); - fixture.BranchTo("pull/3/merge"); - fixture.MergeNoFF("hotfix/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-PullRequest3.5", configuration); - - fixture.Checkout("hotfix/foo"); - fixture.MergeTo("main", removeBranchAfterMerging: true); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-5", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); - fixture.MakeACommit("F"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.3-1", configuration); - } - - /// - /// GitFlow - Feature PullRequest to Main branch (Increment patch on main, minor on development and minor on feature branch) - /// - [TestCase(false)] - [TestCase(true)] - public void GitFlowBugFixWithDevelopBranchFast(bool useTrunkBased) - { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) - : configurationBuilder; - var configuration = builder.Build(); - - using var fixture = new EmptyRepositoryFixture("main"); - - fixture.MakeACommit("A"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.1-1", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); - fixture.BranchTo("develop"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-alpha.0", configuration); - - fixture.BranchTo("hotfix/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.1+0", configuration); - - fixture.MakeACommit("B"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.1+1", configuration); - - fixture.ApplyTag("0.0.2-beta.1"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.2+0", configuration); - - fixture.MakeACommit("C"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.2+1", configuration); - - fixture.MakeACommit("D"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-beta.2+2", configuration); - - fixture.Checkout("develop"); - fixture.BranchTo("pull/2/merge"); - fixture.MergeNoFF("hotfix/foo"); - - if (useTrunkBased) - { - // ❔ expected: "0.1.0-PullRequest2.4" - fixture.AssertFullSemver("0.0.2-PullRequest2.4", configuration); - } - else - { - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-PullRequest2.4", configuration); - } - - fixture.Checkout("main"); - fixture.BranchTo("pull/3/merge"); - fixture.MergeNoFF("hotfix/foo"); - - if (useTrunkBased) - { - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-PullRequest3.4", configuration); - } - else - { - // ❔ expected: "0.0.2-PullRequest3.4" - fixture.AssertFullSemver("0.1.0-PullRequest3.4", configuration); - } - - fixture.Checkout("hotfix/foo"); - fixture.MergeTo("main", removeBranchAfterMerging: true); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-4", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); - fixture.MakeACommit("E"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.3-1", configuration); - } - - [Test] - public void JustATest() - { - var configuration = configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased).Build(); - - using var fixture = new EmptyRepositoryFixture("main"); - - fixture.MakeACommit("A"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.1-1", configuration); - - fixture.ApplyTag("0.1.0"); - - for (int i = 0; i < 10; i++) fixture.MakeACommit(); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.10-1", configuration); - } - - [TestCase(false)] - [TestCase(true)] - public void GitFlowFeatureDevelopmentWithReleaseNextBranch(bool useTrunkBased) - { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) - : configurationBuilder; - var configuration = builder.Build(); - - using var fixture = new EmptyRepositoryFixture("main"); - - fixture.MakeACommit("A"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.1-1", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); - fixture.BranchTo("develop"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-alpha.0", configuration); - - fixture.MakeACommit("B"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-alpha.1", configuration); - - fixture.BranchTo("release/next"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); - - fixture.Checkout("develop"); - fixture.MakeACommit(); - fixture.Checkout("release/next"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); - - fixture.MakeACommit("B"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-beta.1+2", configuration); - - fixture.MakeACommit("C"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-beta.1+3", configuration); - - fixture.BranchTo("feature/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); - - fixture.MakeACommit("D"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.1+4", configuration); - - fixture.ApplyTag("0.1.0-foo.1"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); - - fixture.MakeACommit("E"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); - - fixture.MakeACommit("F"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); - - fixture.Checkout("release/next"); - fixture.BranchTo("pull/2/merge"); - fixture.MergeNoFF("feature/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-PullRequest2.7", configuration); - - fixture.Checkout("feature/foo"); - fixture.Repository.Branches.Remove("pull/2/merge"); - fixture.MergeTo("release/next", removeBranchAfterMerging: true); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-beta.1+7", configuration); - - fixture.Checkout("main"); - fixture.BranchTo("pull/3/merge"); - fixture.MergeNoFF("release/next"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-PullRequest3.8", configuration); - - fixture.Checkout("release/next"); - fixture.Repository.Branches.Remove("pull/3/merge"); - fixture.MergeTo("main", removeBranchAfterMerging: true); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-8", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); - fixture.MakeACommit("G"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.1-1", configuration); - } - - [TestCase(false)] - [TestCase(true)] - public void GitFlowFeatureDevelopmentWithReleaseNextBranchFast(bool useTrunkBased) - { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) - : configurationBuilder; - var configuration = builder.Build(); - - using var fixture = new EmptyRepositoryFixture("main"); - - fixture.MakeACommit("A"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.1-1", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); - fixture.BranchTo("develop"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-alpha.0", configuration); - - fixture.BranchTo("release/next"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); - - fixture.Checkout("develop"); - fixture.MakeACommit(); - fixture.Checkout("release/next"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-beta.1+0", configuration); - - fixture.MakeACommit("B"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-beta.1+1", configuration); - - fixture.MakeACommit("C"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-beta.1+2", configuration); - - fixture.BranchTo("feature/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.1+2", configuration); - - fixture.MakeACommit("D"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.1+3", configuration); - - fixture.ApplyTag("0.1.0-foo.1"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.2+0", configuration); - - fixture.MakeACommit("E"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.2+1", configuration); - - fixture.MakeACommit("F"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.2+2", configuration); - - fixture.Checkout("release/next"); - fixture.BranchTo("pull/2/merge"); - fixture.MergeNoFF("feature/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-PullRequest2.6", configuration); - - fixture.Checkout("feature/foo"); - fixture.Repository.Branches.Remove("pull/2/merge"); - fixture.MergeTo("release/next", removeBranchAfterMerging: true); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-beta.1+6", configuration); - - fixture.Checkout("main"); - fixture.BranchTo("pull/3/merge"); - fixture.MergeNoFF("release/next"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-PullRequest3.7", configuration); - - fixture.Checkout("release/next"); - fixture.Repository.Branches.Remove("pull/3/merge"); - fixture.MergeTo("main", removeBranchAfterMerging: true); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-7", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); - fixture.MakeACommit("G"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.1-1", configuration); - } - - [TestCase(false)] - [TestCase(true)] - public void GitFlowFeatureDevelopmentWithRelease100Branch(bool useTrunkBased) - { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) - : configurationBuilder; - var configuration = builder.Build(); - - using var fixture = new EmptyRepositoryFixture("main"); - - fixture.MakeACommit("A"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.1-1", configuration); - - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); - fixture.BranchTo("develop"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-alpha.0", configuration); - - fixture.MakeACommit("B"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-alpha.1", configuration); - - fixture.BranchTo("release/1.0.0"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); - - fixture.Checkout("develop"); - fixture.MakeACommit(); - fixture.Checkout("release/1.0.0"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+1", configuration); - - fixture.MakeACommit("B"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+2", configuration); - - fixture.MakeACommit("C"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+3", configuration); - - fixture.BranchTo("feature/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-foo.1+3", configuration); - - fixture.MakeACommit("D"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-foo.1+4", configuration); - - fixture.ApplyTag("1.0.0-foo.1"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-foo.2+0", configuration); - - fixture.MakeACommit("E"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-foo.2+1", configuration); - - fixture.MakeACommit("F"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-foo.2+2", configuration); - - fixture.Checkout("release/1.0.0"); - fixture.BranchTo("pull/2/merge"); - fixture.MergeNoFF("feature/foo"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-PullRequest2.7", configuration); - - fixture.Checkout("feature/foo"); - fixture.Repository.Branches.Remove("pull/2/merge"); - fixture.MergeTo("release/1.0.0", removeBranchAfterMerging: true); - - // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-beta.1+7", configuration); - - fixture.Checkout("main"); - fixture.BranchTo("pull/3/merge"); - fixture.MergeNoFF("release/1.0.0"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-PullRequest3.8", configuration); - - fixture.Checkout("release/1.0.0"); - fixture.Repository.Branches.Remove("pull/3/merge"); - fixture.MergeTo("main", removeBranchAfterMerging: true); - - // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-8", configuration); - - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); - fixture.MakeACommit("G"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.1-1", configuration); - } -} From 11cdcb70949111bb6d18e2ec0809d6a33e35fa2d Mon Sep 17 00:00:00 2001 From: HHobeck Date: Thu, 18 Apr 2024 08:05:37 +0200 Subject: [PATCH 091/544] Move TryGetSemanticVersion to ReferenceNameExtensions class --- .../Configuration/ReferenceNameExtensions.cs | 15 +++++++++++++++ src/GitVersion.Core/Git/ReferenceName.cs | 7 ------- src/GitVersion.Core/PublicAPI.Unshipped.txt | 5 +++-- .../TrunkBased/NonTrunk/FirstCommitOnRelease.cs | 2 ++ 4 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 src/GitVersion.Core/Configuration/ReferenceNameExtensions.cs diff --git a/src/GitVersion.Core/Configuration/ReferenceNameExtensions.cs b/src/GitVersion.Core/Configuration/ReferenceNameExtensions.cs new file mode 100644 index 0000000000..6930689188 --- /dev/null +++ b/src/GitVersion.Core/Configuration/ReferenceNameExtensions.cs @@ -0,0 +1,15 @@ +using System.Diagnostics.CodeAnalysis; +using GitVersion.Git; + +namespace GitVersion.Configuration; + +public static class ReferenceNameExtensions +{ + public static bool TryGetSemanticVersion( + this ReferenceName source, [NotNullWhen(true)] out (SemanticVersion Value, string? Name) result, IGitVersionConfiguration configuration) + => source.TryGetSemanticVersion(out result, configuration.VersionInBranchRegex, configuration.TagPrefix, configuration.SemanticVersionFormat); + + public static bool TryGetSemanticVersion( + this ReferenceName source, [NotNullWhen(true)] out (SemanticVersion Value, string? Name) result, EffectiveConfiguration configuration) + => source.TryGetSemanticVersion(out result, configuration.VersionInBranchRegex, configuration.TagPrefix, configuration.SemanticVersionFormat); +} diff --git a/src/GitVersion.Core/Git/ReferenceName.cs b/src/GitVersion.Core/Git/ReferenceName.cs index 4606610a05..630511dda2 100644 --- a/src/GitVersion.Core/Git/ReferenceName.cs +++ b/src/GitVersion.Core/Git/ReferenceName.cs @@ -1,6 +1,5 @@ using System.Diagnostics.CodeAnalysis; using System.Text.RegularExpressions; -using GitVersion.Configuration; using GitVersion.Extensions; using GitVersion.Helpers; @@ -78,12 +77,6 @@ public static ReferenceName FromBranchName(string branchName) public override int GetHashCode() => equalityHelper.GetHashCode(this); public override string ToString() => Friendly; - public bool TryGetSemanticVersion([NotNullWhen(true)] out (SemanticVersion Value, string? Name) result, IGitVersionConfiguration configuration) - => TryGetSemanticVersion(out result, configuration.VersionInBranchRegex, configuration.TagPrefix, configuration.SemanticVersionFormat); - - public bool TryGetSemanticVersion([NotNullWhen(true)] out (SemanticVersion Value, string? Name) result, EffectiveConfiguration configuration) - => TryGetSemanticVersion(out result, configuration.VersionInBranchRegex, configuration.TagPrefix, configuration.SemanticVersionFormat); - public bool TryGetSemanticVersion([NotNullWhen(true)] out (SemanticVersion Value, string? Name) result, Regex versionPatternRegex, string? tagPrefix, diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 3ddd9b1b99..b4d09ebd0f 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -146,6 +146,7 @@ GitVersion.Configuration.IPreventIncrementConfiguration GitVersion.Configuration.IPreventIncrementConfiguration.OfMergedBranch.get -> bool? GitVersion.Configuration.IPreventIncrementConfiguration.WhenBranchMerged.get -> bool? GitVersion.Configuration.IPreventIncrementConfiguration.WhenCurrentCommitTagged.get -> bool? +GitVersion.Configuration.ReferenceNameExtensions GitVersion.ConfigurationInfo GitVersion.ConfigurationInfo.ConfigurationFile -> string? GitVersion.ConfigurationInfo.OverrideConfiguration -> System.Collections.Generic.IReadOnlyDictionary? @@ -285,8 +286,6 @@ GitVersion.Git.ReferenceName.IsPullRequest.get -> bool GitVersion.Git.ReferenceName.IsRemoteBranch.get -> bool GitVersion.Git.ReferenceName.IsTag.get -> bool GitVersion.Git.ReferenceName.ReferenceName(string! canonical) -> void -GitVersion.Git.ReferenceName.TryGetSemanticVersion(out (GitVersion.SemanticVersion! Value, string? Name) result, GitVersion.Configuration.EffectiveConfiguration! configuration) -> bool -GitVersion.Git.ReferenceName.TryGetSemanticVersion(out (GitVersion.SemanticVersion! Value, string? Name) result, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> bool GitVersion.Git.ReferenceName.TryGetSemanticVersion(out (GitVersion.SemanticVersion! Value, string? Name) result, System.Text.RegularExpressions.Regex! versionPatternRegex, string? tagPrefix, GitVersion.SemanticVersionFormat format) -> bool GitVersion.Git.ReferenceName.WithoutOrigin.get -> string! GitVersion.Git.RefSpecDirection @@ -741,6 +740,8 @@ override GitVersion.VersionCalculation.BaseVersionOperator.ToString() -> string! override GitVersion.VersionCalculation.NextVersion.Equals(object? other) -> bool override GitVersion.VersionCalculation.NextVersion.GetHashCode() -> int override GitVersion.VersionCalculation.NextVersion.ToString() -> string! +static GitVersion.Configuration.ReferenceNameExtensions.TryGetSemanticVersion(this GitVersion.Git.ReferenceName! source, out (GitVersion.SemanticVersion! Value, string? Name) result, GitVersion.Configuration.EffectiveConfiguration! configuration) -> bool +static GitVersion.Configuration.ReferenceNameExtensions.TryGetSemanticVersion(this GitVersion.Git.ReferenceName! source, out (GitVersion.SemanticVersion! Value, string? Name) result, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> bool static GitVersion.Extensions.AssemblyVersionsGeneratorExtensions.GetAssemblyFileVersion(this GitVersion.SemanticVersion! sv, GitVersion.Configuration.AssemblyFileVersioningScheme scheme) -> string? static GitVersion.Extensions.AssemblyVersionsGeneratorExtensions.GetAssemblyVersion(this GitVersion.SemanticVersion! sv, GitVersion.Configuration.AssemblyVersioningScheme scheme) -> string? static GitVersion.Extensions.CommonExtensions.NotNull(this T? value, string! name = "") -> T! diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs index f1303da970..4bcc2efe57 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs @@ -1,3 +1,5 @@ +using GitVersion.Configuration; + namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; internal sealed class FirstCommitOnRelease : ITrunkBasedIncrementer From 71ca40642f28930cf56002097b3828e1b5ff6a50 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Fri, 19 Apr 2024 13:04:29 +0200 Subject: [PATCH 092/544] Integrate code review remarks of asbjornu. --- docs/input/docs/reference/configuration.md | 3 +- .../Workflows/TrunkBased/v1.yml | 2 +- .../IntegrationTests/OtherScenarios.cs | 57 +++++++++++++++++++ .../TrunkBased/NonTrunk/CommitOnNonTrunk.cs | 5 +- .../NonTrunk/CommitOnNonTrunkBranchedBase.cs | 4 +- .../CommitOnNonTrunkBranchedToNonTrunk.cs | 3 +- .../CommitOnNonTrunkBranchedToTrunk.cs | 3 +- .../CommitOnNonTrunkWithPreReleaseTagBase.cs | 3 +- .../CommitOnNonTrunkWithStableTagBase.cs | 5 +- .../NonTrunk/FirstCommitOnRelease.cs | 10 ++-- .../NonTrunk/MergeCommitOnNonTrunkBase.cs | 5 +- .../Trunk/CommitOnTrunkBranchedBase.cs | 2 +- .../Trunk/CommitOnTrunkBranchedToNonTrunk.cs | 3 +- .../Trunk/CommitOnTrunkBranchedToTrunk.cs | 3 +- .../LastCommitOnTrunkWithPreReleaseTag.cs | 2 +- .../Trunk/LastCommitOnTrunkWithStableTag.cs | 2 +- .../TrunkBased/TrunkBasedIteration.cs | 7 ++- .../TaggedCommitVersionStrategy.cs | 7 ++- 18 files changed, 99 insertions(+), 27 deletions(-) diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index 6209359ea1..536c5a1299 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -341,8 +341,7 @@ The details of the available options are as follows: ### workflow -The base template of the configuration to use. Possible values are: GitFlow/v1 or GitHubFlow/v1. Defaults to GitFlow/v1 if not set. To create a configuration from scratch without using a base template please specify an empty string. - +The base template of the configuration to use. Possible values are `GitFlow/v1` or `GitHubFlow/v1`. Defaults to `GitFlow/v1` if not set. To create a configuration from scratch without using a base template, please specify an empty string. ### next-version Allows you to bump the next version explicitly. Useful for bumping `main` or a diff --git a/src/GitVersion.Configuration/Workflows/TrunkBased/v1.yml b/src/GitVersion.Configuration/Workflows/TrunkBased/v1.yml index 3bf2f474e4..07f190c332 100644 --- a/src/GitVersion.Configuration/Workflows/TrunkBased/v1.yml +++ b/src/GitVersion.Configuration/Workflows/TrunkBased/v1.yml @@ -21,7 +21,7 @@ branches: increment: Patch prevent-increment: of-merged-branch: true - when-current-commit-tagged: trueS + when-current-commit-tagged: true track-merge-target: false regex: ^master$|^main$ source-branches: [] diff --git a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs index 37dc154eaa..34e7881620 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs @@ -1307,4 +1307,61 @@ public void EnsureVersionAfterMainIsMergedBackToDevelopIsCorrectForGitFlow(bool // ✅ succeeds as expected fixture.AssertFullSemver(semanticVersion, configuration); } + + /// + /// see https://github.com/GitTools/GitVersion/issues/2394 + /// + [Test] + public void EnsureVersionSourceIsSetToTheRightTag() + { + // Arrange + var configuration = GitFlowConfigurationBuilder.New.Build(); + + // Act + using var fixture = new BaseGitFlowRepositoryFixture("0.1.0"); + + fixture.Checkout("main"); + fixture.MergeNoFF("develop"); + fixture.Checkout("develop"); + fixture.MakeACommit("Feature commit 1"); + fixture.BranchTo("release/0.2.0"); + fixture.MakeACommit("Release commit 1"); + fixture.Checkout("main"); + fixture.MergeNoFF("release/0.2.0"); + fixture.ApplyTag("0.2.0"); + var tag = fixture.Repository.Head.Tip; + fixture.Checkout("develop"); + fixture.MergeNoFF("main"); + var version = fixture.GetVersion(configuration); + + // Assert + version.VersionSourceSha.ShouldBe(tag.Sha); + } + + /// + /// see https://github.com/GitTools/GitVersion/issues/3689 + /// + [Test] + public void UnversionedHotfix() + { + var configuration = GitFlowConfigurationBuilder.New.Build(); + + using var fixture = new BaseGitFlowRepositoryFixture("1.2.0"); + + // create hotfix + Commands.Checkout(fixture.Repository, "main"); + Commands.Checkout(fixture.Repository, fixture.Repository.CreateBranch("hotfix/put-out-the-fire")); + fixture.Repository.MakeACommit(); + + fixture.AssertFullSemver("1.2.1-beta.1+1", configuration); + fixture.Repository.MakeACommit(); + fixture.AssertFullSemver("1.2.1-beta.1+2", configuration); + + // Merge hotfix branch to main + Commands.Checkout(fixture.Repository, "main"); + + fixture.Repository.MergeNoFF("hotfix/put-out-the-fire", Generate.SignatureNow()); + + fixture.AssertFullSemver("1.2.1-3", configuration); + } } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs index bd1ac19de9..dea1beb8bc 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs @@ -11,8 +11,9 @@ internal sealed class CommitOnNonTrunk : ITrunkBasedIncrementer // A 58 minutes ago public bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => !commit.HasChildIteration && !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch - && context.SemanticVersion is null; + => !commit.HasChildIteration + && !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch + && context.SemanticVersion is null; public IEnumerable GetIncrements( TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs index e2eac0a217..ff8a6b12ac 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs @@ -6,7 +6,9 @@ namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; internal abstract class CommitOnNonTrunkBranchedBase : ITrunkBasedIncrementer { public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && commit.BranchName != iteration.BranchName && commit.Successor is null; + => !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch + && commit.BranchName != iteration.BranchName + && commit.Successor is null; public virtual IEnumerable GetIncrements( TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToNonTrunk.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToNonTrunk.cs index c6e10bebf3..c870cd297c 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToNonTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToNonTrunk.cs @@ -14,5 +14,6 @@ internal sealed class CommitOnNonTrunkBranchedToNonTrunk : CommitOnNonTrunkBranc // A 58 minutes ago <<-- public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => base.MatchPrecondition(iteration, commit, context) && !(iteration.Configuration.IsMainBranch == true); + => base.MatchPrecondition(iteration, commit, context) + && !iteration.GetEffectiveConfiguration(context.Configuration).IsMainBranch; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToTrunk.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToTrunk.cs index 6ea2c066a6..22ff874504 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToTrunk.cs @@ -14,5 +14,6 @@ internal sealed class CommitOnNonTrunkBranchedToTrunk : CommitOnNonTrunkBranched // A 58 minutes ago <<-- public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => base.MatchPrecondition(iteration, commit, context) && iteration.Configuration.IsMainBranch == true; + => base.MatchPrecondition(iteration, commit, context) + && iteration.GetEffectiveConfiguration(context.Configuration).IsMainBranch; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs index 54a48ead70..ba31a411b7 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs @@ -6,7 +6,8 @@ namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; internal abstract class CommitOnNonTrunkWithPreReleaseTagBase : ITrunkBasedIncrementer { public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => !commit.HasChildIteration && !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch + => !commit.HasChildIteration + && !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && context.SemanticVersion?.IsPreRelease == true; public virtual IEnumerable GetIncrements( diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs index 436f1a8b81..65be56f8ec 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs @@ -6,8 +6,9 @@ namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; internal abstract class CommitOnNonTrunkWithStableTagBase : ITrunkBasedIncrementer { public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && !commit.HasChildIteration - && context.SemanticVersion?.IsPreRelease == false; + => !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch + && !commit.HasChildIteration + && context.SemanticVersion?.IsPreRelease == false; public virtual IEnumerable GetIncrements( TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs index 4bcc2efe57..21bdc365dd 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs @@ -14,10 +14,12 @@ internal sealed class FirstCommitOnRelease : ITrunkBasedIncrementer // A 58 minutes ago (main) public bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => !commit.HasChildIteration && !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch - && commit.GetEffectiveConfiguration(context.Configuration).IsReleaseBranch - && context.SemanticVersion is null && (commit.Predecessor is null - || commit.Predecessor?.BranchName != commit.BranchName); + => !commit.HasChildIteration + && !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch + && commit.GetEffectiveConfiguration(context.Configuration).IsReleaseBranch + && context.SemanticVersion is null + && (commit.Predecessor is null + || commit.Predecessor?.BranchName != commit.BranchName); public IEnumerable GetIncrements( TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs index 92aaea67ad..1479cb33cb 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs @@ -5,8 +5,9 @@ namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; internal abstract class MergeCommitOnNonTrunkBase : ITrunkBasedIncrementer { public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => commit.HasChildIteration && !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch - && context.SemanticVersion is null; + => commit.HasChildIteration + && !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch + && context.SemanticVersion is null; public virtual IEnumerable GetIncrements( TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs index 20dc43edf7..16db6abdf9 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs @@ -15,7 +15,7 @@ public virtual IEnumerable GetIncrements( context.BaseVersionSource = commit.Value; var effectiveConfiguration = iteration.GetEffectiveConfiguration(context.Configuration); - if (iteration.Configuration.IsReleaseBranch == true + if (iteration.GetEffectiveConfiguration(context.Configuration).IsReleaseBranch && iteration.BranchName.TryGetSemanticVersion(out var element, effectiveConfiguration)) { context.AlternativeSemanticVersions.Add(element.Value); diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToNonTrunk.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToNonTrunk.cs index 0edd05aede..cc71df969a 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToNonTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToNonTrunk.cs @@ -14,5 +14,6 @@ internal sealed class CommitOnTrunkBranchedToNonTrunk : CommitOnTrunkBranchedBas // A 58 minutes ago <<-- public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => base.MatchPrecondition(iteration, commit, context) && !(iteration.Configuration.IsMainBranch == true); + => base.MatchPrecondition(iteration, commit, context) + && !iteration.GetEffectiveConfiguration(context.Configuration).IsMainBranch; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToTrunk.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToTrunk.cs index 136fec9d0c..059fe28941 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToTrunk.cs @@ -14,5 +14,6 @@ internal sealed class CommitOnTrunkBranchedToTrunk : CommitOnTrunkBranchedBase // A 58 minutes ago <<-- public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) - => base.MatchPrecondition(iteration, commit, context) && iteration.Configuration.IsMainBranch == true; + => base.MatchPrecondition(iteration, commit, context) + && iteration.GetEffectiveConfiguration(context.Configuration).IsMainBranch; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs index 0a7ce3c916..91e8407ce5 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs @@ -18,7 +18,7 @@ public override IEnumerable GetIncrements( yield return item; } - if (iteration.Configuration.IsMainBranch == true) + if (iteration.GetEffectiveConfiguration(context.Configuration).IsMainBranch) { context.Increment = commit.GetIncrementForcedByBranch(context.Configuration); diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs index af4c5fd05c..16e32a59a6 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs @@ -16,7 +16,7 @@ public override IEnumerable GetIncrements( yield return item; } - if (iteration.Configuration.IsMainBranch == true) + if (iteration.GetEffectiveConfiguration(context.Configuration).IsMainBranch) { context.ForceIncrement = true; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs index 94d5f44454..a0c910ed55 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs @@ -18,7 +18,10 @@ internal record TrunkBasedIteration public EffectiveConfiguration GetEffectiveConfiguration(IGitVersionConfiguration configuration) { - if (effectiveConfiguration is not null) return effectiveConfiguration; + if (this.effectiveConfiguration is not null) + { + return this.effectiveConfiguration; + } IBranchConfiguration branchConfiguration = Configuration; @@ -28,7 +31,7 @@ public EffectiveConfiguration GetEffectiveConfiguration(IGitVersionConfiguration branchConfiguration = branchConfiguration.Inherit(parentConfiguration); } - return effectiveConfiguration = new EffectiveConfiguration(configuration, branchConfiguration); + return this.effectiveConfiguration = new EffectiveConfiguration(configuration, branchConfiguration); } public TrunkBasedIteration? ParentIteration { get; } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs index 82a61aed04..a8a2bd7f61 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs @@ -41,10 +41,11 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); var maxTaggedSemanticVersion = taggedSemanticVersions - .Where(element => !element.Value.IsMatchForBranchSpecificLabel(label)).Max(); + .Where(element => !element.Value.IsMatchForBranchSpecificLabel(label)) + .Max(); - foreach (var semanticVersionWithTag - in taggedSemanticVersions.Where(element => element.Value.IsMatchForBranchSpecificLabel(label))) + var semanticVersionsWithTag = taggedSemanticVersions.Where(element => element.Value.IsMatchForBranchSpecificLabel(label)); + foreach (var semanticVersionWithTag in semanticVersionsWithTag) { var baseVersionSource = semanticVersionWithTag.Tag.Commit; var increment = incrementStrategyFinder.DetermineIncrementedField( From bcaa174b7fec359792a936d94b639884fed956c0 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Mon, 6 May 2024 11:21:22 +0200 Subject: [PATCH 093/544] Integrat code review remarks --- .../TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs | 3 ++- .../TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs index ff8a6b12ac..2fce545d32 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs @@ -16,7 +16,8 @@ public virtual IEnumerable GetIncrements( context.BaseVersionSource = commit.Value; var incrementForcedByBranch = iteration.Configuration.Increment == IncrementStrategy.Inherit - ? commit.GetIncrementForcedByBranch(context.Configuration) : iteration.Configuration.Increment.ToVersionField(); + ? commit.GetIncrementForcedByBranch(context.Configuration) + : iteration.Configuration.Increment.ToVersionField(); context.Increment = context.Increment.Consolidate(incrementForcedByBranch); var iterationEffectiveConfiguration = iteration.GetEffectiveConfiguration(context.Configuration); diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs index 16db6abdf9..ed2a4831e1 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs @@ -7,7 +7,8 @@ internal abstract class CommitOnTrunkBranchedBase : ITrunkBasedIncrementer { public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) => commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch - && commit.BranchName != iteration.BranchName && commit.Successor is null; + && commit.BranchName != iteration.BranchName + && commit.Successor is null; public virtual IEnumerable GetIncrements( TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) @@ -22,7 +23,8 @@ public virtual IEnumerable GetIncrements( } var incrementForcedByBranch = iteration.Configuration.Increment == IncrementStrategy.Inherit - ? commit.GetIncrementForcedByBranch(context.Configuration) : iteration.Configuration.Increment.ToVersionField(); + ? commit.GetIncrementForcedByBranch(context.Configuration) + : iteration.Configuration.Increment.ToVersionField(); context.Increment = incrementForcedByBranch; var iterationEffectiveConfiguration = iteration.GetEffectiveConfiguration(context.Configuration); From 943fc4c9f6004ab6e32386339d87156d332fc178 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Mon, 6 May 2024 14:10:04 +0200 Subject: [PATCH 094/544] Integrate code review remarks --- .../TrunkBased/NonTrunk/FirstCommitOnRelease.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs index 21bdc365dd..65d3d56fb6 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs @@ -2,6 +2,11 @@ namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; +/// +/// This incrementer identifies the first commit on a branch marked with IsReleaseBranch true and appends the version number for +/// instance 1.0.0 (extracted from the branch name) as an alternative semantic version to the context. This information will be +/// used later to bump the version number to a higher value if necessary. +/// internal sealed class FirstCommitOnRelease : ITrunkBasedIncrementer { // B 57 minutes ago (HEAD -> release/1.0.0) From 77663334909cfdeb37547998781dfe8021022289 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Fri, 10 May 2024 14:30:56 +0200 Subject: [PATCH 095/544] Finalizing the configuration of GitFlow and GitHubFlow workflow and align with the Mainline version strategy --- BREAKING_CHANGES.md | 1 + ...ingTrunkBasedVersionStrategyWithGitFlow.cs | 68 ++--------- src/GitVersion.Core/Git/ReferenceName.cs | 11 +- src/GitVersion.Core/MergeMessage.cs | 2 +- src/GitVersion.Core/PublicAPI.Unshipped.txt | 2 + .../TrunkBased/EnrichIncrement.cs | 4 +- .../NonTrunk/FirstCommitOnRelease.cs | 2 +- .../TrunkBased/TrunkBasedCommit.cs | 11 +- .../TrunkBased/TrunkBasedIteration.cs | 12 +- .../TrunkBasedVersionStrategy.cs | 109 +++++++++++------- 10 files changed, 106 insertions(+), 116 deletions(-) diff --git a/BREAKING_CHANGES.md b/BREAKING_CHANGES.md index 51c4d6a1e5..0a63fb574c 100644 --- a/BREAKING_CHANGES.md +++ b/BREAKING_CHANGES.md @@ -56,6 +56,7 @@ * The initialization wizard has been removed. * On the `develop`, `release` and `hotfix` branch the introduced branch related property `prevent-increment.when-current-commit-tagged` has been set to `false` to get the incremented instead of the tagged semantic version. * When setting the "ignore commits before" parameter to a future value, an exception will occur if no commits are found on the current branch. This behavior mimics that of an empty repository. +* In the Git Flow workflows e.g. release/next yields to a patch version. If you have a tag 1.0.0 on main and branch from main to release/1.0.1 branch then the next version number will be 1.1.0. Because in the Git Flow workflow you have an addition IsRelease branch configuration with name hotfix this is expected. If you want the 1.0.1 as a next version you need to branch to hotfix/1.0.1 or hotfix/next and not release. In GitHub Flow workflow it is not a problem because there the increment is set to patch for release branch. ## v5.0.0 diff --git a/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow.cs b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow.cs index 373d689197..071cc53ad9 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow.cs @@ -616,29 +616,13 @@ public void EnsureFeatureDevelopmentWithDevelopBranchFast(bool useTrunkBased) fixture.BranchTo("feature/foo"); - if (useTrunkBased) - { - // ❔ expected: "0.1.0-foo.1+0" - fixture.AssertFullSemver("0.0.2-foo.1+0", configuration); - } - else - { - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); - } + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+0", configuration); fixture.MakeACommit("B"); - if (useTrunkBased) - { - // ❔ expected: "0.1.0-foo.1+1" - fixture.AssertFullSemver("0.0.2-foo.1+1", configuration); - } - else - { - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); - } + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-foo.1+1", configuration); fixture.ApplyTag("0.1.0-foo.1"); @@ -946,31 +930,15 @@ public void EnsureBugFixWithDevelopBranchFast(bool useTrunkBased) fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("hotfix/foo"); - if (useTrunkBased) - { - // ❔ expected: "0.1.0-PullRequest2.4" - fixture.AssertFullSemver("0.0.2-PullRequest2.4", configuration); - } - else - { - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-PullRequest2.4", configuration); - } + // ✅ succeeds as expected + fixture.AssertFullSemver("0.1.0-PullRequest2.4", configuration); fixture.Checkout("main"); fixture.BranchTo("pull/3/merge"); fixture.MergeNoFF("hotfix/foo"); - if (useTrunkBased) - { - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2-PullRequest3.4", configuration); - } - else - { - // ❔ expected: "0.0.2-PullRequest3.4" - fixture.AssertFullSemver("0.1.0-PullRequest3.4", configuration); - } + // ❔ expected: "0.0.2-PullRequest3.4" + fixture.AssertFullSemver("0.1.0-PullRequest3.4", configuration); fixture.Checkout("hotfix/foo"); fixture.MergeTo("main", removeBranchAfterMerging: true); @@ -985,26 +953,6 @@ public void EnsureBugFixWithDevelopBranchFast(bool useTrunkBased) fixture.AssertFullSemver("0.0.3-1", configuration); } - [Test] - public void JustATest() - { - var configuration = configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased).Build(); - - using var fixture = new EmptyRepositoryFixture("main"); - - fixture.MakeACommit("A"); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.1-1", configuration); - - fixture.ApplyTag("0.1.0"); - - for (int i = 0; i < 10; i++) fixture.MakeACommit(); - - // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.10-1", configuration); - } - [TestCase(false)] [TestCase(true)] public void EnsureFeatureDevelopmentWithReleaseNextBranch(bool useTrunkBased) diff --git a/src/GitVersion.Core/Git/ReferenceName.cs b/src/GitVersion.Core/Git/ReferenceName.cs index 630511dda2..4ab5a6ce52 100644 --- a/src/GitVersion.Core/Git/ReferenceName.cs +++ b/src/GitVersion.Core/Git/ReferenceName.cs @@ -54,7 +54,7 @@ public static bool TryParse([NotNullWhen(true)] out ReferenceName? value, string value = new(canonicalName); } - return value != null; + return value is not null; } public static ReferenceName FromBranchName(string branchName) @@ -77,6 +77,15 @@ public static ReferenceName FromBranchName(string branchName) public override int GetHashCode() => equalityHelper.GetHashCode(this); public override string ToString() => Friendly; + public static bool operator ==(ReferenceName? left, ReferenceName? right) + { + if (ReferenceEquals(left, right)) return true; + if (left is null || right is null) return false; + return left.Equals(right); + } + + public static bool operator !=(ReferenceName? left, ReferenceName? right) => !(left == right); + public bool TryGetSemanticVersion([NotNullWhen(true)] out (SemanticVersion Value, string? Name) result, Regex versionPatternRegex, string? tagPrefix, diff --git a/src/GitVersion.Core/MergeMessage.cs b/src/GitVersion.Core/MergeMessage.cs index 36f8cca220..9dfe4416bf 100644 --- a/src/GitVersion.Core/MergeMessage.cs +++ b/src/GitVersion.Core/MergeMessage.cs @@ -100,7 +100,7 @@ public static bool TryParse( mergeMessage = null; var mergedBranch = new MergeMessage(mergeCommit.Message, configuration).MergedBranch; - var isReleaseBranch = mergedBranch != null && configuration.IsReleaseBranch(mergedBranch); + var isReleaseBranch = mergedBranch is not null && configuration.IsReleaseBranch(mergedBranch); var isValidMergeCommit = mergeCommit.IsMergeCommit() || isReleaseBranch; if (isValidMergeCommit) diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index b4d09ebd0f..c022ac619e 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -769,6 +769,8 @@ static GitVersion.Git.BranchCommit.operator !=(GitVersion.Git.BranchCommit left, static GitVersion.Git.BranchCommit.operator ==(GitVersion.Git.BranchCommit left, GitVersion.Git.BranchCommit right) -> bool static GitVersion.Git.CommitExtensions.IsMergeCommit(this GitVersion.Git.ICommit! source) -> bool static GitVersion.Git.ReferenceName.FromBranchName(string! branchName) -> GitVersion.Git.ReferenceName! +static GitVersion.Git.ReferenceName.operator !=(GitVersion.Git.ReferenceName? left, GitVersion.Git.ReferenceName? right) -> bool +static GitVersion.Git.ReferenceName.operator ==(GitVersion.Git.ReferenceName? left, GitVersion.Git.ReferenceName? right) -> bool static GitVersion.Git.ReferenceName.Parse(string! canonicalName) -> GitVersion.Git.ReferenceName! static GitVersion.Git.ReferenceName.TryParse(out GitVersion.Git.ReferenceName? value, string! canonicalName) -> bool static GitVersion.Helpers.Disposable.Create(System.Action! disposer) -> System.IDisposable! diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichIncrement.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichIncrement.cs index 3f9b5992fb..0b1a3d4086 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichIncrement.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichIncrement.cs @@ -11,7 +11,9 @@ public void Enrich(TrunkBasedIteration iteration, TrunkBasedCommit commit, Trunk { var effectiveConfiguration = commit.GetEffectiveConfiguration(context.Configuration); var incrementForcedByBranch = effectiveConfiguration.Increment.ToVersionField(); - var incrementForcedByCommit = GetIncrementForcedByCommit(context, commit.Value, effectiveConfiguration); + var incrementForcedByCommit = commit.IsDummy + ? VersionField.None + : GetIncrementForcedByCommit(context, commit.Value, effectiveConfiguration); commit.Increment = incrementForcedByCommit; context.Increment = context.Increment.Consolidate(incrementForcedByBranch, incrementForcedByCommit); diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs index 65d3d56fb6..94c7803fd0 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs @@ -24,7 +24,7 @@ public bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit co && commit.GetEffectiveConfiguration(context.Configuration).IsReleaseBranch && context.SemanticVersion is null && (commit.Predecessor is null - || commit.Predecessor?.BranchName != commit.BranchName); + || commit.BranchName != commit.Predecessor?.BranchName); public IEnumerable GetIncrements( TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs index ad3f515387..d43c53951e 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs @@ -10,7 +10,7 @@ namespace GitVersion.VersionCalculation.TrunkBased; "HasSuccessor = {" + nameof(HasSuccessor) + "}, HasPredecessor = {" + nameof(HasPredecessor) + "}, " + "HasChildIteration = {" + nameof(HasChildIteration) + "}, Message = {" + nameof(Message) + @"} \}" )] -internal record TrunkBasedCommit(TrunkBasedIteration Iteration, ICommit Value, ReferenceName BranchName, IBranchConfiguration Configuration) +internal record TrunkBasedCommit(TrunkBasedIteration Iteration, ICommit? value, ReferenceName BranchName, IBranchConfiguration Configuration) { public bool IsPredecessorTheLastCommitOnTrunk(IGitVersionConfiguration configuration) => !GetEffectiveConfiguration(configuration).IsMainBranch && Predecessor?.GetEffectiveConfiguration(configuration).IsMainBranch == true; @@ -31,9 +31,12 @@ public bool IsPredecessorTheLastCommitOnTrunk(IGitVersionConfiguration configura public TrunkBasedCommit? Predecessor { get; private set; } - public ICommit Value { get; } = Value.NotNull(); + public ICommit Value => IsDummy ? (Successor?.Value)! : value!; - public string Message => Value.Message; + [MemberNotNullWhen(false, nameof(Value))] + public bool IsDummy => value is null; + + public string Message => IsDummy ? "<>" : Value.Message; public TrunkBasedIteration? ChildIteration { get; private set; } @@ -101,7 +104,7 @@ public void AddSemanticVersions(IEnumerable values) public void AddChildIteration(TrunkBasedIteration iteration) => ChildIteration = iteration.NotNull(); public TrunkBasedCommit Append( - ICommit value, ReferenceName branchName, IBranchConfiguration configuration) + ICommit? value, ReferenceName branchName, IBranchConfiguration configuration) { if (HasPredecessor) throw new InvalidOperationException(); diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs index a0c910ed55..2c53fbeb74 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs +++ b/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs @@ -63,17 +63,21 @@ public TrunkBasedIteration(string id, ReferenceName branchName, IBranchConfigura } public TrunkBasedCommit CreateCommit( - ICommit value, ReferenceName branchName, IBranchConfiguration configuration) + ICommit? value, ReferenceName branchName, IBranchConfiguration configuration) { TrunkBasedCommit commit; if (commits.Count != 0) - commit = commits.Peek().Append(value, branchName, configuration); //, increment); + commit = commits.Peek().Append(value, branchName, configuration); else { - commit = new TrunkBasedCommit(this, value, branchName, configuration); //, increment); + commit = new TrunkBasedCommit(this, value, branchName, configuration); } commits.Push(commit); - commitLookup.Add(value, commit); + + if (value is not null) + { + commitLookup.Add(value, commit); + } return commit; } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs index 4b6efc9697..f42c869d90 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs @@ -105,6 +105,7 @@ public IEnumerable GetBaseVersions(EffectiveBranchConfiguration con IterateOverCommitsRecursive( commitsInReverseOrder: commitsInReverseOrder, iteration: iteration, + targetBranch: configuration.Branch, targetLabel: targetLabel, taggedSemanticVersions: taggedSemanticVersions ); @@ -127,61 +128,69 @@ private TrunkBasedIteration CreateIteration( } private bool IterateOverCommitsRecursive( - IEnumerable commitsInReverseOrder, TrunkBasedIteration iteration, string? targetLabel, + IEnumerable commitsInReverseOrder, TrunkBasedIteration iteration, IBranch targetBranch, string? targetLabel, ILookup taggedSemanticVersions, HashSet? traversedCommits = null) { traversedCommits ??= []; - bool exit = false; + bool returnTrueWhenTheIncrementIsKnown = false; var configuration = iteration.Configuration; var branchName = iteration.BranchName; var branch = repositoryStore.FindBranch(branchName); - Lazy> commitsWasBranchedFromLazy = new( - () => branch is null - ? new Dictionary() - : GetCommitsWasBranchedFrom(branch) + Lazy>> commitsWasBranchedFromLazy = new( + () => branch is null ? new Dictionary>() : GetCommitsWasBranchedFrom(branch) ); foreach (var item in commitsInReverseOrder) { if (!traversedCommits.Add(item)) continue; - if (commitsWasBranchedFromLazy.Value.TryGetValue(item, out var effectiveConfigurationWasBranchedFrom) - && (!(configuration.IsMainBranch == true) || effectiveConfigurationWasBranchedFrom.Value.IsMainBranch == true)) + if (commitsWasBranchedFromLazy.Value.TryGetValue(item, out var effectiveConfigurationsWasBranchedFrom)) { - var excludeBranch = branch; + var effectiveConfigurationWasBranchedFrom = effectiveConfigurationsWasBranchedFrom.First(); - configuration = effectiveConfigurationWasBranchedFrom.Value; - branchName = effectiveConfigurationWasBranchedFrom.Branch.Name; - branch = repositoryStore.FindBranch(branchName); + if (!(configuration.IsMainBranch == true) || effectiveConfigurationWasBranchedFrom.Value.IsMainBranch == true) + { + var excludeBranch = branch; + if (effectiveConfigurationsWasBranchedFrom.Any(element => + !element.Branch.Equals(effectiveConfigurationWasBranchedFrom.Branch) + && element.Branch.Equals(targetBranch))) + { + iteration.CreateCommit(null, targetBranch.Name, Context.Configuration.GetBranchConfiguration(targetBranch)); + } + configuration = effectiveConfigurationWasBranchedFrom.Value; + branchName = effectiveConfigurationWasBranchedFrom.Branch.Name; - commitsWasBranchedFromLazy = new Lazy> - (() => branch is null ? new Dictionary() - : GetCommitsWasBranchedFrom(branch, excludeBranch is null ? Array.Empty() : [excludeBranch]) - ); + branch = repositoryStore.FindBranch(branchName); - TaggedSemanticVersions taggedSemanticVersion = TaggedSemanticVersions.OfBranch; - if ((configuration.TrackMergeTarget ?? Context.Configuration.TrackMergeTarget) == true) - { - taggedSemanticVersion |= TaggedSemanticVersions.OfMergeTargets; - } - if ((configuration.TracksReleaseBranches ?? Context.Configuration.TracksReleaseBranches) == true) - { - taggedSemanticVersion |= TaggedSemanticVersions.OfReleaseBranches; - } - if (!(configuration.IsMainBranch == true || configuration.IsReleaseBranch == true)) - { - taggedSemanticVersion |= TaggedSemanticVersions.OfMainBranches; + commitsWasBranchedFromLazy = new Lazy>> + (() => branch is null ? new Dictionary>() + : GetCommitsWasBranchedFrom(branch, excludeBranch is null ? Array.Empty() : [excludeBranch]) + ); + + TaggedSemanticVersions taggedSemanticVersion = TaggedSemanticVersions.OfBranch; + if ((configuration.TrackMergeTarget ?? Context.Configuration.TrackMergeTarget) == true) + { + taggedSemanticVersion |= TaggedSemanticVersions.OfMergeTargets; + } + if ((configuration.TracksReleaseBranches ?? Context.Configuration.TracksReleaseBranches) == true) + { + taggedSemanticVersion |= TaggedSemanticVersions.OfReleaseBranches; + } + if (!(configuration.IsMainBranch == true || configuration.IsReleaseBranch == true)) + { + taggedSemanticVersion |= TaggedSemanticVersions.OfMainBranches; + } + taggedSemanticVersions = taggedSemanticVersionService.GetTaggedSemanticVersions( + branch: effectiveConfigurationWasBranchedFrom.Branch, + configuration: Context.Configuration, + label: null, + notOlderThan: Context.CurrentCommit.When, + taggedSemanticVersion: taggedSemanticVersion + ); } - taggedSemanticVersions = taggedSemanticVersionService.GetTaggedSemanticVersions( - branch: effectiveConfigurationWasBranchedFrom.Branch, - configuration: Context.Configuration, - label: null, - notOlderThan: Context.CurrentCommit.When, - taggedSemanticVersion: taggedSemanticVersion - ); } var commit = iteration.CreateCommit(item, branchName, configuration); @@ -204,12 +213,12 @@ private bool IterateOverCommitsRecursive( } else { - exit = true; + returnTrueWhenTheIncrementIsKnown = true; } } } - if (exit && configuration.Increment != IncrementStrategy.Inherit) + if (returnTrueWhenTheIncrementIsKnown && configuration.Increment != IncrementStrategy.Inherit) { return true; } @@ -249,6 +258,7 @@ private bool IterateOverCommitsRecursive( var done = IterateOverCommitsRecursive( commitsInReverseOrder: mergedCommitsInReverseOrderLazy.Value, iteration: childIteration, + targetBranch: targetBranch, targetLabel: targetLabel, traversedCommits: traversedCommits, taggedSemanticVersions: taggedSemanticVersions @@ -265,10 +275,10 @@ private bool IterateOverCommitsRecursive( return false; } - private IReadOnlyDictionary GetCommitsWasBranchedFrom( + private IReadOnlyDictionary> GetCommitsWasBranchedFrom( IBranch branch, params IBranch[] excludedBranches) { - Dictionary result = new(); + Dictionary> result = new(); var branchCommits = repositoryStore.FindCommitBranchesBranchedFrom( branch, Context.Configuration, excludedBranches: excludedBranches @@ -281,24 +291,35 @@ private bool IterateOverCommitsRecursive( { var branchConfiguration = Context.Configuration.GetBranchConfiguration(item); - if (result.ContainsKey(branchCommitDictionary[item])) + var key = branchCommitDictionary[item]; + if (result.ContainsKey(key)) { if (branchConfiguration.Increment == IncrementStrategy.Inherit && branchConfiguration.IsMainBranch is null) { throw new InvalidOperationException(); } - if ((branchConfiguration.IsMainBranch ?? Context.Configuration.IsMainBranch) == true - && result[branchCommitDictionary[item]].Configuration.IsMainBranch == false) + if ((branchConfiguration.IsMainBranch ?? Context.Configuration.IsMainBranch) == true) { - result[branchCommitDictionary[item]] = new(item, branchConfiguration); + foreach (var element in result[key].ToArray()) + { + result[key].Add(new(item, branchConfiguration)); + } } } else { - result.Add(key: branchCommitDictionary[item], value: new(item, branchConfiguration)); + result.Add(key: key, value: [new(item, branchConfiguration)]); } } + + // If a main branch existing we need to ensure that it will be present at the first position in the list. + foreach (var item in result) + { + result[item.Key] = item.Value + .OrderByDescending(element => (element.Configuration.IsMainBranch ?? Context.Configuration.IsMainBranch) == true) + .ToList(); + } return result; } From bc6f7bf502d8cc8ef51cb71a3277e0e50e4fd134 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Sun, 12 May 2024 11:06:23 +0200 Subject: [PATCH 096/544] Change breaking change documentation --- BREAKING_CHANGES.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/BREAKING_CHANGES.md b/BREAKING_CHANGES.md index 0a63fb574c..8e8b31dd34 100644 --- a/BREAKING_CHANGES.md +++ b/BREAKING_CHANGES.md @@ -56,7 +56,12 @@ * The initialization wizard has been removed. * On the `develop`, `release` and `hotfix` branch the introduced branch related property `prevent-increment.when-current-commit-tagged` has been set to `false` to get the incremented instead of the tagged semantic version. * When setting the "ignore commits before" parameter to a future value, an exception will occur if no commits are found on the current branch. This behavior mimics that of an empty repository. -* In the Git Flow workflows e.g. release/next yields to a patch version. If you have a tag 1.0.0 on main and branch from main to release/1.0.1 branch then the next version number will be 1.1.0. Because in the Git Flow workflow you have an addition IsRelease branch configuration with name hotfix this is expected. If you want the 1.0.1 as a next version you need to branch to hotfix/1.0.1 or hotfix/next and not release. In GitHub Flow workflow it is not a problem because there the increment is set to patch for release branch. +* On the `GitFlow` workflow the increment property has been changed: + * in branch `release` from `None` to `Minor` and + * in branch `hotfix` from `None` to `Patch` +* On the `GitHubFlow` workflow the increment property has been changed in branch `release` from `None` to `Patch`. +* When creating a branch with name `hotfix/next` (by using the `GitFlow` workflow) or `release/next` (by the `GitHubFlow` workflow) the resulting version will yield to a patched version per default. +* If you have a tag `1.0.0` on `main` and branch from `main` to `release/1.0.1` then the next version number will be `1.1.0` when using the `GitFlow` workflow. This behavior is expected (but different compared to the `GitHubFlow` workflow) because on the `GitFlow` workflow you have an addition branch configuration with name hotfix where `is-release-branch` is set to `true`. That means if you want `1.0.1` as a next version you need to branch to `hotfix/1.0.1` or `hotfix/next`. On the other hand if you use the `GitHubFlow` workflow the next version number will be `1.0.1` because the increment on the `release` branch is set to `Patch`. ## v5.0.0 From 98b212bd1d19ed86f7ea5a6281c03aeae7014b6c Mon Sep 17 00:00:00 2001 From: HHobeck Date: Wed, 22 May 2024 10:34:21 +0200 Subject: [PATCH 097/544] Fix findings, found while investigating the build error --- GitVersion.yml | 2 +- .../IntegrationTests/OtherScenarios.cs | 38 +++++++++++++++++++ .../NextVersionCalculator.cs | 13 ++++--- .../TaggedCommitVersionStrategy.cs | 17 ++++++--- 4 files changed, 58 insertions(+), 12 deletions(-) diff --git a/GitVersion.yml b/GitVersion.yml index 08802473ca..5724cb45f9 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -1,4 +1,4 @@ -assembly-versioning-scheme: MajorMinorPatch +workflow: GitFlow/v1 branches: main: label: beta diff --git a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs index 34e7881620..eecb4da7ba 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs @@ -1364,4 +1364,42 @@ public void UnversionedHotfix() fixture.AssertFullSemver("1.2.1-3", configuration); } + + [Test] + public void AlternativeSemanticVersionsShouldBeConsidered() + { + var configuration = GitFlowConfigurationBuilder.New.Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + fixture.MakeACommit("A"); + fixture.MakeATaggedCommit("4.0.0-beta.14"); + fixture.MakeACommit("B"); + + fixture.AssertFullSemver("4.0.0-3", configuration); + } + + [TestCase(null, "6.0.0-beta.6")] + [TestCase("beta", "6.0.0-beta.21")] + public void AlternativeSemanticVersionsShouldBeConsidered(string? labelOnMain, string version) + { + var configuration = GitFlowConfigurationBuilder.New + .WithLabel(null) + .WithBranch("main", _ => _.WithLabel(labelOnMain)) + .Build(); + + using EmptyRepositoryFixture fixture = new("main"); + + fixture.MakeATaggedCommit("1.0.0"); + fixture.MakeATaggedCommit("4.0.0-beta.14"); + fixture.MakeACommit("A"); + fixture.MakeATaggedCommit("6.0.0-alpha.1"); + fixture.MakeATaggedCommit("6.0.0-alpha.2"); + fixture.MakeATaggedCommit("6.0.0-alpha.3"); + fixture.MakeACommit("B"); + fixture.MakeATaggedCommit("6.0.0-beta.5"); + fixture.MakeACommit("C"); + + fixture.AssertFullSemver(version, configuration); + } } diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs index ede42d8b06..74c4b3a356 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs @@ -162,19 +162,22 @@ private NextVersion CalculateNextVersion(IBranch branch, IGitVersionConfiguratio var maxVersion = nextVersions.Max() ?? throw new GitVersionException("No base versions determined on the current branch."); - var matchingVersionsOnceIncremented = nextVersions - .Where(v => v.BaseVersion.BaseVersionSource != null && v.IncrementedVersion == maxVersion.IncrementedVersion) - .ToList(); + ICommit? latestBaseVersionSource; - if (matchingVersionsOnceIncremented.Count != 0) + var matchingVersionsOnceIncremented = nextVersions + .Where( + element => element.BaseVersion.BaseVersionSource != null + && element.IncrementedVersion == maxVersion.IncrementedVersion + ).ToArray(); + if (matchingVersionsOnceIncremented.Length > 1) { var latestVersion = matchingVersionsOnceIncremented.Aggregate(CompareVersions); latestBaseVersionSource = latestVersion.BaseVersion.BaseVersionSource; maxVersion = latestVersion; log.Info( $"Found multiple base versions which will produce the same SemVer ({maxVersion.IncrementedVersion}), " + - $"taking oldest source for commit counting ({latestVersion.BaseVersion.Source})"); + $"taking latest source for commit counting ({latestVersion.BaseVersion.Source})"); } else { diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs index a8a2bd7f61..3e51ae753b 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs @@ -40,13 +40,16 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur ).SelectMany(elements => elements).Distinct().ToArray(); var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); - var maxTaggedSemanticVersion = taggedSemanticVersions - .Where(element => !element.Value.IsMatchForBranchSpecificLabel(label)) - .Max(); - var semanticVersionsWithTag = taggedSemanticVersions.Where(element => element.Value.IsMatchForBranchSpecificLabel(label)); - foreach (var semanticVersionWithTag in semanticVersionsWithTag) + List alternativeSemanticVersionsWithTag = new(); + foreach (var semanticVersionWithTag in taggedSemanticVersions) { + if (!semanticVersionWithTag.Value.IsMatchForBranchSpecificLabel(label)) + { + alternativeSemanticVersionsWithTag.Add(semanticVersionWithTag); + continue; + } + var baseVersionSource = semanticVersionWithTag.Tag.Commit; var increment = incrementStrategyFinder.DetermineIncrementedField( currentCommit: Context.CurrentCommit, @@ -55,6 +58,7 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur configuration: configuration.Value, label: label ); + yield return new BaseVersion( $"Git tag '{semanticVersionWithTag.Tag.Name.Friendly}'", semanticVersionWithTag.Value, baseVersionSource) { @@ -63,9 +67,10 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur Increment = increment, ForceIncrement = false, Label = label, - AlternativeSemanticVersion = maxTaggedSemanticVersion?.Value + AlternativeSemanticVersion = alternativeSemanticVersionsWithTag.Max()?.Value } }; + alternativeSemanticVersionsWithTag.Clear(); } } } From 9515bc3a9874f82f0498d2386ff7dea18fbdc32b Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 22 May 2024 07:30:32 +0200 Subject: [PATCH 098/544] minor impevements --- src/.run/cli.run.xml | 4 ++-- src/GitVersion.Core/Logging/Log.cs | 20 ++++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/.run/cli.run.xml b/src/.run/cli.run.xml index 93b22def70..b745ee05ee 100644 --- a/src/.run/cli.run.xml +++ b/src/.run/cli.run.xml @@ -1,7 +1,7 @@ - + \ No newline at end of file From 5460bb5f6733cda3e8e4fd3d263df41a15bf0a5e Mon Sep 17 00:00:00 2001 From: HHobeck Date: Mon, 20 May 2024 12:05:00 +0200 Subject: [PATCH 102/544] Rename TrunkBased Version Strategy to Mainline --- BREAKING_CHANGES.md | 6 +- docs/input/docs/reference/configuration.md | 2 +- schemas/6.0/GitVersion.configuration.json | 6 +- .../TrunkBasedConfigurationBuilder.cs | 2 +- .../GitVersionConfiguration.cs | 2 +- .../Workflows/TrunkBased/v1.yml | 2 +- ...lignGitFlowWithMainlineVersionStrategy.cs} | 1542 ++++++++--------- ...nGitHubFlowWithMainlineVersionStrategy.cs} | 1542 ++++++++--------- ...singMainlineVersionStrategyWithGitFlow.cs} | 164 +- ...gMainlineVersionStrategyWithGitHubFlow.cs} | 74 +- ...ngTheBehaviorOfDifferentVersioningModes.cs | 71 +- .../DocumentationSamplesForGitFlow.cs | 14 +- .../DocumentationSamplesForGitHubFlow.cs | 6 +- ...ios.cs => MainlineDevelopmentScenarios.cs} | 6 +- .../IntegrationTests/OtherScenarios.cs | 4 +- .../VersionBumpingScenarios.cs | 2 +- ...lopBranchWithOneCommitMergedToMainWhen.cs} | 16 +- ...edToMainWhenMergedCommitTaggedAsStable.cs} | 16 +- ...ergeCommitFromMainMergedBackToMainWhen.cs} | 16 +- ...tureBranchWithAMergeCommitFromMainWhen.cs} | 24 +- ...ranchWithOneCommitBranchedFromMainWhen.cs} | 24 +- ...FromMainWhenCommitAHasBumpMessageMajor.cs} | 56 +- ...FromMainWhenCommitAHasBumpMessageMinor.cs} | 56 +- ...FromMainWhenCommitAHasBumpMessagePatch.cs} | 56 +- ...dFromMainWhenCommitATaggedAsPreRelease.cs} | 24 +- ...omMainWhenCommitATaggedAsPreReleaseBar.cs} | 24 +- ...omMainWhenCommitATaggedAsPreReleaseFoo.cs} | 24 +- ...nchedFromMainWhenCommitATaggedAsStable.cs} | 24 +- ...FromMainWhenCommitBHasBumpMessageMajor.cs} | 56 +- ...FromMainWhenCommitBHasBumpMessageMinor.cs} | 56 +- ...FromMainWhenCommitBHasBumpMessagePatch.cs} | 56 +- ...dFromMainWhenCommitBTaggedAsPreRelease.cs} | 24 +- ...omMainWhenCommitBTaggedAsPreReleaseBar.cs} | 24 +- ...omMainWhenCommitBTaggedAsPreReleaseFoo.cs} | 24 +- ...nchedFromMainWhenCommitBTaggedAsStable.cs} | 40 +- ...ureBranchWithOneCommitMergedToMainWhen.cs} | 40 +- ...gedToMainWhenCommitBTaggedAsPreRelease.cs} | 40 +- ...ToMainWhenCommitBTaggedAsPreReleaseBar.cs} | 40 +- ...ToMainWhenCommitBTaggedAsPreReleaseFoo.cs} | 40 +- ...tMergedToMainWhenCommitBTaggedAsStable.cs} | 40 +- ...MainWithOneCommitBranchedToFeatureWhen.cs} | 40 +- ...w+GivenAFeatureBranchWithOneCommitWhen.cs} | 12 +- ...OneCommitWhenCommitHasBumpMessageMajor.cs} | 20 +- ...OneCommitWhenCommitHasBumpMessageMinor.cs} | 20 +- ...OneCommitWhenCommitHasBumpMessagePatch.cs} | 20 +- ...hOneCommitWhenCommitTaggedAsPreRelease.cs} | 16 +- ...eCommitWhenCommitTaggedAsPreReleaseBar.cs} | 16 +- ...eCommitWhenCommitTaggedAsPreReleaseFoo.cs} | 16 +- ...hWithOneCommitWhenCommitTaggedAsStable.cs} | 16 +- ...chWithThreeCommitsBranchedFromMainWhen.cs} | 20 +- ...BranchWithThreeCommitsMergedToMainWhen.cs} | 40 +- ...ivenAFeatureBranchWithThreeCommitsWhen.cs} | 12 +- ...anchWithTwoCommitsBranchedFromMainWhen.cs} | 20 +- ...reBranchWithTwoCommitsMergedToMainWhen.cs} | 40 +- ...mmitsWhenFirstCommitTaggedAsPreRelease.cs} | 12 +- ...tsWhenFirstCommitTaggedAsPreReleaseBar.cs} | 12 +- ...tsWhenFirstCommitTaggedAsPreReleaseFoo.cs} | 12 +- ...anchWithOneCommitBranchedToFeatureWhen.cs} | 24 +- ...ToFeatureWhenCommitHasBumpMessageMajor.cs} | 56 +- ...ToFeatureWhenCommitHasBumpMessageMinor.cs} | 56 +- ...ToFeatureWhenCommitHasBumpMessagePatch.cs} | 56 +- ...dToFeatureWhenCommitTaggedAsPreRelease.cs} | 40 +- ...FeatureWhenCommitTaggedAsPreReleaseBar.cs} | 40 +- ...FeatureWhenCommitTaggedAsPreReleaseFoo.cs} | 40 +- ...nchedToFeatureWhenCommitTaggedAsStable.cs} | 40 +- ...Flow+GivenAMainBranchWithOneCommitWhen.cs} | 12 +- ...OneCommitWhenCommitHasBumpMessageMajor.cs} | 20 +- ...OneCommitWhenCommitHasBumpMessageMinor.cs} | 20 +- ...OneCommitWhenCommitHasBumpMessagePatch.cs} | 20 +- ...hOneCommitWhenCommitTaggedAsPreRelease.cs} | 12 +- ...eCommitWhenCommitTaggedAsPreReleaseBar.cs} | 12 +- ...eCommitWhenCommitTaggedAsPreReleaseFoo.cs} | 12 +- ...hWithOneCommitWhenCommitTaggedAsStable.cs} | 12 +- ...w+GivenAMainBranchWithThreeCommitsWhen.cs} | 12 +- ...nchWithTwoCommitsBranchedToFeatureWhen.cs} | 24 +- ...tureWhenFirstCommitHasBumpMessageMajor.cs} | 56 +- ...tureWhenFirstCommitHasBumpMessageMinor.cs} | 56 +- ...tureWhenFirstCommitHasBumpMessagePatch.cs} | 56 +- ...atureWhenFirstCommitTaggedAsPreRelease.cs} | 24 +- ...reWhenFirstCommitTaggedAsPreReleaseBar.cs} | 24 +- ...reWhenFirstCommitTaggedAsPreReleaseFoo.cs} | 24 +- ...ToFeatureWhenFirstCommitTaggedAsStable.cs} | 24 +- ...low+GivenAMainBranchWithTwoCommitsWhen.cs} | 12 +- ...mitsWhenFirstCommitHasBumpMessageMajor.cs} | 20 +- ...mitsWhenFirstCommitHasBumpMessageMinor.cs} | 20 +- ...mitsWhenFirstCommitHasBumpMessagePatch.cs} | 20 +- ...mmitsWhenFirstCommitTaggedAsPreRelease.cs} | 12 +- ...tsWhenFirstCommitTaggedAsPreReleaseBar.cs} | 12 +- ...tsWhenFirstCommitTaggedAsPreReleaseFoo.cs} | 12 +- ...woCommitsWhenFirstCommitTaggedAsStable.cs} | 12 +- ...itsWhenSecondCommitHasBumpMessageMajor.cs} | 20 +- ...itsWhenSecondCommitHasBumpMessageMinor.cs} | 20 +- ...itsWhenSecondCommitHasBumpMessagePatch.cs} | 20 +- ...mitsWhenSecondCommitTaggedAsPreRelease.cs} | 12 +- ...sWhenSecondCommitTaggedAsPreReleaseBar.cs} | 12 +- ...sWhenSecondCommitTaggedAsPreReleaseFoo.cs} | 12 +- ...oCommitsWhenSecondCommitTaggedAsStable.cs} | 12 +- src/GitVersion.Core/PublicAPI.Unshipped.txt | 2 +- .../EnrichIncrement.cs | 8 +- .../EnrichSemanticVersion.cs | 6 +- .../Mainline/IContextPostEnricher.cs | 6 + .../Mainline/IContextPreEnricher.cs | 6 + .../Mainline/IIncrementer.cs | 9 + .../MainlineCommit.cs} | 22 +- .../MainlineContext.cs} | 4 +- .../MainlineIteration.cs} | 28 +- .../NonTrunk/CommitOnNonTrunk.cs | 8 +- .../NonTrunk/CommitOnNonTrunkBranchedBase.cs | 8 +- .../CommitOnNonTrunkBranchedToNonTrunk.cs | 4 +- .../CommitOnNonTrunkBranchedToTrunk.cs | 4 +- .../CommitOnNonTrunkWithPreReleaseTag.cs | 4 +- .../CommitOnNonTrunkWithPreReleaseTagBase.cs | 8 +- .../NonTrunk/CommitOnNonTrunkWithStableTag.cs | 4 +- .../CommitOnNonTrunkWithStableTagBase.cs | 8 +- .../NonTrunk/FirstCommitOnRelease.cs | 8 +- .../LastCommitOnNonTrunkWithPreReleaseTag.cs | 6 +- .../LastCommitOnNonTrunkWithStableTag.cs | 6 +- .../NonTrunk/LastMergeCommitOnNonTrunk.cs | 6 +- .../NonTrunk/MergeCommitOnNonTrunk.cs | 4 +- .../NonTrunk/MergeCommitOnNonTrunkBase.cs | 10 +- .../RemoveIncrement.cs | 6 +- .../Mainline/RemoveSemanticVersion.cs | 6 + .../Trunk/CommitOnTrunk.cs | 8 +- .../Trunk/CommitOnTrunkBranchedBase.cs | 8 +- .../Trunk/CommitOnTrunkBranchedToNonTrunk.cs | 4 +- .../Trunk/CommitOnTrunkBranchedToTrunk.cs | 4 +- .../Trunk/CommitOnTrunkWithPreReleaseTag.cs | 4 +- .../CommitOnTrunkWithPreReleaseTagBase.cs | 8 +- .../Trunk/CommitOnTrunkWithStableTag.cs | 4 +- .../Trunk/CommitOnTrunkWithStableTagBase.cs | 8 +- .../LastCommitOnTrunkWithPreReleaseTag.cs | 6 +- .../Trunk/LastCommitOnTrunkWithStableTag.cs | 6 +- .../Trunk/LastMergeCommitOnTrunk.cs | 4 +- .../Trunk/MergeCommitOnTrunk.cs | 4 +- .../Trunk/MergeCommitOnTrunkBase.cs | 10 +- .../ITrunkBasedContextPostEnricher.cs | 6 - .../ITrunkBasedContextPreEnricher.cs | 6 - .../TrunkBased/ITrunkBasedIncrementer.cs | 9 - .../TrunkBased/RemoveSemanticVersion.cs | 6 - ...Strategy.cs => MainlineVersionStrategy.cs} | 32 +- .../VersionCalculation/VersionStrategies.cs | 2 +- 141 files changed, 2956 insertions(+), 3003 deletions(-) rename src/GitVersion.Core.Tests/IntegrationTests/{AlignGitFlowWithTrunkBasedVersionStrategy.cs => AlignGitFlowWithMainlineVersionStrategy.cs} (91%) rename src/GitVersion.Core.Tests/IntegrationTests/{AlignGitHubFlowWithTrunkBasedVersionStrategy.cs => AlignGitHubFlowWithMainlineVersionStrategy.cs} (91%) rename src/GitVersion.Core.Tests/IntegrationTests/{CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow.cs => CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitFlow.cs} (90%) rename src/GitVersion.Core.Tests/IntegrationTests/{CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitHubFlow.cs => CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitHubFlow.cs} (88%) rename src/GitVersion.Core.Tests/IntegrationTests/{TrunkBasedDevelopmentScenarios.cs => MainlineDevelopmentScenarios.cs} (99%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs => Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs} (90%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs => Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs} (90%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs} (97%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs} (93%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs} (84%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs} (89%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs} (89%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs} (89%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs} (88%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs} (88%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs} (88%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs} (87%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs} (97%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs} (85%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs} (97%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs} (85%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs} (85%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs} (85%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs} (84%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs} (89%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs} (89%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs} (89%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs} (84%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs} (84%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs} (84%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs} (84%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs} (85%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs} (98%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs} (84%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs} (89%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs} (89%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs} (89%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs} (85%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs} (85%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs} (85%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs} (85%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs} (89%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs} (89%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs} (89%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs} (85%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs} (85%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs} (85%) rename src/GitVersion.Core.Tests/{TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs => Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs} (84%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/EnrichIncrement.cs (86%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/EnrichSemanticVersion.cs (76%) create mode 100644 src/GitVersion.Core/VersionCalculation/Mainline/IContextPostEnricher.cs create mode 100644 src/GitVersion.Core/VersionCalculation/Mainline/IContextPreEnricher.cs create mode 100644 src/GitVersion.Core/VersionCalculation/Mainline/IIncrementer.cs rename src/GitVersion.Core/VersionCalculation/{TrunkBased/TrunkBasedCommit.cs => Mainline/MainlineCommit.cs} (81%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased/TrunkBasedContext.cs => Mainline/MainlineContext.cs} (78%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased/TrunkBasedIteration.cs => Mainline/MainlineIteration.cs} (70%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/NonTrunk/CommitOnNonTrunk.cs (80%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/NonTrunk/CommitOnNonTrunkBranchedBase.cs (78%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/NonTrunk/CommitOnNonTrunkBranchedToNonTrunk.cs (74%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/NonTrunk/CommitOnNonTrunkBranchedToTrunk.cs (74%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/NonTrunk/CommitOnNonTrunkWithPreReleaseTag.cs (60%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs (76%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/NonTrunk/CommitOnNonTrunkWithStableTag.cs (59%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs (71%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/NonTrunk/FirstCommitOnRelease.cs (80%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/NonTrunk/LastCommitOnNonTrunkWithPreReleaseTag.cs (75%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/NonTrunk/LastCommitOnNonTrunkWithStableTag.cs (75%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/NonTrunk/LastMergeCommitOnNonTrunk.cs (76%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/NonTrunk/MergeCommitOnNonTrunk.cs (61%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/NonTrunk/MergeCommitOnNonTrunkBase.cs (82%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/RemoveIncrement.cs (53%) create mode 100644 src/GitVersion.Core/VersionCalculation/Mainline/RemoveSemanticVersion.cs rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/Trunk/CommitOnTrunk.cs (78%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/Trunk/CommitOnTrunkBranchedBase.cs (82%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/Trunk/CommitOnTrunkBranchedToNonTrunk.cs (74%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/Trunk/CommitOnTrunkBranchedToTrunk.cs (74%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/Trunk/CommitOnTrunkWithPreReleaseTag.cs (59%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs (61%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/Trunk/CommitOnTrunkWithStableTag.cs (59%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/Trunk/CommitOnTrunkWithStableTagBase.cs (69%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs (83%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/Trunk/LastCommitOnTrunkWithStableTag.cs (79%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/Trunk/LastMergeCommitOnTrunk.cs (59%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/Trunk/MergeCommitOnTrunk.cs (61%) rename src/GitVersion.Core/VersionCalculation/{TrunkBased => Mainline}/Trunk/MergeCommitOnTrunkBase.cs (85%) delete mode 100644 src/GitVersion.Core/VersionCalculation/TrunkBased/ITrunkBasedContextPostEnricher.cs delete mode 100644 src/GitVersion.Core/VersionCalculation/TrunkBased/ITrunkBasedContextPreEnricher.cs delete mode 100644 src/GitVersion.Core/VersionCalculation/TrunkBased/ITrunkBasedIncrementer.cs delete mode 100644 src/GitVersion.Core/VersionCalculation/TrunkBased/RemoveSemanticVersion.cs rename src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/{TrunkBasedVersionStrategy.cs => MainlineVersionStrategy.cs} (92%) diff --git a/BREAKING_CHANGES.md b/BREAKING_CHANGES.md index 8e8b31dd34..807a5698e0 100644 --- a/BREAKING_CHANGES.md +++ b/BREAKING_CHANGES.md @@ -39,8 +39,8 @@ * The `BranchPrefixToTrim` configuration property has been removed. `RegularExpression` is now used to capture named groups instead. * Default `RegularExpression` for feature branches is changed from `^features?[/-]` to `^features?[/-](?.+)` to support using `{BranchName}` out-of-the-box * Default `RegularExpression` for unknown branches is changed from `.*` to `(?.+)` to support using `{BranchName}` out-of-the-box -* The `Mainline` mode and the related implementation has been removed completely. The new `TrunkBased` version strategy should be used instead. -* The `TrunkBased` workflow doesn't support downgrading the increment for calculating the next version. This is the case if e.g. a bump messages has been defined which is lower than the branch increment. +* The `Mainline` mode and the related implementation has been removed completely. The new `Mainline` version strategy should be used instead. +* The `Mainline` version strategy doesn't support downgrading the increment for calculating the next version. This is the case if e.g. a bump messages has been defined which is lower than the branch increment. * The branch related property `is-mainline` in the configuration system has been renamed to `is-main-branch` * The versioning mode has been renamed to deployment mode and consists of following values: * ManualDeployment (previously ContinuousDelivery) @@ -52,7 +52,7 @@ * TaggedCommit * TrackReleaseBranches * VersionInBranchName - * TrunkBased + * Mainline * The initialization wizard has been removed. * On the `develop`, `release` and `hotfix` branch the introduced branch related property `prevent-increment.when-current-commit-tagged` has been set to `false` to get the incremented instead of the tagged semantic version. * When setting the "ignore commits before" parameter to a future value, an exception will occur if no commits are found on the current branch. This behavior mimics that of an empty repository. diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index 536c5a1299..7cf48b6975 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -38,7 +38,7 @@ The following supported workflow configurations are available in GitVersion and - GitFlow (GitFlow/v1) - GitHubFlow (GitHubFlow/v1) -Example of using a `TrunkBased` workflow with a different `tag-prefix`: +Example of using a `GitHubFlow` workflow with a different `tag-prefix`: ```yaml workflow: GitHubFlow/v1 diff --git a/schemas/6.0/GitVersion.configuration.json b/schemas/6.0/GitVersion.configuration.json index ea2cc03003..3f8e0f3290 100644 --- a/schemas/6.0/GitVersion.configuration.json +++ b/schemas/6.0/GitVersion.configuration.json @@ -177,10 +177,10 @@ "type": "string" }, "strategies": { - "description": "Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfiguredNextVersion', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'TrunkBased'.", + "description": "Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfiguredNextVersion', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'Mainline'.", "type": "array", "items": { - "description": "Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfiguredNextVersion', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'TrunkBased'.", + "description": "Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfiguredNextVersion', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'Mainline'.", "enum": [ "None", "Fallback", @@ -189,7 +189,7 @@ "TaggedCommit", "TrackReleaseBranches", "VersionInBranchName", - "TrunkBased" + "Mainline" ] } }, diff --git a/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs index 6ac109ccdb..c6e5047b67 100644 --- a/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs +++ b/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs @@ -20,7 +20,7 @@ private TrunkBasedConfigurationBuilder() SemanticVersionFormat = ConfigurationConstants.DefaultSemanticVersionFormat, VersionStrategies = [ VersionStrategies.ConfiguredNextVersion, - VersionStrategies.TrunkBased + VersionStrategies.Mainline ], TagPrefix = ConfigurationConstants.DefaultTagPrefix, VersionInBranchPattern = ConfigurationConstants.DefaultVersionInBranchPattern, diff --git a/src/GitVersion.Configuration/GitVersionConfiguration.cs b/src/GitVersion.Configuration/GitVersionConfiguration.cs index c0823eecc6..1c2360d3a7 100644 --- a/src/GitVersion.Configuration/GitVersionConfiguration.cs +++ b/src/GitVersion.Configuration/GitVersionConfiguration.cs @@ -129,7 +129,7 @@ public string? NextVersion ? VersionCalculation.VersionStrategies.None : VersionStrategies.Aggregate((one, another) => one | another); [JsonPropertyName("strategies")] - [JsonPropertyDescription($"Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfiguredNextVersion', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'TrunkBased'.")] + [JsonPropertyDescription($"Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfiguredNextVersion', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'Mainline'.")] public VersionStrategies[] VersionStrategies { get; internal set; } = []; [JsonIgnore] diff --git a/src/GitVersion.Configuration/Workflows/TrunkBased/v1.yml b/src/GitVersion.Configuration/Workflows/TrunkBased/v1.yml index 07f190c332..cc9b59a1dd 100644 --- a/src/GitVersion.Configuration/Workflows/TrunkBased/v1.yml +++ b/src/GitVersion.Configuration/Workflows/TrunkBased/v1.yml @@ -12,7 +12,7 @@ merge-message-formats: {} update-build-number: true semantic-version-format: Strict strategies: -- TrunkBased +- Mainline - ConfiguredNextVersion branches: main: diff --git a/src/GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithTrunkBasedVersionStrategy.cs b/src/GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithMainlineVersionStrategy.cs similarity index 91% rename from src/GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithTrunkBasedVersionStrategy.cs rename to src/GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithMainlineVersionStrategy.cs index fb568691dd..3eb66847eb 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithTrunkBasedVersionStrategy.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithMainlineVersionStrategy.cs @@ -5,7 +5,7 @@ namespace GitVersion.Core.Tests.IntegrationTests; [TestFixture] [Parallelizable(ParallelScope.All)] -public class AlignGitFlowWithTrunkBasedVersionStrategy +public class AlignGitFlowWithMainlineVersionStrategy { private static GitFlowConfigurationBuilder configurationBuilder => GitFlowConfigurationBuilder.New; @@ -14,10 +14,10 @@ public class AlignGitFlowWithTrunkBasedVersionStrategy /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -35,13 +35,13 @@ public void EnsureFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -78,10 +78,10 @@ public void EnsureFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -99,13 +99,13 @@ public void EnsureFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool u // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -133,7 +133,7 @@ public void EnsureFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool u fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-2+4", configuration); @@ -150,10 +150,10 @@ public void EnsureFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool u /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -171,13 +171,13 @@ public void EnsureFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -205,7 +205,7 @@ public void EnsureFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.1-1+4", configuration); @@ -222,10 +222,10 @@ public void EnsureFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -243,13 +243,13 @@ public void EnsureFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -277,7 +277,7 @@ public void EnsureFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.1.0-1+4", configuration); @@ -294,10 +294,10 @@ public void EnsureFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -315,13 +315,13 @@ public void EnsureFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -358,10 +358,10 @@ public void EnsureFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -379,7 +379,7 @@ public void EnsureFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool u // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -407,7 +407,7 @@ public void EnsureFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool u fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+4", configuration); @@ -424,10 +424,10 @@ public void EnsureFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool u /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -445,7 +445,7 @@ public void EnsureFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useT // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -473,7 +473,7 @@ public void EnsureFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useT fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+4", configuration); @@ -490,10 +490,10 @@ public void EnsureFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useT /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -511,7 +511,7 @@ public void EnsureFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool use // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -548,10 +548,10 @@ public void EnsureFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool use /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -569,7 +569,7 @@ public void EnsureFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool use // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -606,10 +606,10 @@ public void EnsureFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool use /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -627,7 +627,7 @@ public void EnsureFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool use // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -664,10 +664,10 @@ public void EnsureFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool use /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -685,13 +685,13 @@ public void EnsureFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -728,10 +728,10 @@ public void EnsureFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -749,13 +749,13 @@ public void EnsureFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool use // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -783,7 +783,7 @@ public void EnsureFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool use fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-2+4", configuration); @@ -800,10 +800,10 @@ public void EnsureFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool use /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -821,13 +821,13 @@ public void EnsureFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -864,10 +864,10 @@ public void EnsureFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -885,13 +885,13 @@ public void EnsureFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -928,10 +928,10 @@ public void EnsureFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -949,13 +949,13 @@ public void EnsureFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -992,10 +992,10 @@ public void EnsureFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1013,13 +1013,13 @@ public void EnsureFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1056,10 +1056,10 @@ public void EnsureFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1077,13 +1077,13 @@ public void EnsureFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool use // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1111,7 +1111,7 @@ public void EnsureFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool use fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-2+4", configuration); @@ -1128,10 +1128,10 @@ public void EnsureFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool use /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1149,13 +1149,13 @@ public void EnsureFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1183,7 +1183,7 @@ public void EnsureFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool us fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.2.1-1+4", configuration); @@ -1200,10 +1200,10 @@ public void EnsureFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1221,13 +1221,13 @@ public void EnsureFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1264,10 +1264,10 @@ public void EnsureFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1285,13 +1285,13 @@ public void EnsureFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1328,10 +1328,10 @@ public void EnsureFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1349,13 +1349,13 @@ public void EnsureFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1392,10 +1392,10 @@ public void EnsureFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1413,13 +1413,13 @@ public void EnsureFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool use // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1447,7 +1447,7 @@ public void EnsureFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool use fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-2+4", configuration); @@ -1464,10 +1464,10 @@ public void EnsureFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool use /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1485,13 +1485,13 @@ public void EnsureFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1519,7 +1519,7 @@ public void EnsureFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool us fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.1-1+4", configuration); @@ -1536,10 +1536,10 @@ public void EnsureFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1557,13 +1557,13 @@ public void EnsureFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1591,7 +1591,7 @@ public void EnsureFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool us fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.1.0-1+4", configuration); @@ -1608,10 +1608,10 @@ public void EnsureFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1629,13 +1629,13 @@ public void EnsureFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1672,10 +1672,10 @@ public void EnsureFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1693,7 +1693,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndInheritOnFeatur // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1710,7 +1710,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndInheritOnFeatur // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -1747,10 +1747,10 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndInheritOnFeatur /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1768,7 +1768,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndNoneOnFeatureBr // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1785,7 +1785,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndNoneOnFeatureBr // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -1813,7 +1813,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndNoneOnFeatureBr fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-2+6", configuration); @@ -1830,10 +1830,10 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndNoneOnFeatureBr /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1851,7 +1851,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndPatchOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1868,7 +1868,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndPatchOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -1896,7 +1896,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndPatchOnFeatureB fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.1-1+6", configuration); @@ -1913,10 +1913,10 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndPatchOnFeatureB /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1934,7 +1934,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMinorOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1951,7 +1951,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMinorOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -1979,7 +1979,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMinorOnFeatureB fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.1.0-1+6", configuration); @@ -1996,10 +1996,10 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMinorOnFeatureB /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2017,7 +2017,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMajorOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2034,7 +2034,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMajorOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2071,10 +2071,10 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMajorOnFeatureB /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2092,7 +2092,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBr // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2106,7 +2106,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBr fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -2117,7 +2117,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBr fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); @@ -2149,7 +2149,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBr fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-3+6", configuration); @@ -2166,10 +2166,10 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBr /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2187,7 +2187,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranc // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2201,7 +2201,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranc fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -2212,7 +2212,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranc fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); @@ -2244,7 +2244,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranc fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-3+6", configuration); @@ -2261,10 +2261,10 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranc /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2282,7 +2282,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2296,7 +2296,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBran fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -2307,10 +2307,10 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBran fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MergeTo("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-foo.1+2", configuration); @@ -2323,7 +2323,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBran fixture.MakeACommit("D"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-foo.1+3", configuration); @@ -2360,10 +2360,10 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBran /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2381,7 +2381,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMinorOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2395,7 +2395,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMinorOnFeatureBran fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -2406,7 +2406,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMinorOnFeatureBran fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2443,10 +2443,10 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMinorOnFeatureBran /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2464,7 +2464,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMajorOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2478,7 +2478,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMajorOnFeatureBran fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -2489,7 +2489,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMajorOnFeatureBran fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2526,10 +2526,10 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMajorOnFeatureBran /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2547,7 +2547,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndInheritOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2564,7 +2564,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndInheritOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2601,10 +2601,10 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndInheritOnFeatureB /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2622,7 +2622,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndNoneOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2639,7 +2639,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndNoneOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2667,7 +2667,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndNoneOnFeatureBran fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-2+6", configuration); @@ -2684,10 +2684,10 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndNoneOnFeatureBran /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2705,7 +2705,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndPatchOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2722,7 +2722,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndPatchOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2759,10 +2759,10 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndPatchOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2780,7 +2780,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMinorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2797,7 +2797,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMinorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2834,10 +2834,10 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMinorOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2855,7 +2855,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMajorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2872,7 +2872,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMajorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2909,10 +2909,10 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMajorOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2930,7 +2930,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndInheritOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2947,7 +2947,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndInheritOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2984,10 +2984,10 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndInheritOnFeatureB /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3005,7 +3005,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndNoneOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3022,7 +3022,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndNoneOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3050,7 +3050,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndNoneOnFeatureBran fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-2+6", configuration); @@ -3067,10 +3067,10 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndNoneOnFeatureBran /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3088,7 +3088,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndPatchOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3105,7 +3105,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndPatchOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3133,7 +3133,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndPatchOnFeatureBra fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.2.1-1+6", configuration); @@ -3150,10 +3150,10 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndPatchOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3171,7 +3171,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMinorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3188,7 +3188,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMinorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3225,10 +3225,10 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMinorOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3246,7 +3246,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMajorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3263,7 +3263,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMajorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3300,10 +3300,10 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMajorOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3321,7 +3321,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndInheritOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3338,7 +3338,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndInheritOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3375,10 +3375,10 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndInheritOnFeatureB /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3396,7 +3396,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndNoneOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3413,7 +3413,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndNoneOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3441,7 +3441,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndNoneOnFeatureBran fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-2+6", configuration); @@ -3458,10 +3458,10 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndNoneOnFeatureBran /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3479,7 +3479,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndPatchOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3496,7 +3496,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndPatchOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3524,7 +3524,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndPatchOnFeatureBra fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.1-1+6", configuration); @@ -3541,10 +3541,10 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndPatchOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3562,7 +3562,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMinorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3579,7 +3579,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMinorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3607,7 +3607,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMinorOnFeatureBra fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.1.0-1+6", configuration); @@ -3624,10 +3624,10 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMinorOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3645,7 +3645,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMajorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3662,7 +3662,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMajorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3699,10 +3699,10 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMajorOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3720,7 +3720,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndInheritOnFeatureBranch // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3751,10 +3751,10 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndInheritOnFeatureBranch /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3772,7 +3772,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndNoneOnFeatureBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3787,7 +3787,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndNoneOnFeatureBranch(bo fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-PullRequest2.2", configuration); @@ -3802,7 +3802,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndNoneOnFeatureBranch(bo fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-2+2", configuration); @@ -3819,10 +3819,10 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndNoneOnFeatureBranch(bo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3840,7 +3840,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndPatchOnFeatureBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3855,7 +3855,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndPatchOnFeatureBranch(b fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.1-PullRequest2.2", configuration); @@ -3870,7 +3870,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndPatchOnFeatureBranch(b fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.1-1+2", configuration); @@ -3887,10 +3887,10 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndPatchOnFeatureBranch(b /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3908,7 +3908,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndMinorOnFeatureBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3923,7 +3923,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndMinorOnFeatureBranch(b fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.1.0-PullRequest2.2", configuration); @@ -3938,7 +3938,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndMinorOnFeatureBranch(b fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.1.0-1+2", configuration); @@ -3955,10 +3955,10 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndMinorOnFeatureBranch(b /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3976,7 +3976,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndMajorOnFeatureBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4007,10 +4007,10 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndMajorOnFeatureBranch(b /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4028,7 +4028,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndInheritOnFeatureBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4050,7 +4050,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndInheritOnFeatureBranch(bo fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+2", configuration); @@ -4067,10 +4067,10 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndInheritOnFeatureBranch(bo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4088,7 +4088,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4110,7 +4110,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+2", configuration); @@ -4127,10 +4127,10 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4148,7 +4148,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4170,7 +4170,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+2", configuration); @@ -4187,10 +4187,10 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4208,7 +4208,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4230,7 +4230,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+2", configuration); @@ -4247,10 +4247,10 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4268,7 +4268,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4290,7 +4290,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+2", configuration); @@ -4307,10 +4307,10 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4328,7 +4328,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndInheritOnFeatureBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4359,10 +4359,10 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndInheritOnFeatureBranch(b /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4380,7 +4380,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4395,7 +4395,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-PullRequest2.2", configuration); @@ -4410,7 +4410,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-2+2", configuration); @@ -4427,10 +4427,10 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4448,7 +4448,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndPatchOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4479,10 +4479,10 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndPatchOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4500,7 +4500,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndMinorOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4522,7 +4522,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndMinorOnFeatureBranch(boo fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+2", configuration); @@ -4539,10 +4539,10 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndMinorOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4560,7 +4560,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndMajorOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4582,7 +4582,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndMajorOnFeatureBranch(boo fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+2", configuration); @@ -4599,10 +4599,10 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndMajorOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4620,7 +4620,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndInheritOnFeatureBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4651,10 +4651,10 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndInheritOnFeatureBranch(b /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4672,7 +4672,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4687,7 +4687,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-PullRequest2.2", configuration); @@ -4702,7 +4702,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-2+2", configuration); @@ -4719,10 +4719,10 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4740,7 +4740,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndPatchOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4755,7 +4755,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndPatchOnFeatureBranch(boo fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.1-PullRequest2.2", configuration); @@ -4770,7 +4770,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndPatchOnFeatureBranch(boo fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.1-1+2", configuration); @@ -4787,10 +4787,10 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndPatchOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4808,7 +4808,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndMinorOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4839,10 +4839,10 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndMinorOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4860,7 +4860,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndMajorOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4882,7 +4882,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndMajorOnFeatureBranch(boo fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+2", configuration); @@ -4899,10 +4899,10 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndMajorOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4920,7 +4920,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndInheritOnFeatureBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4951,10 +4951,10 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndInheritOnFeatureBranch(b /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4972,7 +4972,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4987,7 +4987,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-PullRequest2.2", configuration); @@ -5002,7 +5002,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-2+2", configuration); @@ -5019,10 +5019,10 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5040,7 +5040,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndPatchOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -5055,7 +5055,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndPatchOnFeatureBranch(boo fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.1-PullRequest2.2", configuration); @@ -5070,7 +5070,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndPatchOnFeatureBranch(boo fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.1-1+2", configuration); @@ -5087,10 +5087,10 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndPatchOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5108,7 +5108,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -5123,7 +5123,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch(boo fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.1.0-PullRequest2.2", configuration); @@ -5138,7 +5138,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch(boo fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.1.0-1+2", configuration); @@ -5155,10 +5155,10 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5176,7 +5176,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMajorOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -5215,10 +5215,10 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMajorOnFeatureBranch(boo [TestCase(true, IncrementStrategy.Minor)] [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] - public void EnsureReleaseBranchWithIncrementInheritOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + public void EnsureReleaseBranchWithIncrementInheritOnMain(bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5237,7 +5237,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMain(bool useTrunkBased, In // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("release/3.0.0"); // ✅ succeeds as expected @@ -5254,7 +5254,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMain(bool useTrunkBased, In // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("release/3.0.0"); // ✅ succeeds as expected @@ -5285,7 +5285,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMain(bool useTrunkBased, In // ✅ succeeds as expected fixture.AssertFullSemver("3.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + if (!useMainline) fixture.ApplyTag("3.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -5309,10 +5309,10 @@ public void EnsureReleaseBranchWithIncrementInheritOnMain(bool useTrunkBased, In [TestCase(true, "release/1.0.1")] [TestCase(false, "release/1.1.0")] [TestCase(true, "release/1.1.0")] - public void EnsureReleaseBranchWithIncrementInheritOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementInheritOnMainAndInheritOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5331,7 +5331,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndInheritOnReleaseBran // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -5348,7 +5348,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndInheritOnReleaseBran // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -5379,7 +5379,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndInheritOnReleaseBran // ✅ succeeds as expected fixture.AssertFullSemver("3.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + if (!useMainline) fixture.ApplyTag("3.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -5399,10 +5399,10 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndInheritOnReleaseBran [TestCase(true, "release/0.1.0")] [TestCase(false, "release/1.0.0")] [TestCase(true, "release/1.0.0")] - public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5421,7 +5421,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch( // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -5438,7 +5438,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch( // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -5466,7 +5466,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch( fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-2+6", configuration); @@ -5477,7 +5477,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch( fixture.AssertFullSemver("3.0.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("2.0.0"); fixture.ApplyTag("2.0.0"); @@ -5503,10 +5503,10 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch( [TestCase(true, "release/1.0.0")] [TestCase(false, "release/1.0.1")] [TestCase(true, "release/1.0.1")] - public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5525,7 +5525,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -5542,7 +5542,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -5570,7 +5570,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.1-1+6", configuration); @@ -5581,7 +5581,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch fixture.AssertFullSemver("3.0.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("2.0.1"); + if (!useMainline) fixture.ApplyTag("2.0.1"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -5605,10 +5605,10 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch [TestCase(true, "release/1.0.1")] [TestCase(false, "release/1.1.0")] [TestCase(true, "release/1.1.0")] - public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5627,7 +5627,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -5644,7 +5644,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -5672,7 +5672,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.1.0-1+6", configuration); @@ -5683,7 +5683,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch fixture.AssertFullSemver("3.0.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("2.1.0"); + if (!useMainline) fixture.ApplyTag("2.1.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -5707,10 +5707,10 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch [TestCase(true, "release/1.0.1")] [TestCase(false, "release/1.1.0")] [TestCase(true, "release/1.1.0")] - public void EnsureReleaseBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5729,7 +5729,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -5746,7 +5746,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -5777,7 +5777,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("3.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + if (!useMainline) fixture.ApplyTag("3.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -5797,10 +5797,10 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch [TestCase(true, IncrementStrategy.Minor)] [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] - public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5819,7 +5819,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useTrunkBased, Incre // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -5833,7 +5833,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useTrunkBased, Incre fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -5844,7 +5844,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useTrunkBased, Incre fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); @@ -5879,10 +5879,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useTrunkBased, Incre // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("G"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-2+1", configuration); @@ -5901,10 +5901,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useTrunkBased, Incre [TestCase(true, "release/next")] [TestCase(false, "release/0.0.0")] [TestCase(true, "release/0.0.0")] - public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5923,7 +5923,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -5937,7 +5937,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -5948,7 +5948,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); @@ -5980,7 +5980,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-3+6", configuration); @@ -5991,14 +5991,14 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( fixture.AssertFullSemver("0.0.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); } fixture.MakeACommit("G"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-4+1", configuration); @@ -6017,10 +6017,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( [TestCase(true, "release/next")] [TestCase(false, "release/0.0.0")] [TestCase(true, "release/0.0.0")] - public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6039,7 +6039,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6053,7 +6053,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(boo fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -6064,7 +6064,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(boo fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); @@ -6096,7 +6096,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(boo fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-3+6", configuration); @@ -6107,14 +6107,14 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(boo fixture.AssertFullSemver("0.0.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); } fixture.MakeACommit("G"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-4+1", configuration); @@ -6133,10 +6133,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(boo [TestCase(true, "release/next")] [TestCase(false, "release/0.0.0")] [TestCase(true, "release/0.0.0")] - public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6155,7 +6155,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6169,7 +6169,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bo fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -6180,7 +6180,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bo fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); @@ -6215,10 +6215,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MakeACommit("G"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-2+1", configuration); @@ -6237,10 +6237,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bo [TestCase(true, "release/next")] [TestCase(false, "release/0.0.0")] [TestCase(true, "release/0.0.0")] - public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6259,7 +6259,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6273,7 +6273,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bo fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -6284,7 +6284,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bo fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); @@ -6319,10 +6319,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("G"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-2+1", configuration); @@ -6341,10 +6341,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bo [TestCase(true, "release/next")] [TestCase(false, "release/0.0.0")] [TestCase(true, "release/0.0.0")] - public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6363,7 +6363,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6377,7 +6377,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bo fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -6388,7 +6388,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bo fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); @@ -6423,10 +6423,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("G"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-2+1", configuration); @@ -6451,10 +6451,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bo [TestCase(true, IncrementStrategy.Minor)] [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] - public void EnsureReleaseBranchWithIncrementPatchOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + public void EnsureReleaseBranchWithIncrementPatchOnMain(bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6473,7 +6473,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -6490,7 +6490,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo("release/2.0.0"); // ✅ succeeds as expected @@ -6521,7 +6521,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -6539,10 +6539,10 @@ public void EnsureReleaseBranchWithIncrementPatchOnMain(bool useTrunkBased, Incr [TestCase(true, "release/0.0.1")] [TestCase(false, "release/0.0.2")] [TestCase(true, "release/0.0.2")] - public void EnsureReleaseBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6561,7 +6561,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6578,7 +6578,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -6609,7 +6609,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("0.0.3-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.3"); + if (!useMainline) fixture.ApplyTag("0.0.3"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -6625,10 +6625,10 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch [TestCase(true, "release/0.0.0")] [TestCase(false, "release/0.0.1")] [TestCase(true, "release/0.0.1")] - public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6647,7 +6647,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6664,7 +6664,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -6692,7 +6692,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bo fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-2+6", configuration); @@ -6703,7 +6703,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bo fixture.AssertFullSemver("0.0.3-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.2"); fixture.ApplyTag("0.0.2"); @@ -6725,10 +6725,10 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bo [TestCase(true, "release/0.0.1")] [TestCase(false, "release/0.0.2")] [TestCase(true, "release/0.0.2")] - public void EnsureReleaseBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6747,7 +6747,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6764,7 +6764,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -6795,7 +6795,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.0.3-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.3"); + if (!useMainline) fixture.ApplyTag("0.0.3"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -6811,10 +6811,10 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch(b [TestCase(true, "release/0.0.0")] [TestCase(false, "release/0.0.1")] [TestCase(true, "release/0.0.1")] - public void EnsureReleaseBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6833,7 +6833,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6850,7 +6850,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -6881,7 +6881,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -6897,10 +6897,10 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch(b [TestCase(true, "release/0.0.0")] [TestCase(false, "release/0.0.1")] [TestCase(true, "release/0.0.1")] - public void EnsureReleaseBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6919,7 +6919,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6936,7 +6936,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -6967,7 +6967,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -6987,10 +6987,10 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch(b [TestCase(true, IncrementStrategy.Minor)] [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] - public void EnsureReleaseBranchWithIncrementMinorOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + public void EnsureReleaseBranchWithIncrementMinorOnMain(bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7009,7 +7009,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -7026,7 +7026,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo("release/2.0.0"); // ✅ succeeds as expected @@ -7057,7 +7057,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -7075,10 +7075,10 @@ public void EnsureReleaseBranchWithIncrementMinorOnMain(bool useTrunkBased, Incr [TestCase(true, "release/0.0.1")] [TestCase(false, "release/0.2.0")] [TestCase(true, "release/0.2.0")] - public void EnsureReleaseBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7097,7 +7097,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7114,7 +7114,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7145,7 +7145,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("0.3.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.3.0"); + if (!useMainline) fixture.ApplyTag("0.3.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -7163,10 +7163,10 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch [TestCase(true, "release/0.0.1")] [TestCase(false, "release/0.1.0")] [TestCase(true, "release/0.1.0")] - public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7185,7 +7185,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7202,7 +7202,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7230,7 +7230,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bo fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-2+6", configuration); @@ -7241,7 +7241,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bo fixture.AssertFullSemver("0.3.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.2.0"); fixture.ApplyTag("0.2.0"); @@ -7263,10 +7263,10 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bo [TestCase(true, "release/0.0.1")] [TestCase(false, "release/0.1.1")] [TestCase(true, "release/0.1.1")] - public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7285,7 +7285,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7302,7 +7302,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7330,7 +7330,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(b fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.2.1-1+6", configuration); @@ -7341,7 +7341,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(b fixture.AssertFullSemver("0.3.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("0.2.1"); + if (!useMainline) fixture.ApplyTag("0.2.1"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -7359,10 +7359,10 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(b [TestCase(true, "release/0.0.1")] [TestCase(false, "release/0.2.0")] [TestCase(true, "release/0.2.0")] - public void EnsureReleaseBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7381,7 +7381,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7398,7 +7398,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7429,7 +7429,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.3.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.3.0"); + if (!useMainline) fixture.ApplyTag("0.3.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -7449,10 +7449,10 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch(b [TestCase(true, "release/0.1.0")] [TestCase(false, "release/0.1.1")] [TestCase(true, "release/0.1.1")] - public void EnsureReleaseBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7471,7 +7471,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7488,7 +7488,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7519,7 +7519,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -7539,10 +7539,10 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch(b [TestCase(true, IncrementStrategy.Minor)] [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] - public void EnsureReleaseBranchWithIncrementMajorOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + public void EnsureReleaseBranchWithIncrementMajorOnMain(bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7561,7 +7561,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("release/3.0.0"); // ✅ succeeds as expected @@ -7578,7 +7578,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("release/3.0.0"); // ✅ succeeds as expected @@ -7609,7 +7609,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("3.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + if (!useMainline) fixture.ApplyTag("3.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -7633,10 +7633,10 @@ public void EnsureReleaseBranchWithIncrementMajorOnMain(bool useTrunkBased, Incr [TestCase(true, "release/1.1.0")] [TestCase(false, "release/1.1.1")] [TestCase(true, "release/1.1.1")] - public void EnsureReleaseBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7655,7 +7655,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7672,7 +7672,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7703,7 +7703,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("3.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + if (!useMainline) fixture.ApplyTag("3.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -7721,10 +7721,10 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch [TestCase(true, "release/0.0.1")] [TestCase(false, "release/1.0.0")] [TestCase(true, "release/1.0.0")] - public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7743,7 +7743,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7760,7 +7760,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7788,7 +7788,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bo fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-2+6", configuration); @@ -7799,7 +7799,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bo fixture.AssertFullSemver("3.0.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("2.0.0"); fixture.ApplyTag("2.0.0"); @@ -7823,10 +7823,10 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bo [TestCase(true, "release/1.0.0")] [TestCase(false, "release/1.0.1")] [TestCase(true, "release/1.0.1")] - public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7845,7 +7845,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7862,7 +7862,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7890,7 +7890,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(b fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.1-1+6", configuration); @@ -7901,7 +7901,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(b fixture.AssertFullSemver("3.0.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("2.0.1"); + if (!useMainline) fixture.ApplyTag("2.0.1"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -7923,10 +7923,10 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(b [TestCase(true, "release/1.0.1")] [TestCase(false, "release/1.1.0")] [TestCase(true, "release/1.1.0")] - public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7945,7 +7945,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7962,7 +7962,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7990,7 +7990,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(b fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.1.0-1+6", configuration); @@ -8001,7 +8001,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(b fixture.AssertFullSemver("3.0.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("2.1.0"); + if (!useMainline) fixture.ApplyTag("2.1.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -8029,10 +8029,10 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(b [TestCase(true, "release/1.1.0")] [TestCase(false, "release/1.1.1")] [TestCase(true, "release/1.1.1")] - public void EnsureReleaseBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8051,7 +8051,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -8068,7 +8068,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -8099,7 +8099,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("3.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + if (!useMainline) fixture.ApplyTag("3.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -8116,10 +8116,10 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch(b [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMain( - bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8141,7 +8141,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -8195,7 +8195,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -8221,10 +8221,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMain( [TestCase(false, "release/1.0.0")] [TestCase(true, "release/1.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndInheritOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8246,7 +8246,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndInheritOnR // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -8300,7 +8300,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndInheritOnR // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -8324,10 +8324,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndInheritOnR [TestCase(false, "release/1.0.0")] [TestCase(true, "release/1.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8349,7 +8349,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndNoneOnRele // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -8400,7 +8400,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndNoneOnRele fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-2+6", configuration); @@ -8411,7 +8411,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndNoneOnRele fixture.AssertFullSemver("2.0.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("1.0.0"); fixture.ApplyTag("1.0.0"); @@ -8441,10 +8441,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndNoneOnRele [TestCase(false, "release/1.0.1")] [TestCase(true, "release/1.0.1")] public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8466,7 +8466,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndPatchOnRel // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -8517,7 +8517,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndPatchOnRel fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.1-1+6", configuration); @@ -8528,7 +8528,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndPatchOnRel fixture.AssertFullSemver("2.0.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("1.0.1"); + if (!useMainline) fixture.ApplyTag("1.0.1"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -8558,10 +8558,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndPatchOnRel [TestCase(false, "release/1.1.0")] [TestCase(true, "release/1.1.0")] public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8583,7 +8583,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMinorOnRel // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -8634,7 +8634,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMinorOnRel fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.1.0-1+6", configuration); @@ -8645,7 +8645,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMinorOnRel fixture.AssertFullSemver("2.0.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("1.1.0"); + if (!useMainline) fixture.ApplyTag("1.1.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -8679,10 +8679,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMinorOnRel [TestCase(false, "release/2.0.0")] [TestCase(true, "release/2.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8704,7 +8704,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMajorOnRel // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -8758,7 +8758,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMajorOnRel // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -8775,10 +8775,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMajorOnRel [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMain( - bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8800,7 +8800,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -8854,10 +8854,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-2+1", configuration); @@ -8874,10 +8874,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMain( [TestCase(false, "release/0.0.0")] [TestCase(true, "release/0.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8899,7 +8899,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndInheritOnRele // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -8950,7 +8950,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndInheritOnRele fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+6", configuration); @@ -8961,14 +8961,14 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndInheritOnRele fixture.AssertFullSemver("0.0.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); } fixture.MakeACommit("F"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-3+1", configuration); @@ -8985,10 +8985,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndInheritOnRele [TestCase(false, "release/0.0.0")] [TestCase(true, "release/0.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9010,7 +9010,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndNoneOnRelease // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9061,7 +9061,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndNoneOnRelease fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+6", configuration); @@ -9072,14 +9072,14 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndNoneOnRelease fixture.AssertFullSemver("0.0.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); } fixture.MakeACommit("F"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-3+1", configuration); @@ -9097,10 +9097,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndNoneOnRelease [TestCase(true, "release/0.0.0")] [TestCase(true, "release/0.0.1")] public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9122,7 +9122,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndPatchOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9176,10 +9176,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndPatchOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MakeACommit("F"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-2+1", configuration); @@ -9199,10 +9199,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndPatchOnReleas [TestCase(true, "release/0.0.2")] [TestCase(true, "release/0.1.0")] public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9224,7 +9224,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMinorOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9278,10 +9278,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMinorOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("F"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-2+1", configuration); @@ -9304,10 +9304,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMinorOnReleas [TestCase(true, "release/0.2.0")] [TestCase(true, "release/1.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9329,7 +9329,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMajorOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9383,10 +9383,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMajorOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("F"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-2+1", configuration); @@ -9408,10 +9408,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMajorOnReleas [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMain( - bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9433,7 +9433,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -9487,7 +9487,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -9503,10 +9503,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMain( [TestCase(false, "release/0.0.2")] [TestCase(true, "release/0.0.2")] public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9528,7 +9528,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndInheritOnRel // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9582,7 +9582,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndInheritOnRel // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -9596,10 +9596,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndInheritOnRel [TestCase(false, "release/0.0.1")] [TestCase(true, "release/0.0.1")] public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9621,7 +9621,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndNoneOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9672,7 +9672,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndNoneOnReleas fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-2+6", configuration); @@ -9683,7 +9683,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndNoneOnReleas fixture.AssertFullSemver("0.0.2-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.1"); fixture.ApplyTag("0.0.1"); @@ -9703,10 +9703,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndNoneOnReleas [TestCase(false, "release/0.0.2")] [TestCase(true, "release/0.0.2")] public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9728,7 +9728,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndPatchOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9782,7 +9782,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndPatchOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -9797,10 +9797,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndPatchOnRelea [TestCase(true, "release/0.0.1")] [TestCase(true, "release/0.1.0")] public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9822,7 +9822,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMinorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9876,7 +9876,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMinorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -9895,10 +9895,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMinorOnRelea [TestCase(true, "release/0.1.1")] [TestCase(true, "release/1.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9920,7 +9920,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMajorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9974,7 +9974,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMajorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -9991,10 +9991,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMajorOnRelea [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMain( - bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10016,7 +10016,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -10070,7 +10070,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -10092,10 +10092,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMain( [TestCase(false, "release/0.2.0")] [TestCase(true, "release/0.2.0")] public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10117,7 +10117,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndInheritOnRel // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -10171,7 +10171,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndInheritOnRel // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -10189,10 +10189,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndInheritOnRel [TestCase(false, "release/0.1.0")] [TestCase(true, "release/0.1.0")] public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10214,7 +10214,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndNoneOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -10265,7 +10265,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndNoneOnReleas fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-2+6", configuration); @@ -10276,7 +10276,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndNoneOnReleas fixture.AssertFullSemver("0.2.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.1.0"); fixture.ApplyTag("0.1.0"); @@ -10300,10 +10300,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndNoneOnReleas [TestCase(false, "release/0.1.1")] [TestCase(true, "release/0.1.1")] public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10325,7 +10325,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndPatchOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -10376,7 +10376,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndPatchOnRelea fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.1-1+6", configuration); @@ -10387,7 +10387,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndPatchOnRelea fixture.AssertFullSemver("0.2.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("0.1.1"); + if (!useMainline) fixture.ApplyTag("0.1.1"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -10409,10 +10409,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndPatchOnRelea [TestCase(false, "release/0.2.0")] [TestCase(true, "release/0.2.0")] public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10434,7 +10434,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMinorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -10488,7 +10488,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMinorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -10510,10 +10510,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMinorOnRelea [TestCase(false, "release/0.2.0")] [TestCase(true, "release/0.2.0")] public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10535,7 +10535,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMajorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -10589,7 +10589,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMajorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -10606,10 +10606,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMajorOnRelea [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMain( - bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10631,7 +10631,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -10685,7 +10685,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -10711,10 +10711,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMain( [TestCase(false, "release/1.0.0")] [TestCase(true, "release/1.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10736,7 +10736,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndInheritOnRel // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -10790,7 +10790,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndInheritOnRel // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -10814,10 +10814,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndInheritOnRel [TestCase(false, "release/1.0.0")] [TestCase(true, "release/1.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10839,7 +10839,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndNoneOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -10890,7 +10890,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndNoneOnReleas fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-2+6", configuration); @@ -10901,7 +10901,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndNoneOnReleas fixture.AssertFullSemver("2.0.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("1.0.0"); fixture.ApplyTag("1.0.0"); @@ -10931,10 +10931,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndNoneOnReleas [TestCase(false, "release/1.0.1")] [TestCase(true, "release/1.0.1")] public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10956,7 +10956,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndPatchOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -11007,7 +11007,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndPatchOnRelea fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.1-1+6", configuration); @@ -11018,7 +11018,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndPatchOnRelea fixture.AssertFullSemver("2.0.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("1.0.1"); + if (!useMainline) fixture.ApplyTag("1.0.1"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -11048,10 +11048,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndPatchOnRelea [TestCase(false, "release/1.1.0")] [TestCase(true, "release/1.1.0")] public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -11073,7 +11073,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMinorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -11124,7 +11124,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMinorOnRelea fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.1.0-1+6", configuration); @@ -11135,7 +11135,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMinorOnRelea fixture.AssertFullSemver("2.0.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("1.1.0"); + if (!useMainline) fixture.ApplyTag("1.1.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -11169,10 +11169,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMinorOnRelea [TestCase(false, "release/2.0.0")] [TestCase(true, "release/2.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -11194,7 +11194,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMajorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -11248,7 +11248,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMajorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected diff --git a/src/GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithTrunkBasedVersionStrategy.cs b/src/GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithMainlineVersionStrategy.cs similarity index 91% rename from src/GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithTrunkBasedVersionStrategy.cs rename to src/GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithMainlineVersionStrategy.cs index 742250c376..ea81aaf68e 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithTrunkBasedVersionStrategy.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithMainlineVersionStrategy.cs @@ -5,7 +5,7 @@ namespace GitVersion.Core.Tests.IntegrationTests; [TestFixture] [Parallelizable(ParallelScope.All)] -public class AlignGitHubFlowWithTrunkBasedVersionStrategy +public class AlignGitHubFlowWithMainlineVersionStrategy { private static GitHubFlowConfigurationBuilder configurationBuilder => GitHubFlowConfigurationBuilder.New; @@ -14,10 +14,10 @@ public class AlignGitHubFlowWithTrunkBasedVersionStrategy /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -35,13 +35,13 @@ public void EnsureFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -78,10 +78,10 @@ public void EnsureFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -99,13 +99,13 @@ public void EnsureFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool u // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -133,7 +133,7 @@ public void EnsureFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool u fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-2+4", configuration); @@ -150,10 +150,10 @@ public void EnsureFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool u /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -171,13 +171,13 @@ public void EnsureFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -205,7 +205,7 @@ public void EnsureFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.1-1+4", configuration); @@ -222,10 +222,10 @@ public void EnsureFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -243,13 +243,13 @@ public void EnsureFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -277,7 +277,7 @@ public void EnsureFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.1.0-1+4", configuration); @@ -294,10 +294,10 @@ public void EnsureFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -315,13 +315,13 @@ public void EnsureFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -358,10 +358,10 @@ public void EnsureFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -379,7 +379,7 @@ public void EnsureFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool u // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -407,7 +407,7 @@ public void EnsureFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool u fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+4", configuration); @@ -424,10 +424,10 @@ public void EnsureFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool u /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -445,7 +445,7 @@ public void EnsureFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useT // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -473,7 +473,7 @@ public void EnsureFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useT fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+4", configuration); @@ -490,10 +490,10 @@ public void EnsureFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useT /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -511,7 +511,7 @@ public void EnsureFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool use // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -548,10 +548,10 @@ public void EnsureFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool use /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -569,7 +569,7 @@ public void EnsureFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool use // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -606,10 +606,10 @@ public void EnsureFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool use /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -627,7 +627,7 @@ public void EnsureFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool use // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -664,10 +664,10 @@ public void EnsureFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool use /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -685,13 +685,13 @@ public void EnsureFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -728,10 +728,10 @@ public void EnsureFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -749,13 +749,13 @@ public void EnsureFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool use // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -783,7 +783,7 @@ public void EnsureFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool use fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-2+4", configuration); @@ -800,10 +800,10 @@ public void EnsureFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool use /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -821,13 +821,13 @@ public void EnsureFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -864,10 +864,10 @@ public void EnsureFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -885,13 +885,13 @@ public void EnsureFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -928,10 +928,10 @@ public void EnsureFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -949,13 +949,13 @@ public void EnsureFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -992,10 +992,10 @@ public void EnsureFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1013,13 +1013,13 @@ public void EnsureFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1056,10 +1056,10 @@ public void EnsureFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1077,13 +1077,13 @@ public void EnsureFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool use // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1111,7 +1111,7 @@ public void EnsureFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool use fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-2+4", configuration); @@ -1128,10 +1128,10 @@ public void EnsureFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool use /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1149,13 +1149,13 @@ public void EnsureFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1183,7 +1183,7 @@ public void EnsureFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool us fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.2.1-1+4", configuration); @@ -1200,10 +1200,10 @@ public void EnsureFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1221,13 +1221,13 @@ public void EnsureFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1264,10 +1264,10 @@ public void EnsureFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1285,13 +1285,13 @@ public void EnsureFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1328,10 +1328,10 @@ public void EnsureFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1349,13 +1349,13 @@ public void EnsureFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1392,10 +1392,10 @@ public void EnsureFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1413,13 +1413,13 @@ public void EnsureFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool use // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1447,7 +1447,7 @@ public void EnsureFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool use fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-2+4", configuration); @@ -1464,10 +1464,10 @@ public void EnsureFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool use /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1485,13 +1485,13 @@ public void EnsureFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1519,7 +1519,7 @@ public void EnsureFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool us fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.1-1+4", configuration); @@ -1536,10 +1536,10 @@ public void EnsureFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1557,13 +1557,13 @@ public void EnsureFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1591,7 +1591,7 @@ public void EnsureFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool us fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.1.0-1+4", configuration); @@ -1608,10 +1608,10 @@ public void EnsureFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1629,13 +1629,13 @@ public void EnsureFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool us // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1672,10 +1672,10 @@ public void EnsureFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool us /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1693,7 +1693,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndInheritOnFeatur // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1710,7 +1710,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndInheritOnFeatur // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -1747,10 +1747,10 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndInheritOnFeatur /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1768,7 +1768,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndNoneOnFeatureBr // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1785,7 +1785,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndNoneOnFeatureBr // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -1813,7 +1813,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndNoneOnFeatureBr fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-2+6", configuration); @@ -1830,10 +1830,10 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndNoneOnFeatureBr /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1851,7 +1851,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndPatchOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1868,7 +1868,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndPatchOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -1896,7 +1896,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndPatchOnFeatureB fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.1-1+6", configuration); @@ -1913,10 +1913,10 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndPatchOnFeatureB /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -1934,7 +1934,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMinorOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -1951,7 +1951,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMinorOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -1979,7 +1979,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMinorOnFeatureB fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.1.0-1+6", configuration); @@ -1996,10 +1996,10 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMinorOnFeatureB /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2017,7 +2017,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMajorOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2034,7 +2034,7 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMajorOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2071,10 +2071,10 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMajorOnFeatureB /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2092,7 +2092,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBr // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2106,7 +2106,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBr fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -2117,7 +2117,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBr fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); @@ -2149,7 +2149,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBr fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-3+6", configuration); @@ -2166,10 +2166,10 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBr /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2187,7 +2187,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranc // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2201,7 +2201,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranc fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -2212,7 +2212,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranc fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); @@ -2244,7 +2244,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranc fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-3+6", configuration); @@ -2261,10 +2261,10 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranc /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2282,7 +2282,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2296,7 +2296,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBran fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -2307,10 +2307,10 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBran fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MergeTo("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-foo.1+2", configuration); @@ -2323,7 +2323,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBran fixture.MakeACommit("D"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-foo.1+3", configuration); @@ -2360,10 +2360,10 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBran /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2381,7 +2381,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMinorOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2395,7 +2395,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMinorOnFeatureBran fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -2406,7 +2406,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMinorOnFeatureBran fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2443,10 +2443,10 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMinorOnFeatureBran /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2464,7 +2464,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMajorOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2478,7 +2478,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMajorOnFeatureBran fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -2489,7 +2489,7 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMajorOnFeatureBran fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2526,10 +2526,10 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMajorOnFeatureBran /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2547,7 +2547,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndInheritOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2564,7 +2564,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndInheritOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2601,10 +2601,10 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndInheritOnFeatureB /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2622,7 +2622,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndNoneOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2639,7 +2639,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndNoneOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2667,7 +2667,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndNoneOnFeatureBran fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-2+6", configuration); @@ -2684,10 +2684,10 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndNoneOnFeatureBran /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2705,7 +2705,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndPatchOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2722,7 +2722,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndPatchOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2759,10 +2759,10 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndPatchOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2780,7 +2780,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMinorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2797,7 +2797,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMinorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2834,10 +2834,10 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMinorOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2855,7 +2855,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMajorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2872,7 +2872,7 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMajorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2909,10 +2909,10 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMajorOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -2930,7 +2930,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndInheritOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -2947,7 +2947,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndInheritOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -2984,10 +2984,10 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndInheritOnFeatureB /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3005,7 +3005,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndNoneOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3022,7 +3022,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndNoneOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3050,7 +3050,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndNoneOnFeatureBran fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-2+6", configuration); @@ -3067,10 +3067,10 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndNoneOnFeatureBran /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3088,7 +3088,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndPatchOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3105,7 +3105,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndPatchOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3133,7 +3133,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndPatchOnFeatureBra fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.2.1-1+6", configuration); @@ -3150,10 +3150,10 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndPatchOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3171,7 +3171,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMinorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3188,7 +3188,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMinorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3225,10 +3225,10 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMinorOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3246,7 +3246,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMajorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3263,7 +3263,7 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMajorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3300,10 +3300,10 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMajorOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3321,7 +3321,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndInheritOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3338,7 +3338,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndInheritOnFeatureB // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3375,10 +3375,10 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndInheritOnFeatureB /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3396,7 +3396,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndNoneOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3413,7 +3413,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndNoneOnFeatureBran // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3441,7 +3441,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndNoneOnFeatureBran fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-2+6", configuration); @@ -3458,10 +3458,10 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndNoneOnFeatureBran /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3479,7 +3479,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndPatchOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3496,7 +3496,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndPatchOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3524,7 +3524,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndPatchOnFeatureBra fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.1-1+6", configuration); @@ -3541,10 +3541,10 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndPatchOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3562,7 +3562,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMinorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3579,7 +3579,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMinorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3607,7 +3607,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMinorOnFeatureBra fixture.MergeTo("main"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.1.0-1+6", configuration); @@ -3624,10 +3624,10 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMinorOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3645,7 +3645,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMajorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3662,7 +3662,7 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMajorOnFeatureBra // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -3699,10 +3699,10 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMajorOnFeatureBra /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementInheritOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3720,7 +3720,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndInheritOnFeatureBranch // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3751,10 +3751,10 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndInheritOnFeatureBranch /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3772,7 +3772,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndNoneOnFeatureBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3787,7 +3787,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndNoneOnFeatureBranch(bo fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-PullRequest2.2", configuration); @@ -3802,7 +3802,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndNoneOnFeatureBranch(bo fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-2+2", configuration); @@ -3819,10 +3819,10 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndNoneOnFeatureBranch(bo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3840,7 +3840,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndPatchOnFeatureBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3855,7 +3855,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndPatchOnFeatureBranch(b fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.1-PullRequest2.2", configuration); @@ -3870,7 +3870,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndPatchOnFeatureBranch(b fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.1-1+2", configuration); @@ -3887,10 +3887,10 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndPatchOnFeatureBranch(b /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3908,7 +3908,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndMinorOnFeatureBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -3923,7 +3923,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndMinorOnFeatureBranch(b fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.1.0-PullRequest2.2", configuration); @@ -3938,7 +3938,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndMinorOnFeatureBranch(b fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.1.0-1+2", configuration); @@ -3955,10 +3955,10 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndMinorOnFeatureBranch(b /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -3976,7 +3976,7 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndMajorOnFeatureBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4007,10 +4007,10 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndMajorOnFeatureBranch(b /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4028,7 +4028,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndInheritOnFeatureBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4050,7 +4050,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndInheritOnFeatureBranch(bo fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+2", configuration); @@ -4067,10 +4067,10 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndInheritOnFeatureBranch(bo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4088,7 +4088,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4110,7 +4110,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+2", configuration); @@ -4127,10 +4127,10 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4148,7 +4148,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4170,7 +4170,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+2", configuration); @@ -4187,10 +4187,10 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4208,7 +4208,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4230,7 +4230,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+2", configuration); @@ -4247,10 +4247,10 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4268,7 +4268,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4290,7 +4290,7 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+2", configuration); @@ -4307,10 +4307,10 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4328,7 +4328,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndInheritOnFeatureBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4359,10 +4359,10 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndInheritOnFeatureBranch(b /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4380,7 +4380,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4395,7 +4395,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-PullRequest2.2", configuration); @@ -4410,7 +4410,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-2+2", configuration); @@ -4427,10 +4427,10 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4448,7 +4448,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndPatchOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4479,10 +4479,10 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndPatchOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4500,7 +4500,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndMinorOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4522,7 +4522,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndMinorOnFeatureBranch(boo fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+2", configuration); @@ -4539,10 +4539,10 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndMinorOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4560,7 +4560,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndMajorOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4582,7 +4582,7 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndMajorOnFeatureBranch(boo fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+2", configuration); @@ -4599,10 +4599,10 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndMajorOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4620,7 +4620,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndInheritOnFeatureBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4651,10 +4651,10 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndInheritOnFeatureBranch(b /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4672,7 +4672,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4687,7 +4687,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-PullRequest2.2", configuration); @@ -4702,7 +4702,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-2+2", configuration); @@ -4719,10 +4719,10 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4740,7 +4740,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndPatchOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4755,7 +4755,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndPatchOnFeatureBranch(boo fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.1-PullRequest2.2", configuration); @@ -4770,7 +4770,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndPatchOnFeatureBranch(boo fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.1-1+2", configuration); @@ -4787,10 +4787,10 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndPatchOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4808,7 +4808,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndMinorOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4839,10 +4839,10 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndMinorOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4860,7 +4860,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndMajorOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4882,7 +4882,7 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndMajorOnFeatureBranch(boo fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+2", configuration); @@ -4899,10 +4899,10 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndMajorOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4920,7 +4920,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndInheritOnFeatureBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4951,10 +4951,10 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndInheritOnFeatureBranch(b /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -4972,7 +4972,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -4987,7 +4987,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-PullRequest2.2", configuration); @@ -5002,7 +5002,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-2+2", configuration); @@ -5019,10 +5019,10 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5040,7 +5040,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndPatchOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -5055,7 +5055,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndPatchOnFeatureBranch(boo fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.1-PullRequest2.2", configuration); @@ -5070,7 +5070,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndPatchOnFeatureBranch(boo fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.1-1+2", configuration); @@ -5087,10 +5087,10 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndPatchOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5108,7 +5108,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -5123,7 +5123,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch(boo fixture.BranchTo("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.1.0-PullRequest2.2", configuration); @@ -5138,7 +5138,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch(boo fixture.Remove("pull/2/merge"); fixture.MergeNoFF("feature/foo"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.1.0-1+2", configuration); @@ -5155,10 +5155,10 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch(boo /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequestWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useTrunkBased) + public void EnsurePullRequestWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5176,7 +5176,7 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMajorOnFeatureBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -5215,10 +5215,10 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMajorOnFeatureBranch(boo [TestCase(true, IncrementStrategy.Minor)] [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] - public void EnsureReleaseBranchWithIncrementInheritOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + public void EnsureReleaseBranchWithIncrementInheritOnMain(bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5237,7 +5237,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMain(bool useTrunkBased, In // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("release/3.0.0"); // ✅ succeeds as expected @@ -5254,7 +5254,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMain(bool useTrunkBased, In // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("release/3.0.0"); // ✅ succeeds as expected @@ -5285,7 +5285,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMain(bool useTrunkBased, In // ✅ succeeds as expected fixture.AssertFullSemver("3.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + if (!useMainline) fixture.ApplyTag("3.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -5309,10 +5309,10 @@ public void EnsureReleaseBranchWithIncrementInheritOnMain(bool useTrunkBased, In [TestCase(true, "release/1.0.1")] [TestCase(false, "release/1.1.0")] [TestCase(true, "release/1.1.0")] - public void EnsureReleaseBranchWithIncrementInheritOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementInheritOnMainAndInheritOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5331,7 +5331,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndInheritOnReleaseBran // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -5348,7 +5348,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndInheritOnReleaseBran // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -5379,7 +5379,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndInheritOnReleaseBran // ✅ succeeds as expected fixture.AssertFullSemver("3.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + if (!useMainline) fixture.ApplyTag("3.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -5399,10 +5399,10 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndInheritOnReleaseBran [TestCase(true, "release/0.1.0")] [TestCase(false, "release/1.0.0")] [TestCase(true, "release/1.0.0")] - public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5421,7 +5421,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch( // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -5438,7 +5438,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch( // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -5466,7 +5466,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch( fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-2+6", configuration); @@ -5477,7 +5477,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch( fixture.AssertFullSemver("3.0.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("2.0.0"); fixture.ApplyTag("2.0.0"); @@ -5503,10 +5503,10 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch( [TestCase(true, "release/1.0.0")] [TestCase(false, "release/1.0.1")] [TestCase(true, "release/1.0.1")] - public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5525,7 +5525,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -5542,7 +5542,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -5570,7 +5570,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.1-1+6", configuration); @@ -5581,7 +5581,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch fixture.AssertFullSemver("3.0.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("2.0.1"); + if (!useMainline) fixture.ApplyTag("2.0.1"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -5605,10 +5605,10 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch [TestCase(true, "release/1.0.1")] [TestCase(false, "release/1.1.0")] [TestCase(true, "release/1.1.0")] - public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5627,7 +5627,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -5644,7 +5644,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -5672,7 +5672,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.1.0-1+6", configuration); @@ -5683,7 +5683,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch fixture.AssertFullSemver("3.0.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("2.1.0"); + if (!useMainline) fixture.ApplyTag("2.1.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -5707,10 +5707,10 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch [TestCase(true, "release/1.0.1")] [TestCase(false, "release/1.1.0")] [TestCase(true, "release/1.1.0")] - public void EnsureReleaseBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5729,7 +5729,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -5746,7 +5746,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -5777,7 +5777,7 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("3.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + if (!useMainline) fixture.ApplyTag("3.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -5797,10 +5797,10 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch [TestCase(true, IncrementStrategy.Minor)] [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] - public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5819,7 +5819,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useTrunkBased, Incre // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -5833,7 +5833,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useTrunkBased, Incre fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -5844,7 +5844,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useTrunkBased, Incre fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); @@ -5879,10 +5879,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useTrunkBased, Incre // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("G"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-2+1", configuration); @@ -5901,10 +5901,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useTrunkBased, Incre [TestCase(true, "release/next")] [TestCase(false, "release/0.0.0")] [TestCase(true, "release/0.0.0")] - public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -5923,7 +5923,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -5937,7 +5937,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -5948,7 +5948,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); @@ -5980,7 +5980,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-3+6", configuration); @@ -5991,14 +5991,14 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( fixture.AssertFullSemver("0.0.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); } fixture.MakeACommit("G"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-4+1", configuration); @@ -6017,10 +6017,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( [TestCase(true, "release/next")] [TestCase(false, "release/0.0.0")] [TestCase(true, "release/0.0.0")] - public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6039,7 +6039,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(boo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6053,7 +6053,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(boo fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -6064,7 +6064,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(boo fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); @@ -6096,7 +6096,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(boo fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-3+6", configuration); @@ -6107,14 +6107,14 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(boo fixture.AssertFullSemver("0.0.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); } fixture.MakeACommit("G"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-4+1", configuration); @@ -6133,10 +6133,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(boo [TestCase(true, "release/next")] [TestCase(false, "release/0.0.0")] [TestCase(true, "release/0.0.0")] - public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6155,7 +6155,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6169,7 +6169,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bo fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -6180,7 +6180,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bo fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); @@ -6215,10 +6215,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MakeACommit("G"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-2+1", configuration); @@ -6237,10 +6237,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bo [TestCase(true, "release/next")] [TestCase(false, "release/0.0.0")] [TestCase(true, "release/0.0.0")] - public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6259,7 +6259,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6273,7 +6273,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bo fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -6284,7 +6284,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bo fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); @@ -6319,10 +6319,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("G"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-2+1", configuration); @@ -6341,10 +6341,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bo [TestCase(true, "release/next")] [TestCase(false, "release/0.0.0")] [TestCase(true, "release/0.0.0")] - public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6363,7 +6363,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6377,7 +6377,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bo fixture.Checkout("main"); fixture.MakeACommit("C"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+1", configuration); @@ -6388,7 +6388,7 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bo fixture.AssertFullSemver("0.0.0-1+1", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); @@ -6423,10 +6423,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("G"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-2+1", configuration); @@ -6451,10 +6451,10 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bo [TestCase(true, IncrementStrategy.Minor)] [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] - public void EnsureReleaseBranchWithIncrementPatchOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + public void EnsureReleaseBranchWithIncrementPatchOnMain(bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6473,7 +6473,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -6490,7 +6490,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo("release/2.0.0"); // ✅ succeeds as expected @@ -6521,7 +6521,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -6539,10 +6539,10 @@ public void EnsureReleaseBranchWithIncrementPatchOnMain(bool useTrunkBased, Incr [TestCase(true, "release/0.0.1")] [TestCase(false, "release/0.0.2")] [TestCase(true, "release/0.0.2")] - public void EnsureReleaseBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6561,7 +6561,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6578,7 +6578,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -6609,7 +6609,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("0.0.3-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.3"); + if (!useMainline) fixture.ApplyTag("0.0.3"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -6625,10 +6625,10 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch [TestCase(true, "release/0.0.0")] [TestCase(false, "release/0.0.1")] [TestCase(true, "release/0.0.1")] - public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6647,7 +6647,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6664,7 +6664,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -6692,7 +6692,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bo fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-2+6", configuration); @@ -6703,7 +6703,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bo fixture.AssertFullSemver("0.0.3-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.2"); fixture.ApplyTag("0.0.2"); @@ -6725,10 +6725,10 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bo [TestCase(true, "release/0.0.1")] [TestCase(false, "release/0.0.2")] [TestCase(true, "release/0.0.2")] - public void EnsureReleaseBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6747,7 +6747,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6764,7 +6764,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -6795,7 +6795,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.0.3-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.3"); + if (!useMainline) fixture.ApplyTag("0.0.3"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -6811,10 +6811,10 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch(b [TestCase(true, "release/0.0.0")] [TestCase(false, "release/0.0.1")] [TestCase(true, "release/0.0.1")] - public void EnsureReleaseBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6833,7 +6833,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6850,7 +6850,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -6881,7 +6881,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -6897,10 +6897,10 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch(b [TestCase(true, "release/0.0.0")] [TestCase(false, "release/0.0.1")] [TestCase(true, "release/0.0.1")] - public void EnsureReleaseBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -6919,7 +6919,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -6936,7 +6936,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -6967,7 +6967,7 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -6987,10 +6987,10 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch(b [TestCase(true, IncrementStrategy.Minor)] [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] - public void EnsureReleaseBranchWithIncrementMinorOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + public void EnsureReleaseBranchWithIncrementMinorOnMain(bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7009,7 +7009,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -7026,7 +7026,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo("release/2.0.0"); // ✅ succeeds as expected @@ -7057,7 +7057,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -7075,10 +7075,10 @@ public void EnsureReleaseBranchWithIncrementMinorOnMain(bool useTrunkBased, Incr [TestCase(true, "release/0.0.1")] [TestCase(false, "release/0.2.0")] [TestCase(true, "release/0.2.0")] - public void EnsureReleaseBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7097,7 +7097,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7114,7 +7114,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7145,7 +7145,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("0.3.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.3.0"); + if (!useMainline) fixture.ApplyTag("0.3.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -7163,10 +7163,10 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch [TestCase(true, "release/0.0.1")] [TestCase(false, "release/0.1.0")] [TestCase(true, "release/0.1.0")] - public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7185,7 +7185,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7202,7 +7202,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7230,7 +7230,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bo fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-2+6", configuration); @@ -7241,7 +7241,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bo fixture.AssertFullSemver("0.3.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.2.0"); fixture.ApplyTag("0.2.0"); @@ -7263,10 +7263,10 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bo [TestCase(true, "release/0.0.1")] [TestCase(false, "release/0.1.1")] [TestCase(true, "release/0.1.1")] - public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7285,7 +7285,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7302,7 +7302,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7330,7 +7330,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(b fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.2.1-1+6", configuration); @@ -7341,7 +7341,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(b fixture.AssertFullSemver("0.3.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("0.2.1"); + if (!useMainline) fixture.ApplyTag("0.2.1"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -7359,10 +7359,10 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(b [TestCase(true, "release/0.0.1")] [TestCase(false, "release/0.2.0")] [TestCase(true, "release/0.2.0")] - public void EnsureReleaseBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7381,7 +7381,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7398,7 +7398,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7429,7 +7429,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.3.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.3.0"); + if (!useMainline) fixture.ApplyTag("0.3.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -7449,10 +7449,10 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch(b [TestCase(true, "release/0.1.0")] [TestCase(false, "release/0.1.1")] [TestCase(true, "release/0.1.1")] - public void EnsureReleaseBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7471,7 +7471,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7488,7 +7488,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7519,7 +7519,7 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -7539,10 +7539,10 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch(b [TestCase(true, IncrementStrategy.Minor)] [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] - public void EnsureReleaseBranchWithIncrementMajorOnMain(bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + public void EnsureReleaseBranchWithIncrementMajorOnMain(bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7561,7 +7561,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("release/3.0.0"); // ✅ succeeds as expected @@ -7578,7 +7578,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo("release/3.0.0"); // ✅ succeeds as expected @@ -7609,7 +7609,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMain(bool useTrunkBased, Incr // ✅ succeeds as expected fixture.AssertFullSemver("3.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + if (!useMainline) fixture.ApplyTag("3.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -7633,10 +7633,10 @@ public void EnsureReleaseBranchWithIncrementMajorOnMain(bool useTrunkBased, Incr [TestCase(true, "release/1.1.0")] [TestCase(false, "release/1.1.1")] [TestCase(true, "release/1.1.1")] - public void EnsureReleaseBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7655,7 +7655,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7672,7 +7672,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7703,7 +7703,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch // ✅ succeeds as expected fixture.AssertFullSemver("3.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + if (!useMainline) fixture.ApplyTag("3.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -7721,10 +7721,10 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch [TestCase(true, "release/0.0.1")] [TestCase(false, "release/1.0.0")] [TestCase(true, "release/1.0.0")] - public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7743,7 +7743,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7760,7 +7760,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bo // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7788,7 +7788,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bo fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-2+6", configuration); @@ -7799,7 +7799,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bo fixture.AssertFullSemver("3.0.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("2.0.0"); fixture.ApplyTag("2.0.0"); @@ -7823,10 +7823,10 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bo [TestCase(true, "release/1.0.0")] [TestCase(false, "release/1.0.1")] [TestCase(true, "release/1.0.1")] - public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7845,7 +7845,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7862,7 +7862,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7890,7 +7890,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(b fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.1-1+6", configuration); @@ -7901,7 +7901,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(b fixture.AssertFullSemver("3.0.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("2.0.1"); + if (!useMainline) fixture.ApplyTag("2.0.1"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -7923,10 +7923,10 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(b [TestCase(true, "release/1.0.1")] [TestCase(false, "release/1.1.0")] [TestCase(true, "release/1.1.0")] - public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -7945,7 +7945,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -7962,7 +7962,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -7990,7 +7990,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(b fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.1.0-1+6", configuration); @@ -8001,7 +8001,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(b fixture.AssertFullSemver("3.0.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("2.1.0"); + if (!useMainline) fixture.ApplyTag("2.1.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -8029,10 +8029,10 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(b [TestCase(true, "release/1.1.0")] [TestCase(false, "release/1.1.1")] [TestCase(true, "release/1.1.1")] - public void EnsureReleaseBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8051,7 +8051,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -8068,7 +8068,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -8099,7 +8099,7 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch(b // ✅ succeeds as expected fixture.AssertFullSemver("3.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("3.0.0"); + if (!useMainline) fixture.ApplyTag("3.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -8116,10 +8116,10 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch(b [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMain( - bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8141,7 +8141,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -8195,7 +8195,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -8221,10 +8221,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMain( [TestCase(false, "release/1.0.0")] [TestCase(true, "release/1.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndInheritOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8246,7 +8246,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndInheritOnR // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -8300,7 +8300,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndInheritOnR // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -8324,10 +8324,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndInheritOnR [TestCase(false, "release/1.0.0")] [TestCase(true, "release/1.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8349,7 +8349,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndNoneOnRele // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -8400,7 +8400,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndNoneOnRele fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-2+6", configuration); @@ -8411,7 +8411,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndNoneOnRele fixture.AssertFullSemver("2.0.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("1.0.0"); fixture.ApplyTag("1.0.0"); @@ -8441,10 +8441,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndNoneOnRele [TestCase(false, "release/1.0.1")] [TestCase(true, "release/1.0.1")] public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8466,7 +8466,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndPatchOnRel // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -8517,7 +8517,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndPatchOnRel fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.1-1+6", configuration); @@ -8528,7 +8528,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndPatchOnRel fixture.AssertFullSemver("2.0.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("1.0.1"); + if (!useMainline) fixture.ApplyTag("1.0.1"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -8558,10 +8558,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndPatchOnRel [TestCase(false, "release/1.1.0")] [TestCase(true, "release/1.1.0")] public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8583,7 +8583,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMinorOnRel // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -8634,7 +8634,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMinorOnRel fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.1.0-1+6", configuration); @@ -8645,7 +8645,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMinorOnRel fixture.AssertFullSemver("2.0.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("1.1.0"); + if (!useMainline) fixture.ApplyTag("1.1.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -8679,10 +8679,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMinorOnRel [TestCase(false, "release/2.0.0")] [TestCase(true, "release/2.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8704,7 +8704,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMajorOnRel // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -8758,7 +8758,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMajorOnRel // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -8775,10 +8775,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMajorOnRel [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMain( - bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8800,7 +8800,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -8854,10 +8854,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-2+1", configuration); @@ -8874,10 +8874,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMain( [TestCase(false, "release/0.0.0")] [TestCase(true, "release/0.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -8899,7 +8899,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndInheritOnRele // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -8950,7 +8950,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndInheritOnRele fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+6", configuration); @@ -8961,14 +8961,14 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndInheritOnRele fixture.AssertFullSemver("0.0.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); } fixture.MakeACommit("F"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-3+1", configuration); @@ -8985,10 +8985,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndInheritOnRele [TestCase(false, "release/0.0.0")] [TestCase(true, "release/0.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9010,7 +9010,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndNoneOnRelease // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9061,7 +9061,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndNoneOnRelease fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-2+6", configuration); @@ -9072,14 +9072,14 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndNoneOnRelease fixture.AssertFullSemver("0.0.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.0"); fixture.ApplyTag("0.0.0"); } fixture.MakeACommit("F"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-3+1", configuration); @@ -9097,10 +9097,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndNoneOnRelease [TestCase(true, "release/0.0.0")] [TestCase(true, "release/0.0.1")] public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9122,7 +9122,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndPatchOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9176,10 +9176,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndPatchOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MakeACommit("F"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-2+1", configuration); @@ -9199,10 +9199,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndPatchOnReleas [TestCase(true, "release/0.0.2")] [TestCase(true, "release/0.1.0")] public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9224,7 +9224,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMinorOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9278,10 +9278,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMinorOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("F"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-2+1", configuration); @@ -9304,10 +9304,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMinorOnReleas [TestCase(true, "release/0.2.0")] [TestCase(true, "release/1.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9329,7 +9329,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMajorOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("0.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.0"); + if (!useMainline) fixture.ApplyTag("0.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9383,10 +9383,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMajorOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("F"); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-2+1", configuration); @@ -9408,10 +9408,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMajorOnReleas [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMain( - bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9433,7 +9433,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -9487,7 +9487,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -9503,10 +9503,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMain( [TestCase(false, "release/0.0.2")] [TestCase(true, "release/0.0.2")] public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9528,7 +9528,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndInheritOnRel // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9582,7 +9582,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndInheritOnRel // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -9596,10 +9596,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndInheritOnRel [TestCase(false, "release/0.0.1")] [TestCase(true, "release/0.0.1")] public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9621,7 +9621,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndNoneOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9672,7 +9672,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndNoneOnReleas fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-2+6", configuration); @@ -9683,7 +9683,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndNoneOnReleas fixture.AssertFullSemver("0.0.2-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.0.1"); fixture.ApplyTag("0.0.1"); @@ -9703,10 +9703,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndNoneOnReleas [TestCase(false, "release/0.0.2")] [TestCase(true, "release/0.0.2")] public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9728,7 +9728,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndPatchOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9782,7 +9782,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndPatchOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -9797,10 +9797,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndPatchOnRelea [TestCase(true, "release/0.0.1")] [TestCase(true, "release/0.1.0")] public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9822,7 +9822,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMinorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9876,7 +9876,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMinorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -9895,10 +9895,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMinorOnRelea [TestCase(true, "release/0.1.1")] [TestCase(true, "release/1.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -9920,7 +9920,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMajorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -9974,7 +9974,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMajorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -9991,10 +9991,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMajorOnRelea [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMain( - bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10016,7 +10016,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -10070,7 +10070,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -10092,10 +10092,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMain( [TestCase(false, "release/0.2.0")] [TestCase(true, "release/0.2.0")] public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10117,7 +10117,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndInheritOnRel // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -10171,7 +10171,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndInheritOnRel // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -10189,10 +10189,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndInheritOnRel [TestCase(false, "release/0.1.0")] [TestCase(true, "release/0.1.0")] public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10214,7 +10214,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndNoneOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -10265,7 +10265,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndNoneOnReleas fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-2+6", configuration); @@ -10276,7 +10276,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndNoneOnReleas fixture.AssertFullSemver("0.2.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("0.1.0"); fixture.ApplyTag("0.1.0"); @@ -10300,10 +10300,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndNoneOnReleas [TestCase(false, "release/0.1.1")] [TestCase(true, "release/0.1.1")] public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10325,7 +10325,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndPatchOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -10376,7 +10376,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndPatchOnRelea fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("0.1.1-1+6", configuration); @@ -10387,7 +10387,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndPatchOnRelea fixture.AssertFullSemver("0.2.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("0.1.1"); + if (!useMainline) fixture.ApplyTag("0.1.1"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -10409,10 +10409,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndPatchOnRelea [TestCase(false, "release/0.2.0")] [TestCase(true, "release/0.2.0")] public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10434,7 +10434,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMinorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -10488,7 +10488,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMinorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.2.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.2.0"); + if (!useMainline) fixture.ApplyTag("0.2.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -10510,10 +10510,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMinorOnRelea [TestCase(false, "release/0.2.0")] [TestCase(true, "release/0.2.0")] public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10535,7 +10535,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMajorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -10589,7 +10589,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMajorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -10606,10 +10606,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMajorOnRelea [TestCase(false, IncrementStrategy.Major)] [TestCase(true, IncrementStrategy.Major)] public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMain( - bool useTrunkBased, IncrementStrategy incrementOnReleaseBranch) + bool useMainline, IncrementStrategy incrementOnReleaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10631,7 +10631,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -10685,7 +10685,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMain( // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -10711,10 +10711,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMain( [TestCase(false, "release/1.0.0")] [TestCase(true, "release/1.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10736,7 +10736,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndInheritOnRel // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -10790,7 +10790,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndInheritOnRel // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -10814,10 +10814,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndInheritOnRel [TestCase(false, "release/1.0.0")] [TestCase(true, "release/1.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10839,7 +10839,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndNoneOnReleas // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -10890,7 +10890,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndNoneOnReleas fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-2+6", configuration); @@ -10901,7 +10901,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndNoneOnReleas fixture.AssertFullSemver("2.0.0-1+6", configuration); } - if (!useTrunkBased) + if (!useMainline) { fixture.Repository.Tags.Remove("1.0.0"); fixture.ApplyTag("1.0.0"); @@ -10931,10 +10931,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndNoneOnReleas [TestCase(false, "release/1.0.1")] [TestCase(true, "release/1.0.1")] public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -10956,7 +10956,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndPatchOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -11007,7 +11007,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndPatchOnRelea fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.0.1-1+6", configuration); @@ -11018,7 +11018,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndPatchOnRelea fixture.AssertFullSemver("2.0.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("1.0.1"); + if (!useMainline) fixture.ApplyTag("1.0.1"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -11048,10 +11048,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndPatchOnRelea [TestCase(false, "release/1.1.0")] [TestCase(true, "release/1.1.0")] public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -11073,7 +11073,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMinorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -11124,7 +11124,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMinorOnRelea fixture.MergeTo("main", removeBranchAfterMerging: true); - if (useTrunkBased) + if (useMainline) { // ✅ succeeds as expected fixture.AssertFullSemver("1.1.0-1+6", configuration); @@ -11135,7 +11135,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMinorOnRelea fixture.AssertFullSemver("2.0.0-1+6", configuration); } - if (!useTrunkBased) fixture.ApplyTag("1.1.0"); + if (!useMainline) fixture.ApplyTag("1.1.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -11169,10 +11169,10 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMinorOnRelea [TestCase(false, "release/2.0.0")] [TestCase(true, "release/2.0.0")] public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch( - bool useTrunkBased, string releaseBranch) + bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) @@ -11194,7 +11194,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMajorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-1+1", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -11248,7 +11248,7 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMajorOnRelea // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-1+6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected diff --git a/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow.cs b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitFlow.cs similarity index 90% rename from src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow.cs rename to src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitFlow.cs index 071cc53ad9..8b5a72a238 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitFlow.cs @@ -5,7 +5,7 @@ namespace GitVersion.Core.Tests.IntegrationTests; [TestFixture] [Parallelizable(ParallelScope.All)] -public class CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow +public class CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitFlow { private static GitFlowConfigurationBuilder configurationBuilder => GitFlowConfigurationBuilder.New; @@ -14,10 +14,10 @@ public class CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitFlow /// [TestCase(false)] [TestCase(true)] - public void EnsureFeature(bool useTrunkBased) + public void EnsureFeature(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -28,13 +28,13 @@ public void EnsureFeature(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -71,10 +71,10 @@ public void EnsureFeature(bool useTrunkBased) /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeature(bool useTrunkBased) + public void EnsureMergeMainToFeature(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -85,7 +85,7 @@ public void EnsureMergeMainToFeature(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -102,7 +102,7 @@ public void EnsureMergeMainToFeature(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -139,10 +139,10 @@ public void EnsureMergeMainToFeature(bool useTrunkBased) /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequest(bool useTrunkBased) + public void EnsurePullRequest(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -153,7 +153,7 @@ public void EnsurePullRequest(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -181,10 +181,10 @@ public void EnsurePullRequest(bool useTrunkBased) [TestCase(false)] [TestCase(true)] - public void EnsureReleaseAndFeatureBranch(bool useTrunkBased) + public void EnsureReleaseAndFeatureBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -195,7 +195,7 @@ public void EnsureReleaseAndFeatureBranch(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -249,7 +249,7 @@ public void EnsureReleaseAndFeatureBranch(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -265,10 +265,10 @@ public void EnsureReleaseAndFeatureBranch(bool useTrunkBased) [TestCase(false, "release/0.0.2")] [TestCase(true, "release/0.0.2")] [TestCase(true, "release/0.1.0")] - public void EnsureReleaseAndFeatureBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseAndFeatureBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -279,7 +279,7 @@ public void EnsureReleaseAndFeatureBranch(bool useTrunkBased, string releaseBran // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -333,7 +333,7 @@ public void EnsureReleaseAndFeatureBranch(bool useTrunkBased, string releaseBran // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -345,10 +345,10 @@ public void EnsureReleaseAndFeatureBranch(bool useTrunkBased, string releaseBran /// [TestCase(false)] [TestCase(true)] - public void EnsureReleaseBranch(bool useTrunkBased) + public void EnsureReleaseBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -359,7 +359,7 @@ public void EnsureReleaseBranch(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -376,7 +376,7 @@ public void EnsureReleaseBranch(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo("release/2.0.0"); // ✅ succeeds as expected @@ -407,7 +407,7 @@ public void EnsureReleaseBranch(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -426,10 +426,10 @@ public void EnsureReleaseBranch(bool useTrunkBased) [TestCase(false, "release/0.0.2")] [TestCase(true, "release/0.0.2")] [TestCase(true, "release/0.1.0")] - public void EnsureReleaseBranch(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranch(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -440,7 +440,7 @@ public void EnsureReleaseBranch(bool useTrunkBased, string releaseBranch) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -457,7 +457,7 @@ public void EnsureReleaseBranch(bool useTrunkBased, string releaseBranch) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -488,7 +488,7 @@ public void EnsureReleaseBranch(bool useTrunkBased, string releaseBranch) // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -497,10 +497,10 @@ public void EnsureReleaseBranch(bool useTrunkBased, string releaseBranch) [TestCase(false)] [TestCase(true)] - public void EnsureFeatureDevelopmentWithDevelopBranch(bool useTrunkBased) + public void EnsureFeatureDevelopmentWithDevelopBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -511,7 +511,7 @@ public void EnsureFeatureDevelopmentWithDevelopBranch(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("develop"); // ✅ succeeds as expected @@ -585,7 +585,7 @@ public void EnsureFeatureDevelopmentWithDevelopBranch(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-7", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -594,10 +594,10 @@ public void EnsureFeatureDevelopmentWithDevelopBranch(bool useTrunkBased) [TestCase(false)] [TestCase(true)] - public void EnsureFeatureDevelopmentWithDevelopBranchFast(bool useTrunkBased) + public void EnsureFeatureDevelopmentWithDevelopBranchFast(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -608,7 +608,7 @@ public void EnsureFeatureDevelopmentWithDevelopBranchFast(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("develop"); // ✅ succeeds as expected @@ -667,7 +667,7 @@ public void EnsureFeatureDevelopmentWithDevelopBranchFast(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-5", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("E"); // ✅ succeeds as expected @@ -676,10 +676,10 @@ public void EnsureFeatureDevelopmentWithDevelopBranchFast(bool useTrunkBased) [TestCase(false)] [TestCase(true)] - public void EnsureDevelopmentWithMainBranchFast(bool useTrunkBased) + public void EnsureDevelopmentWithMainBranchFast(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -690,7 +690,7 @@ public void EnsureDevelopmentWithMainBranchFast(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -730,7 +730,7 @@ public void EnsureDevelopmentWithMainBranchFast(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-4", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -739,10 +739,10 @@ public void EnsureDevelopmentWithMainBranchFast(bool useTrunkBased) [TestCase(false)] [TestCase(true)] - public void EnsureBugFixWithMainBranch(bool useTrunkBased) + public void EnsureBugFixWithMainBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -753,7 +753,7 @@ public void EnsureBugFixWithMainBranch(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("hotfix/bar"); // ✅ succeeds as expected @@ -793,7 +793,7 @@ public void EnsureBugFixWithMainBranch(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-4", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -802,10 +802,10 @@ public void EnsureBugFixWithMainBranch(bool useTrunkBased) [TestCase(false)] [TestCase(true)] - public void EnsureBugFixWithDevelopBranch(bool useTrunkBased) + public void EnsureBugFixWithDevelopBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -816,7 +816,7 @@ public void EnsureBugFixWithDevelopBranch(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("develop"); // ✅ succeeds as expected @@ -872,7 +872,7 @@ public void EnsureBugFixWithDevelopBranch(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-5", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -881,10 +881,10 @@ public void EnsureBugFixWithDevelopBranch(bool useTrunkBased) [TestCase(false)] [TestCase(true)] - public void EnsureBugFixWithDevelopBranchFast(bool useTrunkBased) + public void EnsureBugFixWithDevelopBranchFast(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -895,7 +895,7 @@ public void EnsureBugFixWithDevelopBranchFast(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("develop"); // ✅ succeeds as expected @@ -946,7 +946,7 @@ public void EnsureBugFixWithDevelopBranchFast(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-4", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MakeACommit("E"); // ✅ succeeds as expected @@ -955,10 +955,10 @@ public void EnsureBugFixWithDevelopBranchFast(bool useTrunkBased) [TestCase(false)] [TestCase(true)] - public void EnsureFeatureDevelopmentWithReleaseNextBranch(bool useTrunkBased) + public void EnsureFeatureDevelopmentWithReleaseNextBranch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -969,7 +969,7 @@ public void EnsureFeatureDevelopmentWithReleaseNextBranch(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("develop"); // ✅ succeeds as expected @@ -1055,7 +1055,7 @@ public void EnsureFeatureDevelopmentWithReleaseNextBranch(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-8", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -1064,10 +1064,10 @@ public void EnsureFeatureDevelopmentWithReleaseNextBranch(bool useTrunkBased) [TestCase(false)] [TestCase(true)] - public void EnsureFeatureDevelopmentWithReleaseNextBranchFast(bool useTrunkBased) + public void EnsureFeatureDevelopmentWithReleaseNextBranchFast(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -1078,7 +1078,7 @@ public void EnsureFeatureDevelopmentWithReleaseNextBranchFast(bool useTrunkBased // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("develop"); // ✅ succeeds as expected @@ -1159,7 +1159,7 @@ public void EnsureFeatureDevelopmentWithReleaseNextBranchFast(bool useTrunkBased // ✅ succeeds as expected fixture.AssertFullSemver("0.1.0-7", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.1.0"); + if (!useMainline) fixture.ApplyTag("0.1.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -1168,10 +1168,10 @@ public void EnsureFeatureDevelopmentWithReleaseNextBranchFast(bool useTrunkBased [TestCase(false)] [TestCase(true)] - public void EnsureFeatureDevelopmentWithRelease100Branch(bool useTrunkBased) + public void EnsureFeatureDevelopmentWithRelease100Branch(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -1182,7 +1182,7 @@ public void EnsureFeatureDevelopmentWithRelease100Branch(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("develop"); // ✅ succeeds as expected @@ -1268,7 +1268,7 @@ public void EnsureFeatureDevelopmentWithRelease100Branch(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-8", configuration); - if (!useTrunkBased) fixture.ApplyTag("1.0.0"); + if (!useMainline) fixture.ApplyTag("1.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected diff --git a/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitHubFlow.cs b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitHubFlow.cs similarity index 88% rename from src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitHubFlow.cs rename to src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitHubFlow.cs index 58136956fa..be5fdfff17 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitHubFlow.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitHubFlow.cs @@ -5,7 +5,7 @@ namespace GitVersion.Core.Tests.IntegrationTests; [TestFixture] [Parallelizable(ParallelScope.All)] -public class CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitHubFlow +public class CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitHubFlow { private static GitHubFlowConfigurationBuilder configurationBuilder => GitHubFlowConfigurationBuilder.New; @@ -14,10 +14,10 @@ public class CompareTheDifferentWhenUsingTrunkBasedVersionStrategyWithGitHubFlow /// [TestCase(false)] [TestCase(true)] - public void EnsureFeature1(bool useTrunkBased) + public void EnsureFeature1(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -28,13 +28,13 @@ public void EnsureFeature1(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.MakeACommit("B"); // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -71,10 +71,10 @@ public void EnsureFeature1(bool useTrunkBased) /// [TestCase(false)] [TestCase(true)] - public void EnsureMergeMainToFeature2(bool useTrunkBased) + public void EnsureMergeMainToFeature2(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -85,7 +85,7 @@ public void EnsureMergeMainToFeature2(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -102,7 +102,7 @@ public void EnsureMergeMainToFeature2(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo("feature/foo"); // ✅ succeeds as expected @@ -139,10 +139,10 @@ public void EnsureMergeMainToFeature2(bool useTrunkBased) /// [TestCase(false)] [TestCase(true)] - public void EnsurePullRequest(bool useTrunkBased) + public void EnsurePullRequest(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -153,7 +153,7 @@ public void EnsurePullRequest(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("feature/foo"); // ✅ succeeds as expected @@ -181,10 +181,10 @@ public void EnsurePullRequest(bool useTrunkBased) [TestCase(false)] [TestCase(true)] - public void EnsureReleaseAndFeatureBranch1(bool useTrunkBased) + public void EnsureReleaseAndFeatureBranch1(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -195,7 +195,7 @@ public void EnsureReleaseAndFeatureBranch1(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -249,7 +249,7 @@ public void EnsureReleaseAndFeatureBranch1(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -263,10 +263,10 @@ public void EnsureReleaseAndFeatureBranch1(bool useTrunkBased) [TestCase(false, "release/0.0.1")] [TestCase(true, "release/0.0.1")] [TestCase(true, "release/0.0.2")] - public void EnsureReleaseAndFeatureBranch2(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseAndFeatureBranch2(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -277,7 +277,7 @@ public void EnsureReleaseAndFeatureBranch2(bool useTrunkBased, string releaseBra // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -331,7 +331,7 @@ public void EnsureReleaseAndFeatureBranch2(bool useTrunkBased, string releaseBra // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MakeACommit("F"); // ✅ succeeds as expected @@ -343,10 +343,10 @@ public void EnsureReleaseAndFeatureBranch2(bool useTrunkBased, string releaseBra /// [TestCase(false)] [TestCase(true)] - public void EnsureReleaseBranch1(bool useTrunkBased) + public void EnsureReleaseBranch1(bool useMainline) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -357,7 +357,7 @@ public void EnsureReleaseBranch1(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo("release/2.0.0"); // ✅ succeeds as expected @@ -374,7 +374,7 @@ public void EnsureReleaseBranch1(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo("release/2.0.0"); // ✅ succeeds as expected @@ -405,7 +405,7 @@ public void EnsureReleaseBranch1(bool useTrunkBased) // ✅ succeeds as expected fixture.AssertFullSemver("2.0.0-6", configuration); - if (!useTrunkBased) fixture.ApplyTag("2.0.0"); + if (!useMainline) fixture.ApplyTag("2.0.0"); fixture.MakeACommit("G"); // ✅ succeeds as expected @@ -423,10 +423,10 @@ public void EnsureReleaseBranch1(bool useTrunkBased) [TestCase(true, "release/0.0.1")] [TestCase(false, "release/0.0.2")] [TestCase(true, "release/0.0.2")] - public void EnsureReleaseBranch2(bool useTrunkBased, string releaseBranch) + public void EnsureReleaseBranch2(bool useMainline, string releaseBranch) { - var builder = useTrunkBased - ? configurationBuilder.WithVersionStrategy(VersionStrategies.TrunkBased) + var builder = useMainline + ? configurationBuilder.WithVersionStrategy(VersionStrategies.Mainline) : configurationBuilder; var configuration = builder.Build(); @@ -437,7 +437,7 @@ public void EnsureReleaseBranch2(bool useTrunkBased, string releaseBranch) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.1-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.1"); + if (!useMainline) fixture.ApplyTag("0.0.1"); fixture.BranchTo(releaseBranch); // ✅ succeeds as expected @@ -454,7 +454,7 @@ public void EnsureReleaseBranch2(bool useTrunkBased, string releaseBranch) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.2-1", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.2"); + if (!useMainline) fixture.ApplyTag("0.0.2"); fixture.MergeTo(releaseBranch); // ✅ succeeds as expected @@ -485,7 +485,7 @@ public void EnsureReleaseBranch2(bool useTrunkBased, string releaseBranch) // ✅ succeeds as expected fixture.AssertFullSemver("0.0.3-6", configuration); - if (!useTrunkBased) fixture.ApplyTag("0.0.3"); + if (!useMainline) fixture.ApplyTag("0.0.3"); fixture.MakeACommit("G"); // ✅ succeeds as expected diff --git a/src/GitVersion.Core.Tests/IntegrationTests/ComparingTheBehaviorOfDifferentVersioningModes.cs b/src/GitVersion.Core.Tests/IntegrationTests/ComparingTheBehaviorOfDifferentVersioningModes.cs index 13a25d7a30..1b77c9d6a7 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/ComparingTheBehaviorOfDifferentVersioningModes.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/ComparingTheBehaviorOfDifferentVersioningModes.cs @@ -19,12 +19,6 @@ private static GitHubFlowConfigurationBuilder GetConfigurationBuilder() => GitHu .WithIncrement(IncrementStrategy.Inherit).WithLabel("{BranchName}") ); - private static readonly IGitVersionConfiguration trunkBased = GetConfigurationBuilder() - .WithVersionStrategy(VersionStrategies.TrunkBased) - .WithBranch("main", _ => _.WithIsMainBranch(true).WithDeploymentMode(DeploymentMode.ContinuousDeployment)) - .WithBranch("feature", _ => _.WithIsMainBranch(false).WithDeploymentMode(DeploymentMode.ContinuousDelivery)) - .Build(); - private static readonly IGitVersionConfiguration continuousDeployment = GetConfigurationBuilder() .WithDeploymentMode(DeploymentMode.ContinuousDeployment) .WithBranch("main", _ => _.WithIsMainBranch(true).WithDeploymentMode(DeploymentMode.ContinuousDeployment)) @@ -51,7 +45,6 @@ public void ExpectedBehavior() fixture.MakeATaggedCommit("1.0.0"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0", trunkBased); fixture.AssertFullSemver("1.0.0", continuousDeployment); fixture.AssertFullSemver("1.0.0", continuousDelivery); fixture.AssertFullSemver("1.0.0", manualDeployment); @@ -59,7 +52,6 @@ public void ExpectedBehavior() fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.1", trunkBased); fixture.AssertFullSemver("1.0.1", continuousDeployment); fixture.AssertFullSemver("1.0.1-1", continuousDelivery); fixture.AssertFullSemver("1.0.1-1+1", manualDeployment); @@ -67,7 +59,6 @@ public void ExpectedBehavior() fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.2", trunkBased); fixture.AssertFullSemver("1.0.1", continuousDeployment); fixture.AssertFullSemver("1.0.1-2", continuousDelivery); fixture.AssertFullSemver("1.0.1-1+2", manualDeployment); @@ -75,7 +66,6 @@ public void ExpectedBehavior() fixture.ApplyTag("1.0.1-alpha.1"); // ✅ succeeds as expected - //fixture.AssertFullSemver("1.0.1-alpha.1", trunkBased); fixture.AssertFullSemver("1.0.1", continuousDeployment); fixture.AssertFullSemver("1.0.1-alpha.1", continuousDelivery); fixture.AssertFullSemver("1.0.1-alpha.1", manualDeployment); @@ -83,7 +73,6 @@ public void ExpectedBehavior() fixture.MakeACommit(); // ✅ succeeds as expected - //fixture.AssertFullSemver("1.0.1-alpha.2", trunkBased); fixture.AssertFullSemver("1.0.1", continuousDeployment); fixture.AssertFullSemver("1.0.1-alpha.2", continuousDelivery); fixture.AssertFullSemver("1.0.1-alpha.2+1", manualDeployment); @@ -91,7 +80,6 @@ public void ExpectedBehavior() fixture.MakeACommit(); // ✅ succeeds as expected - //fixture.AssertFullSemver("1.0.1-alpha.3", trunkBased); fixture.AssertFullSemver("1.0.1", continuousDeployment); fixture.AssertFullSemver("1.0.1-alpha.3", continuousDelivery); fixture.AssertFullSemver("1.0.1-alpha.2+2", manualDeployment); @@ -99,7 +87,6 @@ public void ExpectedBehavior() fixture.MakeATaggedCommit("1.0.1-beta.1"); // ✅ succeeds as expected - //fixture.AssertFullSemver("1.0.1-beta.1", trunkBased); fixture.AssertFullSemver("1.0.1", continuousDeployment); fixture.AssertFullSemver("1.0.1-beta.1", continuousDelivery); fixture.AssertFullSemver("1.0.1-beta.1", manualDeployment); @@ -107,7 +94,6 @@ public void ExpectedBehavior() fixture.MakeACommit(); // ✅ succeeds as expected - //fixture.AssertFullSemver("1.0.1-beta.2", trunkBased); fixture.AssertFullSemver("1.0.1", continuousDeployment); fixture.AssertFullSemver("1.0.1-beta.2", continuousDelivery); fixture.AssertFullSemver("1.0.1-beta.2+1", manualDeployment); @@ -115,7 +101,6 @@ public void ExpectedBehavior() fixture.MakeATaggedCommit("1.0.1-beta.2"); // ✅ succeeds as expected - //fixture.AssertFullSemver("1.0.1-beta.2", trunkBased); fixture.AssertFullSemver("1.0.1", continuousDeployment); fixture.AssertFullSemver("1.0.1-beta.2", continuousDelivery); fixture.AssertFullSemver("1.0.1-beta.2", manualDeployment); @@ -123,7 +108,6 @@ public void ExpectedBehavior() fixture.MakeACommit(); // ✅ succeeds as expected - //fixture.AssertFullSemver("1.0.1-beta.3", trunkBased); fixture.AssertFullSemver("1.0.1", continuousDeployment); fixture.AssertFullSemver("1.0.1-beta.3", continuousDelivery); fixture.AssertFullSemver("1.0.1-beta.3+1", manualDeployment); @@ -131,7 +115,6 @@ public void ExpectedBehavior() fixture.ApplyTag("1.0.1"); // ✅ succeeds as expected - //fixture.AssertFullSemver("1.0.1", trunkBased); fixture.AssertFullSemver("1.0.1", continuousDeployment); fixture.AssertFullSemver("1.0.1", continuousDelivery); fixture.AssertFullSemver("1.0.1", manualDeployment); @@ -139,7 +122,6 @@ public void ExpectedBehavior() fixture.MakeACommit(); // ✅ succeeds as expected - //fixture.AssertFullSemver("1.0.2", trunkBased); fixture.AssertFullSemver("1.0.2", continuousDeployment); fixture.AssertFullSemver("1.0.2-1", continuousDelivery); fixture.AssertFullSemver("1.0.2-1+1", manualDeployment); @@ -147,7 +129,6 @@ public void ExpectedBehavior() fixture.ApplyTag("1.0.2-1"); // ✅ succeeds as expected - //fixture.AssertFullSemver("1.0.2-1", trunkBased); fixture.AssertFullSemver("1.0.2", continuousDeployment); fixture.AssertFullSemver("1.0.2-1", continuousDelivery); fixture.AssertFullSemver("1.0.2-1", manualDeployment); @@ -155,7 +136,6 @@ public void ExpectedBehavior() fixture.MakeACommit(); // ✅ succeeds as expected - //fixture.AssertFullSemver("1.0.2-2", trunkBased); fixture.AssertFullSemver("1.0.2", continuousDeployment); fixture.AssertFullSemver("1.0.2-2", continuousDelivery); fixture.AssertFullSemver("1.0.2-2+1", manualDeployment); @@ -163,7 +143,6 @@ public void ExpectedBehavior() fixture.MakeACommit(); // ✅ succeeds as expected - //fixture.AssertFullSemver("1.0.2-3", trunkBased); fixture.AssertFullSemver("1.0.2", continuousDeployment); fixture.AssertFullSemver("1.0.2-3", continuousDelivery); fixture.AssertFullSemver("1.0.2-2+2", manualDeployment); @@ -177,7 +156,6 @@ public void MainRelease() fixture.MakeATaggedCommit("0.0.2"); // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.2", trunkBased); fixture.AssertFullSemver("0.0.2", continuousDeployment); fixture.AssertFullSemver("0.0.2", continuousDelivery); fixture.AssertFullSemver("0.0.2", manualDeployment); @@ -193,16 +171,14 @@ public void MergeFeatureToMain() fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.3-test.1", trunkBased); - //fixture.AssertFullSemver("?", continuousDeployment); + fixture.AssertFullSemver("0.0.3", continuousDeployment); fixture.AssertFullSemver("0.0.3-test.1", continuousDelivery); fixture.AssertFullSemver("0.0.3-test.1+1", manualDeployment); fixture.MakeACommit(); // ✅ succeeds as expected - //fixture.AssertFullSemver("0.0.3-test.2", trunkBased); - //fixture.AssertFullSemver("?", continuousDeployment); + fixture.AssertFullSemver("0.0.3", continuousDeployment); fixture.AssertFullSemver("0.0.3-test.2", continuousDelivery); fixture.AssertFullSemver("0.0.3-test.1+2", manualDeployment); @@ -211,7 +187,6 @@ public void MergeFeatureToMain() fixture.Repository.Branches.Remove("feature/test"); // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.3", trunkBased); fixture.AssertFullSemver("0.0.3", continuousDeployment); fixture.AssertFullSemver("0.0.3-3", continuousDelivery); fixture.AssertFullSemver("0.0.3-1+3", manualDeployment); @@ -226,7 +201,6 @@ public void MergeFeatureToMainWithPreviousCommits() fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.3", trunkBased); fixture.AssertFullSemver("0.0.3", continuousDeployment); fixture.AssertFullSemver("0.0.3-1", continuousDelivery); fixture.AssertFullSemver("0.0.3-1+1", manualDeployment); @@ -234,7 +208,6 @@ public void MergeFeatureToMainWithPreviousCommits() fixture.MakeACommit(); // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.4", trunkBased); fixture.AssertFullSemver("0.0.3", continuousDeployment); fixture.AssertFullSemver("0.0.3-2", continuousDelivery); fixture.AssertFullSemver("0.0.3-1+2", manualDeployment); @@ -243,16 +216,14 @@ public void MergeFeatureToMainWithPreviousCommits() fixture.MakeACommit(); // ✅ succeeds as expected - //fixture.AssertFullSemver("0.0.5-test.1", trunkBased); - //fixture.AssertFullSemver("?", continuousDeployment); + fixture.AssertFullSemver("0.0.3", continuousDeployment); fixture.AssertFullSemver("0.0.3-test.3", continuousDelivery); fixture.AssertFullSemver("0.0.3-test.1+3", manualDeployment); fixture.MakeACommit(); // ✅ succeeds as expected - //fixture.AssertFullSemver("0.0.5-test.2", trunkBased); - //fixture.AssertFullSemver("?", continuousDeployment); + fixture.AssertFullSemver("0.0.3", continuousDeployment); fixture.AssertFullSemver("0.0.3-test.4", continuousDelivery); fixture.AssertFullSemver("0.0.3-test.1+4", manualDeployment); @@ -261,7 +232,6 @@ public void MergeFeatureToMainWithPreviousCommits() fixture.Repository.Branches.Remove("feature/test"); // ✅ succeeds as expected - fixture.AssertFullSemver("0.0.5", trunkBased); fixture.AssertFullSemver("0.0.3", continuousDeployment); fixture.AssertFullSemver("0.0.3-5", continuousDelivery); fixture.AssertFullSemver("0.0.3-1+5", manualDeployment); @@ -277,16 +247,14 @@ public void MergeFeatureToMainWithMinorMinorSemversionIncrement() fixture.MakeACommit("+semver: minor"); // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-test.1", trunkBased); - //fixture.AssertFullSemver("?", continuousDeployment); + fixture.AssertFullSemver("0.1.0", continuousDeployment); fixture.AssertFullSemver("0.1.0-test.1", continuousDelivery); fixture.AssertFullSemver("0.1.0-test.1+1", manualDeployment); fixture.MakeACommit("+semver: minor"); // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0-test.2", trunkBased); - //fixture.AssertFullSemver("?", continuousDeployment); + fixture.AssertFullSemver("0.1.0", continuousDeployment); fixture.AssertFullSemver("0.1.0-test.2", continuousDelivery); fixture.AssertFullSemver("0.1.0-test.1+2", manualDeployment); @@ -295,7 +263,6 @@ public void MergeFeatureToMainWithMinorMinorSemversionIncrement() fixture.Repository.Branches.Remove("feature/test"); // ✅ succeeds as expected - //fixture.AssertFullSemver("0.2.0", trunkBased); fixture.AssertFullSemver("0.1.0", continuousDeployment); fixture.AssertFullSemver("0.1.0-3", continuousDelivery); fixture.AssertFullSemver("0.1.0-1+3", manualDeployment); @@ -311,16 +278,14 @@ public void MergeFeatureToMainWithMajorMinorSemversionIncrement() fixture.MakeACommit("+semver: major"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-test.1", trunkBased); - //fixture.AssertFullSemver("?", continuousDeployment); + fixture.AssertFullSemver("1.0.0", continuousDeployment); fixture.AssertFullSemver("1.0.0-test.1", continuousDelivery); fixture.AssertFullSemver("1.0.0-test.1+1", manualDeployment); fixture.MakeACommit("+semver: minor"); // ✅ succeeds as expected - fixture.AssertFullSemver("1.0.0-test.2", trunkBased); - //fixture.AssertFullSemver("?", continuousDeployment); + fixture.AssertFullSemver("1.0.0", continuousDeployment); fixture.AssertFullSemver("1.0.0-test.2", continuousDelivery); fixture.AssertFullSemver("1.0.0-test.1+2", manualDeployment); @@ -329,7 +294,6 @@ public void MergeFeatureToMainWithMajorMinorSemversionIncrement() fixture.Repository.Branches.Remove("feature/test"); // ✅ succeeds as expected - //fixture.AssertFullSemver("1.1.0", trunkBased); fixture.AssertFullSemver("1.0.0", continuousDeployment); fixture.AssertFullSemver("1.0.0-3", continuousDelivery); fixture.AssertFullSemver("1.0.0-1+3", manualDeployment); @@ -344,7 +308,6 @@ public void MergeFeatureToMainWithPreviousCommitsAndMinorMinorSemversionIncremen fixture.MakeACommit("+semver: minor"); // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0", trunkBased); fixture.AssertFullSemver("0.1.0", continuousDeployment); fixture.AssertFullSemver("0.1.0-1", continuousDelivery); fixture.AssertFullSemver("0.1.0-1+1", manualDeployment); @@ -352,7 +315,6 @@ public void MergeFeatureToMainWithPreviousCommitsAndMinorMinorSemversionIncremen fixture.MakeACommit("+semver: minor"); // ✅ succeeds as expected - fixture.AssertFullSemver("0.2.0", trunkBased); fixture.AssertFullSemver("0.1.0", continuousDeployment); fixture.AssertFullSemver("0.1.0-2", continuousDelivery); fixture.AssertFullSemver("0.1.0-1+2", manualDeployment); @@ -361,16 +323,14 @@ public void MergeFeatureToMainWithPreviousCommitsAndMinorMinorSemversionIncremen fixture.MakeACommit("+semver: minor"); // ✅ succeeds as expected - //fixture.AssertFullSemver("0.3.0-test.1", trunkBased); - //fixture.AssertFullSemver("?", continuousDeployment); + fixture.AssertFullSemver("0.1.0", continuousDeployment); fixture.AssertFullSemver("0.1.0-test.3", continuousDelivery); fixture.AssertFullSemver("0.1.0-test.1+3", manualDeployment); fixture.MakeACommit("+semver: minor"); // ✅ succeeds as expected - //fixture.AssertFullSemver("0.4.0-test.2", trunkBased); - //fixture.AssertFullSemver("?", continuousDeployment); + fixture.AssertFullSemver("0.1.0", continuousDeployment); fixture.AssertFullSemver("0.1.0-test.4", continuousDelivery); fixture.AssertFullSemver("0.1.0-test.1+4", manualDeployment); @@ -379,7 +339,6 @@ public void MergeFeatureToMainWithPreviousCommitsAndMinorMinorSemversionIncremen fixture.Repository.Branches.Remove("feature/test"); // ✅ succeeds as expected - //fixture.AssertFullSemver("0.4.0", trunkBased); fixture.AssertFullSemver("0.1.0", continuousDeployment); fixture.AssertFullSemver("0.1.0-5", continuousDelivery); fixture.AssertFullSemver("0.1.0-1+5", manualDeployment); @@ -394,7 +353,6 @@ public void MergeFeatureToMainWithPreviousCommitsAndMinorMajorSemversionIncremen fixture.MakeACommit("+semver: minor"); // ✅ succeeds as expected - fixture.AssertFullSemver("0.1.0", trunkBased); fixture.AssertFullSemver("0.1.0", continuousDeployment); fixture.AssertFullSemver("0.1.0-1", continuousDelivery); fixture.AssertFullSemver("0.1.0-1+1", manualDeployment); @@ -402,7 +360,6 @@ public void MergeFeatureToMainWithPreviousCommitsAndMinorMajorSemversionIncremen fixture.MakeACommit("+semver: major"); // ✅ succeeds as expected - //fixture.AssertFullSemver("1.1.0", trunkBased); fixture.AssertFullSemver("1.0.0", continuousDeployment); fixture.AssertFullSemver("1.0.0-2", continuousDelivery); fixture.AssertFullSemver("1.0.0-1+2", manualDeployment); @@ -410,7 +367,6 @@ public void MergeFeatureToMainWithPreviousCommitsAndMinorMajorSemversionIncremen fixture.MakeACommit("+semver: minor"); // ✅ succeeds as expected - //fixture.AssertFullSemver("1.1.0", trunkBased); fixture.AssertFullSemver("1.0.0", continuousDeployment); fixture.AssertFullSemver("1.0.0-3", continuousDelivery); fixture.AssertFullSemver("1.0.0-1+3", manualDeployment); @@ -419,16 +375,14 @@ public void MergeFeatureToMainWithPreviousCommitsAndMinorMajorSemversionIncremen fixture.MakeACommit("+semver: major"); // ✅ succeeds as expected - //fixture.AssertFullSemver("2.1.0-test.1", trunkBased); - //fixture.AssertFullSemver("?", continuousDeployment); + fixture.AssertFullSemver("1.0.0", continuousDeployment); fixture.AssertFullSemver("1.0.0-test.4", continuousDelivery); fixture.AssertFullSemver("1.0.0-test.1+4", manualDeployment); fixture.MakeACommit("+semver: minor"); // ✅ succeeds as expected - //fixture.AssertFullSemver("2.2.0-test.2", trunkBased); - //fixture.AssertFullSemver("?", continuousDeployment); + fixture.AssertFullSemver("1.0.0", continuousDeployment); fixture.AssertFullSemver("1.0.0-test.5", continuousDelivery); fixture.AssertFullSemver("1.0.0-test.1+5", manualDeployment); @@ -437,7 +391,6 @@ public void MergeFeatureToMainWithPreviousCommitsAndMinorMajorSemversionIncremen fixture.Repository.Branches.Remove("feature/test"); // ✅ succeeds as expected - //fixture.AssertFullSemver("2.2.0", trunkBased); fixture.AssertFullSemver("1.0.0", continuousDeployment); fixture.AssertFullSemver("1.0.0-6", continuousDelivery); fixture.AssertFullSemver("1.0.0-1+6", manualDeployment); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs index 085c667bb5..9da73925f9 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs @@ -83,7 +83,7 @@ public void FeatureFromMainBranchWithMainline(bool withPullRequestIntoMain) { var configuration = GitFlowConfigurationBuilder.New .WithNextVersion("1.2.0") - .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrunkBased) + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) .Build(); using EmptyRepositoryFixture fixture = new("main"); @@ -224,7 +224,7 @@ public void HotfixBranchWithMainline(bool withPullRequestIntoMain) { var configuration = GitFlowConfigurationBuilder.New .WithNextVersion("1.2.0") - .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrunkBased) + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) .Build(); using EmptyRepositoryFixture fixture = new("main"); @@ -365,7 +365,7 @@ public void VersionedHotfixBranchWithMainline(bool withPullRequestIntoMain) { var configuration = GitFlowConfigurationBuilder.New .WithNextVersion("1.2.0") - .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrunkBased) + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) .Build(); using EmptyRepositoryFixture fixture = new("main"); @@ -506,7 +506,7 @@ public void ReleaseBranchWithMainline(bool withPullRequestIntoMain) { var configuration = GitFlowConfigurationBuilder.New .WithNextVersion("1.2.0") - .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrunkBased) + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) .Build(); using EmptyRepositoryFixture fixture = new("main"); @@ -647,7 +647,7 @@ public void VersionedReleaseBranchWithMainline(bool withPullRequestIntoMain) { var configuration = GitFlowConfigurationBuilder.New .WithNextVersion("1.2.0") - .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrunkBased) + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) .Build(); using EmptyRepositoryFixture fixture = new("main"); @@ -810,7 +810,7 @@ public void DevelopBranchWithMainline(bool withPullRequestIntoMain) { var configuration = GitFlowConfigurationBuilder.New .WithNextVersion("1.2.0") - .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrackReleaseBranches, VersionStrategies.TrunkBased) + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrackReleaseBranches, VersionStrategies.Mainline) .Build(); using EmptyRepositoryFixture fixture = new("main"); @@ -984,7 +984,7 @@ public void SupportBranchWithMainline(bool withPullRequestIntoSupport) { var configuration = GitFlowConfigurationBuilder.New .WithNextVersion("1.2.0") - .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrackReleaseBranches, VersionStrategies.TrunkBased) + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrackReleaseBranches, VersionStrategies.Mainline) .Build(); using EmptyRepositoryFixture fixture = new("main"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitHubFlow.cs b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitHubFlow.cs index 14e9ef28a0..d892bdd1d7 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitHubFlow.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitHubFlow.cs @@ -83,7 +83,7 @@ public void FeatureBranchWithMainline(bool withPullRequestIntoMain) { var configuration = GitHubFlowConfigurationBuilder.New .WithNextVersion("1.2.0") - .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrunkBased) + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) .Build(); using EmptyRepositoryFixture fixture = new("main"); @@ -224,7 +224,7 @@ public void ReleaseBranchWithMainline(bool withPullRequestIntoMain) { var configuration = GitHubFlowConfigurationBuilder.New .WithNextVersion("1.2.0") - .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrunkBased) + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) .Build(); using EmptyRepositoryFixture fixture = new("main"); @@ -365,7 +365,7 @@ public void VersionedReleaseBranchWithMainline(bool withPullRequestIntoMain) { var configuration = GitHubFlowConfigurationBuilder.New .WithNextVersion("1.2.0") - .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrunkBased) + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) .Build(); using EmptyRepositoryFixture fixture = new("main"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/TrunkBasedDevelopmentScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/MainlineDevelopmentScenarios.cs similarity index 99% rename from src/GitVersion.Core.Tests/IntegrationTests/TrunkBasedDevelopmentScenarios.cs rename to src/GitVersion.Core.Tests/IntegrationTests/MainlineDevelopmentScenarios.cs index 90f814a906..366c593102 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/TrunkBasedDevelopmentScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/MainlineDevelopmentScenarios.cs @@ -4,10 +4,10 @@ namespace GitVersion.Core.Tests.IntegrationTests; -public class TrunkBasedDevelopmentScenarios : TestBase +public class MainlineDevelopmentScenarios : TestBase { private static GitFlowConfigurationBuilder GetConfigurationBuilder() => GitFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased) + .WithVersionStrategy(VersionStrategies.Mainline) .WithBranch("main", builder => builder .WithIsMainBranch(true).WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ContinuousDeployment) @@ -424,7 +424,7 @@ public void MergingFeatureBranchThatIncrementsMinorNumberIncrementsMinorVersionO public void VerifyIncrementConfigIsHonoured() { var minorIncrementConfig = GitFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased) + .WithVersionStrategy(VersionStrategies.Mainline) .WithBranch("main", builder => builder .WithDeploymentMode(DeploymentMode.ContinuousDeployment) .WithIncrement(IncrementStrategy.None) diff --git a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs index eecb4da7ba..0ceff64960 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs @@ -1256,10 +1256,10 @@ public void EnsureVersionAfterMainIsMergedBackToDevelopIsCorrect() [TestCase(false, "2.0.0-alpha.2")] [TestCase(true, "2.0.0-alpha.2")] - public void EnsureVersionAfterMainIsMergedBackToDevelopIsCorrectForTrunkBased(bool applyTag, string semanticVersion) + public void EnsureVersionAfterMainIsMergedBackToDevelopIsCorrectForMainline(bool applyTag, string semanticVersion) { var configuration = GitFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased) + .WithVersionStrategy(VersionStrategies.Mainline) .Build(); using var fixture = new EmptyRepositoryFixture(); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/VersionBumpingScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/VersionBumpingScenarios.cs index c0e322fe86..5279dbaaf6 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/VersionBumpingScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/VersionBumpingScenarios.cs @@ -86,7 +86,7 @@ public void CanUseConventionalCommitsToBumpVersion(string commitMessage, string .WithMinorVersionBumpMessage("^(feat)(\\([\\w\\s-]*\\))?:") // For future debugging of this regex: https://regex101.com/r/oFpqxA/2 .WithPatchVersionBumpMessage("^(build|chore|ci|docs|fix|perf|refactor|revert|style|test)(\\([\\w\\s-]*\\))?:") - .WithVersionStrategy(VersionStrategies.TrunkBased) + .WithVersionStrategy(VersionStrategies.Mainline) .WithBranch("main", builder => builder.WithDeploymentMode(DeploymentMode.ContinuousDeployment)) .Build(); diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs similarity index 90% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs index d6dde387bd..bb66b40d71 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitFlow +internal partial class MainlineScenariosWithAGitFlow { [Parallelizable(ParallelScope.All)] public class GivenADevelopBranchWithOneCommitMergedToMainWhen { private EmptyRepositoryFixture? fixture; - private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New.WithLabel(null) - .WithVersionStrategy(VersionStrategies.TrunkBased) + private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New.WithLabel(null) + .WithVersionStrategy(VersionStrategies.Mainline) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("develop", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); @@ -58,12 +58,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, ExpectedResult = "2.0.0-alpha.1+2")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("develop", _ => _.WithIncrement(increment)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, ExpectedResult = "0.0.0-2+2")] @@ -87,12 +87,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, ExpectedResult = "2.0.0-1+2")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("develop", _ => _.WithIncrement(increment)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs similarity index 90% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs index 33fb2b9aef..c84ca98dc2 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitFlow +internal partial class MainlineScenariosWithAGitFlow { [Parallelizable(ParallelScope.All)] public class GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable { private EmptyRepositoryFixture? fixture; - private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New.WithLabel(null) - .WithVersionStrategy(VersionStrategies.TrunkBased) + private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New.WithLabel(null) + .WithVersionStrategy(VersionStrategies.Mainline) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("develop", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); @@ -60,12 +60,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, ExpectedResult = "2.0.0-alpha.1+0")] public string GetVersionWithTrackMergeTargetOnDevelop(IncrementStrategy incrementOnMain, IncrementStrategy increment) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("develop", _ => _.WithIncrement(increment).WithTrackMergeTarget(true)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, ExpectedResult = "0.0.0-alpha.1+1")] @@ -89,12 +89,12 @@ public string GetVersionWithTrackMergeTargetOnDevelop(IncrementStrategy incremen [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, ExpectedResult = "2.0.0-alpha.1+1")] public string GetVersionWithNoTrackMergeTargetOnDevelop(IncrementStrategy incrementOnMain, IncrementStrategy increment) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("develop", _ => _.WithIncrement(increment).WithTrackMergeTarget(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs similarity index 97% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs index d5459cdbbf..3160655c09 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitFlow +internal partial class MainlineScenariosWithAGitFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New.WithLabel(null) - .WithVersionStrategy(VersionStrategies.TrunkBased) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New.WithLabel(null) + .WithVersionStrategy(VersionStrategies.Mainline) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -133,12 +133,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "bar", ExpectedResult = "3.0.0-bar.1+3")] public string GetVersion(IncrementStrategy increment, IncrementStrategy incrementOnFeature, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .WithBranch("feature", _ => _.WithIncrement(incrementOnFeature)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.1+3")] @@ -227,12 +227,12 @@ public string GetVersion(IncrementStrategy increment, IncrementStrategy incremen public string GetVersionWithPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy increment, IncrementStrategy incrementOnFeature, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(incrementOnFeature)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs similarity index 93% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs index 30f8101bd8..9b2772f1a8 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithAMergeCommitFromMainWhen { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New.WithLabel(null) - .WithVersionStrategy(VersionStrategies.TrunkBased) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New.WithLabel(null) + .WithVersionStrategy(VersionStrategies.Mainline) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -67,12 +67,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, ExpectedResult = "3.0.0-foo.1+2")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, ExpectedResult = "0.0.0-foo.1+2")] @@ -100,12 +100,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, ExpectedResult = "3.0.0-foo.1+2")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, ExpectedResult = "0.0.0-foo.3+2")] @@ -133,12 +133,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, ExpectedResult = "3.0.0-foo.1+2")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, ExpectedResult = "0.0.0-foo.1+2")] @@ -166,12 +166,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, ExpectedResult = "3.0.0-foo.1+2")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs index e96310cd18..9a8ff621bf 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhen { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -140,12 +140,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -253,12 +253,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+1")] @@ -366,12 +366,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+1")] @@ -479,12 +479,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs index 193cc5aed3..85b532dd2d 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -140,12 +140,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -254,13 +254,13 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -369,13 +369,13 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "1.0.0-2+1")] @@ -484,12 +484,12 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -598,13 +598,13 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -713,13 +713,13 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "1.0.0-foo.2+1")] @@ -827,12 +827,12 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+1")] @@ -941,13 +941,13 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+1")] @@ -1056,13 +1056,13 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "1.0.0-bar.2+1")] @@ -1170,12 +1170,12 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+1")] @@ -1284,13 +1284,13 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+1")] @@ -1399,13 +1399,13 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs index aaeaa2b476..f4fae6fa1f 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -140,12 +140,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -254,13 +254,13 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -369,13 +369,13 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.1.0-2+1")] @@ -484,12 +484,12 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -598,13 +598,13 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -713,13 +713,13 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.1.0-foo.2+1")] @@ -827,12 +827,12 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+1")] @@ -941,13 +941,13 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+1")] @@ -1056,13 +1056,13 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.1.0-bar.2+1")] @@ -1170,12 +1170,12 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+1")] @@ -1284,13 +1284,13 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+1")] @@ -1399,13 +1399,13 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs index 969aaed852..479b94b421 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -140,12 +140,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -254,13 +254,13 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -369,13 +369,13 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.1-2+1")] @@ -483,12 +483,12 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -597,13 +597,13 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -712,13 +712,13 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.1-foo.2+1")] @@ -826,12 +826,12 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+1")] @@ -940,13 +940,13 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+1")] @@ -1055,13 +1055,13 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.1-bar.2+1")] @@ -1169,12 +1169,12 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+1")] @@ -1283,13 +1283,13 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+1")] @@ -1398,13 +1398,13 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs index 62e32e28ff..f8fa3b092f 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -141,12 +141,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-5+1")] @@ -254,12 +254,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+1")] @@ -367,12 +367,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+1")] @@ -480,12 +480,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs index 7236aacf6d..985860a103 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -141,12 +141,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -254,12 +254,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+1")] @@ -367,12 +367,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar+1")] @@ -480,12 +480,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs index f650c0a6cc..f27b19a36d 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -141,12 +141,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+1")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -254,12 +254,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+1")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.5+1")] @@ -367,12 +367,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+1")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+1")] @@ -480,12 +480,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+1")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs index 0c92efc643..76caf74f85 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -142,12 +142,12 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -256,12 +256,12 @@ public string GetVersionWithNoLabelOnMain( public string GetVersionWithEmptyLabelOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -370,12 +370,12 @@ public string GetVersionWithEmptyLabelOnMain( public string GetVersionWithLabelFooOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -484,12 +484,12 @@ public string GetVersionWithLabelFooOnMain( public string GetVersionWithLabelBarOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs index 009b6215d1..1d2d1e8ed3 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -140,12 +140,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -254,14 +254,14 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -370,14 +370,14 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "1.0.0-1+1")] @@ -485,12 +485,12 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -599,14 +599,14 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -715,14 +715,14 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "1.0.0-foo.1+1")] @@ -830,12 +830,12 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+1")] @@ -944,14 +944,14 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+1")] @@ -1060,14 +1060,14 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementingOnMain( public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "1.0.0-bar.1+1")] @@ -1175,12 +1175,12 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+1")] @@ -1289,14 +1289,14 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+1")] @@ -1405,14 +1405,14 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementingOnMain( public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs index 14d9c2ccdd..27d612ca90 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -140,12 +140,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -254,14 +254,14 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -370,14 +370,14 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.1.0-1+1")] @@ -485,12 +485,12 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -599,14 +599,14 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -715,14 +715,14 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.1.0-foo.1+1")] @@ -830,12 +830,12 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+1")] @@ -944,14 +944,14 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+1")] @@ -1060,14 +1060,14 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementingOnMain( public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.1.0-bar.1+1")] @@ -1175,12 +1175,12 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+1")] @@ -1289,14 +1289,14 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+1")] @@ -1405,14 +1405,14 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementingOnMain( public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs index 5f0767ae1a..04344acc30 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -140,12 +140,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -254,14 +254,14 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -370,14 +370,14 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.1-1+1")] @@ -485,12 +485,12 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -599,14 +599,14 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -715,14 +715,14 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.1-foo.1+1")] @@ -830,12 +830,12 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+1")] @@ -944,14 +944,14 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+1")] @@ -1060,14 +1060,14 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementingOnMain( public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.1-bar.1+1")] @@ -1175,12 +1175,12 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+1")] @@ -1289,14 +1289,14 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+1")] @@ -1405,14 +1405,14 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementingOnMain( public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _ .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs index 6013c955d6..5157385de6 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -141,12 +141,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-4")] @@ -254,12 +254,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-4")] @@ -367,12 +367,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-4")] @@ -480,12 +480,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs index 138761ab33..253bbcbff7 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -141,12 +141,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar")] @@ -254,12 +254,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar")] @@ -367,12 +367,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar")] @@ -480,12 +480,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+1")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs index 39f9620be2..c3335ac0da 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -141,12 +141,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.4")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.4")] @@ -254,12 +254,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.4")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.4")] @@ -367,12 +367,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.4")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.4")] @@ -480,12 +480,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.4")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs index 88ff5cce5f..87926ce5aa 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -142,12 +142,12 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+0")] @@ -236,12 +236,12 @@ public string GetVersionWithNoLabelOnMain( public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0")] @@ -350,12 +350,12 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag public string GetVersionWithEmptyLabelOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+0")] @@ -444,12 +444,12 @@ public string GetVersionWithEmptyLabelOnMain( public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0")] @@ -558,12 +558,12 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit public string GetVersionWithLabelFooOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+0")] @@ -652,12 +652,12 @@ public string GetVersionWithLabelFooOnMain( public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0")] @@ -766,12 +766,12 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa public string GetVersionWithLabelBarOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+0")] @@ -860,12 +860,12 @@ public string GetVersionWithLabelBarOnMain( public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs index 9b6b561af9..55cc9a5785 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitMergedToMainWhen { private EmptyRepositoryFixture? fixture; - private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -145,12 +145,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+2")] @@ -260,12 +260,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+2")] @@ -374,12 +374,12 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-1+2")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+2")] @@ -489,12 +489,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+2")] @@ -603,12 +603,12 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+2")] @@ -718,12 +718,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+2")] @@ -832,12 +832,12 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-bar.1+2")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+2")] @@ -947,12 +947,12 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs index 92fbe59dc1..9c0044c29b 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease { private EmptyRepositoryFixture? fixture; - private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -145,12 +145,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-5+1")] @@ -259,12 +259,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-5+1")] @@ -372,12 +372,12 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-5+1")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-5+1")] @@ -487,12 +487,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+2")] @@ -600,12 +600,12 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+2")] @@ -714,12 +714,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+2")] @@ -827,12 +827,12 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-bar.1+2")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+2")] @@ -941,12 +941,12 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs index 20c386ca0c..6b45e8f8e7 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar { private EmptyRepositoryFixture? fixture; - private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -145,12 +145,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar+1")] @@ -259,12 +259,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+2")] @@ -372,12 +372,12 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-1+2")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+2")] @@ -486,12 +486,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+2")] @@ -599,12 +599,12 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+2")] @@ -713,12 +713,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar+1")] @@ -826,12 +826,12 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-bar+1")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar+1")] @@ -940,12 +940,12 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs index 1527f08305..e9544cc614 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo { private EmptyRepositoryFixture? fixture; - private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -145,12 +145,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.5+1")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.5+1")] @@ -259,12 +259,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+2")] @@ -372,12 +372,12 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-1+2")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+2")] @@ -486,12 +486,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.5+1")] @@ -599,12 +599,12 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.5+1")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.5+1")] @@ -713,12 +713,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+2")] @@ -826,12 +826,12 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-bar.1+2")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+2")] @@ -940,12 +940,12 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs index 5a353777d3..6e207987f4 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable { private EmptyRepositoryFixture? fixture; - private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -145,12 +145,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+1")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -259,12 +259,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -372,12 +372,12 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-1+1")] public string GetVersionWithEmpyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -486,12 +486,12 @@ public string GetVersionWithEmpyLabelOnMain(IncrementStrategy incrementOnMain, I public string GetVersionWithEmpyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.1+1")] @@ -599,12 +599,12 @@ public string GetVersionWithEmpyLabelAndPreventIncrementOfMergedBranchVersionFal [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-foo.1+1")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.1+1")] @@ -713,12 +713,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.1+1")] @@ -826,12 +826,12 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.1+1")] @@ -940,12 +940,12 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs index f229797b48..e6f7d83c78 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen { private EmptyRepositoryFixture? fixture; - private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -150,12 +150,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "4.0.0-foo.1+0")] public string GetVersionWithLabelNullOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-4+0")] @@ -265,12 +265,12 @@ public string GetVersionWithLabelNullOnMain(IncrementStrategy incrementOnMain, I public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-4+0")] @@ -379,12 +379,12 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "4.0.0-foo.1+0")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-4+0")] @@ -494,12 +494,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.4+0")] @@ -608,12 +608,12 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "4.0.0-foo.1+0")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.4+0")] @@ -723,12 +723,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.4+0")] @@ -837,12 +837,12 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "4.0.0-foo.1+0")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.4+0")] @@ -952,12 +952,12 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs similarity index 84% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs index 8f8ef2bbfc..3ff90c04ea 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitWhen { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -50,11 +50,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs similarity index 89% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs index d12165d239..fff98b9e2b 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -50,11 +50,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -78,12 +78,12 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -107,12 +107,12 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs similarity index 89% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs index 3f84dc2f66..1c1c9cd7ed 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -50,11 +50,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -78,12 +78,12 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -107,12 +107,12 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs similarity index 89% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs index 9a876cf5f0..984e957fcc 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -50,11 +50,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -78,12 +78,12 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -107,12 +107,12 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs similarity index 88% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs index 9842379241..509022c68b 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -53,11 +53,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-5+0")] @@ -81,11 +81,11 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs similarity index 88% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs index 5abbaf3580..61b23319ac 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -53,11 +53,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.0.0-bar")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar+0")] @@ -81,11 +81,11 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.0.0-bar+0")] public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs similarity index 88% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs index 9fae774544..a74ea44292 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -53,11 +53,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.5+0")] @@ -81,11 +81,11 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs similarity index 87% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs index fb3d3dac19..34bc870488 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -53,11 +53,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.0.0")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+0")] @@ -81,11 +81,11 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+0")] public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs similarity index 97% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs index 67b15775fa..a4a2e00aea 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -124,12 +124,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+3")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+3")] @@ -217,12 +217,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+3")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+3")] @@ -310,12 +310,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+3")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs index 772986b48c..c55a7aaede 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithThreeCommitsMergedToMainWhen { private EmptyRepositoryFixture? fixture; - private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -149,12 +149,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+4")] public string GetVersionWithLabelNullOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+4")] @@ -264,12 +264,12 @@ public string GetVersionWithLabelNullOnMain(IncrementStrategy incrementOnMain, I public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+4")] @@ -378,12 +378,12 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-1+4")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+4")] @@ -493,12 +493,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+4")] @@ -607,12 +607,12 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+4")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+4")] @@ -722,12 +722,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+4")] @@ -836,12 +836,12 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-bar.1+4")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+4")] @@ -951,12 +951,12 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs similarity index 85% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs index 97c751018b..68966d7566 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithThreeCommitsWhen { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -56,11 +56,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+3")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs similarity index 97% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs index c0b100c769..8cf2641892 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -122,12 +122,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+2")] @@ -215,12 +215,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+2")] @@ -308,12 +308,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "2.0.0-foo.1+2")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs index 101414163d..cce2fd4716 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithTwoCommitsMergedToMainWhen { private EmptyRepositoryFixture? fixture; - private static GitFlowConfigurationBuilder TrunkBasedBuilder => GitFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -147,12 +147,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+3")] public string GetVersionWithLabelNullOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+3")] @@ -262,12 +262,12 @@ public string GetVersionWithLabelNullOnMain(IncrementStrategy incrementOnMain, I public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+3")] @@ -376,12 +376,12 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-1+3")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+3")] @@ -491,12 +491,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+3")] @@ -605,12 +605,12 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+3")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+3")] @@ -720,12 +720,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+3")] @@ -834,12 +834,12 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-bar.1+3")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+3")] @@ -949,12 +949,12 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs similarity index 85% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs index b8bea24527..afd0c2b05c 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -55,11 +55,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+2")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs similarity index 85% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs index 50ccd86281..3020904978 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -55,11 +55,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.0.3-bar+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs similarity index 85% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs index 67d7c20c26..1bb394b644 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -55,11 +55,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+2")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs index 89bf9b3e06..eb2b472df3 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithOneCommitBranchedToFeatureWhen { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -138,12 +138,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+0")] @@ -252,12 +252,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+0")] @@ -365,12 +365,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+0")] @@ -478,12 +478,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs index d8156e59d0..b034e68a17 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -138,12 +138,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+0")] @@ -252,13 +252,13 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+0")] @@ -367,13 +367,13 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "1.0.0-2+0")] @@ -482,12 +482,12 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+0")] @@ -596,13 +596,13 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+0")] @@ -711,13 +711,13 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "1.0.0-foo.2+0")] @@ -825,12 +825,12 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+0")] @@ -939,13 +939,13 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+0")] @@ -1054,13 +1054,13 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "1.0.0-bar.2+0")] @@ -1168,12 +1168,12 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+0")] @@ -1282,13 +1282,13 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+0")] @@ -1397,13 +1397,13 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs index 4019639f51..3bfce93c5f 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -138,12 +138,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+0")] @@ -252,13 +252,13 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+0")] @@ -367,13 +367,13 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.1.0-2+0")] @@ -482,12 +482,12 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+0")] @@ -596,13 +596,13 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+0")] @@ -711,13 +711,13 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.1.0-foo.2+0")] @@ -825,12 +825,12 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+0")] @@ -939,13 +939,13 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+0")] @@ -1054,13 +1054,13 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.1.0-bar.2+0")] @@ -1168,12 +1168,12 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+0")] @@ -1282,13 +1282,13 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+0")] @@ -1397,13 +1397,13 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs index 62e5d6ff53..9d83ae5d70 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -138,12 +138,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+0")] @@ -252,13 +252,13 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+0")] @@ -367,13 +367,13 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.1-2+0")] @@ -481,12 +481,12 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+0")] @@ -595,13 +595,13 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+0")] @@ -710,13 +710,13 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.1-foo.2+0")] @@ -824,12 +824,12 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+0")] @@ -938,13 +938,13 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+0")] @@ -1053,13 +1053,13 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.1-bar.2+0")] @@ -1167,12 +1167,12 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+0")] @@ -1281,13 +1281,13 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+0")] @@ -1396,13 +1396,13 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs index a50c1a162b..5830ea2d53 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -139,12 +139,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-5+0")] @@ -253,12 +253,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-4")] @@ -366,12 +366,12 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-5+0")] @@ -480,12 +480,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-4")] @@ -593,12 +593,12 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+0")] @@ -707,12 +707,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-4")] @@ -820,12 +820,12 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+0")] @@ -934,12 +934,12 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs index 25b6ad9987..369ea52f69 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -139,12 +139,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar+0")] @@ -253,12 +253,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar")] @@ -366,12 +366,12 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+0")] @@ -480,12 +480,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar")] @@ -593,12 +593,12 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.2+0")] @@ -707,12 +707,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar")] @@ -820,12 +820,12 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar+0")] @@ -934,12 +934,12 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs index f663364bc2..adeb9fb6be 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -139,12 +139,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.4")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.5+0")] @@ -253,12 +253,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.4")] @@ -366,12 +366,12 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.4")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+0")] @@ -480,12 +480,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.4")] @@ -593,12 +593,12 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.4")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.5+0")] @@ -707,12 +707,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.4")] @@ -820,12 +820,12 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0-foo.4")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.2+0")] @@ -934,12 +934,12 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs index ecef9b1c3d..41117fbe87 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -139,12 +139,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+0")] @@ -253,12 +253,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0")] @@ -366,12 +366,12 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+0")] @@ -480,12 +480,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0")] @@ -593,12 +593,12 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.1+0")] @@ -707,12 +707,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0")] @@ -820,12 +820,12 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "0.0.0")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.1+0")] @@ -934,12 +934,12 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTaggedFalseOnFeature( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs similarity index 84% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs index 10908de45a..38b2bfc8c8 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithOneCommitWhen { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -50,11 +50,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs similarity index 89% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs index e016a3633f..0133e2b3f0 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -50,11 +50,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -78,12 +78,12 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -107,12 +107,12 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs similarity index 89% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs index ab8ee19875..92397b4354 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -50,11 +50,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -78,12 +78,12 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -107,12 +107,12 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs similarity index 89% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs index 371606ec94..a513a2d2e3 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -50,11 +50,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -78,12 +78,12 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-1+1")] @@ -107,12 +107,12 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs similarity index 84% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs index 48cf614d0f..eb5a9331c7 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -51,11 +51,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs similarity index 84% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs index 77fb96cb38..f38277b7d8 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -51,11 +51,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.0.0-bar")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs similarity index 84% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs index 2d96a45c8b..4be4581604 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -51,11 +51,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs similarity index 84% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs index b96c62a6af..f36826d8b3 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -51,11 +51,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.0.0")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs similarity index 85% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs index 9b82d11f7f..218000cfa8 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithThreeCommitsWhen { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -54,11 +54,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "3.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs index daa7518428..619534d3ff 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -140,12 +140,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-3+0")] @@ -253,12 +253,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.3+0")] @@ -366,12 +366,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.3+0")] @@ -479,12 +479,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs index f00c2d00ee..46789d0f70 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -140,12 +140,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-3+0")] @@ -253,13 +253,13 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-3+0")] @@ -367,13 +367,13 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(Incremen [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "1.0.0-3+0")] @@ -481,12 +481,12 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(Increme [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-3+0")] @@ -596,13 +596,13 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-3+0")] @@ -712,13 +712,13 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "1.0.0-foo.3+0")] @@ -826,12 +826,12 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.3+0")] @@ -940,13 +940,13 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndDisabledMessageIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.3+0")] @@ -1055,14 +1055,14 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementModeOnMain( public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "1.0.0-bar.3+0")] @@ -1170,12 +1170,12 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.3+0")] @@ -1284,13 +1284,13 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndDisabledMessageIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.3+0")] @@ -1399,13 +1399,13 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementModeOnMain( public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs index 53ddc84c9e..1e69f79653 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -140,12 +140,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-3+0")] @@ -253,13 +253,13 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-3+0")] @@ -367,13 +367,13 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(Incremen [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.1.0-3+0")] @@ -481,12 +481,12 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(Increme [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-3+0")] @@ -596,13 +596,13 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-3+0")] @@ -712,13 +712,13 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.1.0-foo.3+0")] @@ -826,12 +826,12 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.3+0")] @@ -940,13 +940,13 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndDisabledMessageIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.3+0")] @@ -1055,14 +1055,14 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementModeOnMain( public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.1.0-bar.3+0")] @@ -1170,12 +1170,12 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.3+0")] @@ -1284,13 +1284,13 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndDisabledMessageIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.3+0")] @@ -1399,13 +1399,13 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementModeOnMain( public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs index 44eb2c83a2..f1fd023e85 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -140,12 +140,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-3+0")] @@ -253,13 +253,13 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-3+0")] @@ -367,13 +367,13 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(Incremen [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.1-3+0")] @@ -481,12 +481,12 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(Increme [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-3+0")] @@ -596,13 +596,13 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-3+0")] @@ -712,13 +712,13 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.1-foo.3+0")] @@ -826,12 +826,12 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.3+0")] @@ -940,13 +940,13 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelFooAndDisabledMessageIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-foo.3+0")] @@ -1055,14 +1055,14 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementModeOnMain( public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.1-bar.3+0")] @@ -1170,12 +1170,12 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain( [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.3+0")] @@ -1284,13 +1284,13 @@ public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarAndDisabledMessageIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.0-bar.3+0")] @@ -1399,13 +1399,13 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementModeOnMain( public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs index 47ce985b4f..c46a8d5034 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -141,12 +141,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.3-6+0")] @@ -254,12 +254,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.3-foo.3+0")] @@ -367,12 +367,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.3-bar.3+0")] @@ -480,12 +480,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs index 5077a32f32..9205332abe 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -141,12 +141,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.3-3+0")] @@ -254,12 +254,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.3-foo.3+0")] @@ -367,12 +367,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.3-bar+0")] @@ -480,12 +480,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "3.0.0-foo.1+0")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs index c398abf1be..3f1b63e185 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -141,12 +141,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.3-3+0")] @@ -254,12 +254,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.3-foo.6+0")] @@ -367,12 +367,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.3-bar.3+0")] @@ -480,12 +480,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs similarity index 98% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs index 5f93545dc7..51a859036c 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) .WithBranch("feature", _ => _ .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) @@ -141,12 +141,12 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.3-2+0")] @@ -254,12 +254,12 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.3-foo.2+0")] @@ -367,12 +367,12 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, IncrementStrategy.None, null, ExpectedResult = "0.0.3-bar.2+0")] @@ -480,12 +480,12 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "2.0.0-foo.1+0")] public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs similarity index 84% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs index 9135837571..854c4dac22 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsWhen { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -52,11 +52,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs similarity index 89% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs index 6752bc8a94..554e8a4db2 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -52,11 +52,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -80,12 +80,12 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -109,12 +109,12 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs similarity index 89% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs index c0ea1976e5..41c92cc59d 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -52,11 +52,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -80,12 +80,12 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -109,12 +109,12 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs similarity index 89% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs index 3a707f9fa0..8041108063 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -52,11 +52,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -80,12 +80,12 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -109,12 +109,12 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs similarity index 85% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs index 61ea406039..2b9dff7f1e 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -53,11 +53,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs similarity index 85% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs index 713dcaf723..93aa7cd67a 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -53,11 +53,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs similarity index 85% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs index 8693701841..cf823959c8 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -53,11 +53,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs similarity index 85% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs index 30a5535474..555cf673d8 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -53,11 +53,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "1.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs similarity index 89% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs index a3e45161f5..35d3b44309 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -52,11 +52,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -80,12 +80,12 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -109,12 +109,12 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs similarity index 89% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs index 4a236a3efb..6ce5fc53fc 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -52,11 +52,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -80,12 +80,12 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -109,12 +109,12 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs similarity index 89% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs index 0e6f03bfcc..b15b1bdf22 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -52,11 +52,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -80,12 +80,12 @@ public string GetVersion(IncrementStrategy increment, string? label) [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } [TestCase(IncrementStrategy.None, null, ExpectedResult = "0.0.0-2+1")] @@ -109,12 +109,12 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs similarity index 85% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs index 5aa0122b0c..d6ca80b48d 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -53,11 +53,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs similarity index 85% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs index 15e7652db3..2db9bb62a9 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -53,11 +53,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.2.0-bar")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs similarity index 85% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs index be2b625fb9..82c38a98ed 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -53,11 +53,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "2.0.0-bar.1+1")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs similarity index 84% rename from src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs rename to src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs index fc773d91ab..142b30d65a 100644 --- a/src/GitVersion.Core.Tests/TrunkBased/TrunkBasedScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs @@ -3,17 +3,17 @@ using GitVersion.Core.Tests.IntegrationTests; using GitVersion.VersionCalculation; -namespace GitVersion.Core.TrunkBased; +namespace GitVersion.Core.Mainline; -internal partial class TrunkBasedScenariosWithAGitHubFlow +internal partial class MainlineScenariosWithAGitHubFlow { [Parallelizable(ParallelScope.All)] public class GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable { private EmptyRepositoryFixture? fixture; - private static GitHubFlowConfigurationBuilder TrunkBasedBuilder => GitHubFlowConfigurationBuilder.New - .WithVersionStrategy(VersionStrategies.TrunkBased).WithLabel(null) + private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New + .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] @@ -53,11 +53,11 @@ public void OneTimeSetUp() [TestCase(IncrementStrategy.Major, "bar", ExpectedResult = "0.2.0")] public string GetVersion(IncrementStrategy increment, string? label) { - IGitVersionConfiguration trunkBased = TrunkBasedBuilder + IGitVersionConfiguration mainline = MainlineBuilder .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) .Build(); - return fixture!.GetVersion(trunkBased).FullSemVer; + return fixture!.GetVersion(mainline).FullSemVer; } } } diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index c022ac619e..1b72e90e01 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -698,11 +698,11 @@ GitVersion.VersionCalculation.VersionCalculationModule.VersionCalculationModule( GitVersion.VersionCalculation.VersionStrategies GitVersion.VersionCalculation.VersionStrategies.ConfiguredNextVersion = 2 -> GitVersion.VersionCalculation.VersionStrategies GitVersion.VersionCalculation.VersionStrategies.Fallback = 1 -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategies.Mainline = 64 -> GitVersion.VersionCalculation.VersionStrategies GitVersion.VersionCalculation.VersionStrategies.MergeMessage = 4 -> GitVersion.VersionCalculation.VersionStrategies GitVersion.VersionCalculation.VersionStrategies.None = 0 -> GitVersion.VersionCalculation.VersionStrategies GitVersion.VersionCalculation.VersionStrategies.TaggedCommit = 8 -> GitVersion.VersionCalculation.VersionStrategies GitVersion.VersionCalculation.VersionStrategies.TrackReleaseBranches = 16 -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategies.TrunkBased = 64 -> GitVersion.VersionCalculation.VersionStrategies GitVersion.VersionCalculation.VersionStrategies.VersionInBranchName = 32 -> GitVersion.VersionCalculation.VersionStrategies GitVersion.VersionCalculation.VersionStrategyModule GitVersion.VersionCalculation.VersionStrategyModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichIncrement.cs b/src/GitVersion.Core/VersionCalculation/Mainline/EnrichIncrement.cs similarity index 86% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichIncrement.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/EnrichIncrement.cs index 0b1a3d4086..91ad98cdd9 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichIncrement.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/EnrichIncrement.cs @@ -3,11 +3,11 @@ using GitVersion.Extensions; using GitVersion.Git; -namespace GitVersion.VersionCalculation.TrunkBased; +namespace GitVersion.VersionCalculation.Mainline; -internal sealed class EnrichIncrement : ITrunkBasedContextPreEnricher +internal sealed class EnrichIncrement : IContextPreEnricher { - public void Enrich(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public void Enrich(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { var effectiveConfiguration = commit.GetEffectiveConfiguration(context.Configuration); var incrementForcedByBranch = effectiveConfiguration.Increment.ToVersionField(); @@ -27,7 +27,7 @@ public void Enrich(TrunkBasedIteration iteration, TrunkBasedCommit commit, Trunk } private static VersionField GetIncrementForcedByCommit( - TrunkBasedContext context, ICommit commit, EffectiveConfiguration configuration) + MainlineContext context, ICommit commit, EffectiveConfiguration configuration) { context.NotNull(); commit.NotNull(); diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichSemanticVersion.cs b/src/GitVersion.Core/VersionCalculation/Mainline/EnrichSemanticVersion.cs similarity index 76% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichSemanticVersion.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/EnrichSemanticVersion.cs index 41c0af40e0..ec0efc946b 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/EnrichSemanticVersion.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/EnrichSemanticVersion.cs @@ -1,11 +1,11 @@ using GitVersion.Configuration; using GitVersion.Extensions; -namespace GitVersion.VersionCalculation.TrunkBased; +namespace GitVersion.VersionCalculation.Mainline; -internal sealed class EnrichSemanticVersion : ITrunkBasedContextPreEnricher +internal sealed class EnrichSemanticVersion : IContextPreEnricher { - public void Enrich(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public void Enrich(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { var branchSpecificLabel = context.TargetLabel; branchSpecificLabel ??= iteration.GetEffectiveConfiguration(context.Configuration) diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/IContextPostEnricher.cs b/src/GitVersion.Core/VersionCalculation/Mainline/IContextPostEnricher.cs new file mode 100644 index 0000000000..301ddccca0 --- /dev/null +++ b/src/GitVersion.Core/VersionCalculation/Mainline/IContextPostEnricher.cs @@ -0,0 +1,6 @@ +namespace GitVersion.VersionCalculation.Mainline; + +internal interface IContextPostEnricher +{ + void Enrich(MainlineIteration iteration, MainlineCommit commit, MainlineContext context); +} diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/IContextPreEnricher.cs b/src/GitVersion.Core/VersionCalculation/Mainline/IContextPreEnricher.cs new file mode 100644 index 0000000000..cff057cc93 --- /dev/null +++ b/src/GitVersion.Core/VersionCalculation/Mainline/IContextPreEnricher.cs @@ -0,0 +1,6 @@ +namespace GitVersion.VersionCalculation.Mainline; + +internal interface IContextPreEnricher +{ + void Enrich(MainlineIteration iteration, MainlineCommit commit, MainlineContext context); +} diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/IIncrementer.cs b/src/GitVersion.Core/VersionCalculation/Mainline/IIncrementer.cs new file mode 100644 index 0000000000..eeb2ef0a9c --- /dev/null +++ b/src/GitVersion.Core/VersionCalculation/Mainline/IIncrementer.cs @@ -0,0 +1,9 @@ +namespace GitVersion.VersionCalculation.Mainline; + +internal interface IIncrementer +{ + bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context); + + IEnumerable GetIncrements( + MainlineIteration iteration, MainlineCommit commit, MainlineContext context); +} diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs b/src/GitVersion.Core/VersionCalculation/Mainline/MainlineCommit.cs similarity index 81% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/MainlineCommit.cs index d43c53951e..2148aa7cdc 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedCommit.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/MainlineCommit.cs @@ -3,21 +3,21 @@ using GitVersion.Extensions; using GitVersion.Git; -namespace GitVersion.VersionCalculation.TrunkBased; +namespace GitVersion.VersionCalculation.Mainline; [DebuggerDisplay( @"\{ BranchName = {" + nameof(BranchName) + "}, Increment = {" + nameof(Increment) + "}, " + "HasSuccessor = {" + nameof(HasSuccessor) + "}, HasPredecessor = {" + nameof(HasPredecessor) + "}, " + "HasChildIteration = {" + nameof(HasChildIteration) + "}, Message = {" + nameof(Message) + @"} \}" )] -internal record TrunkBasedCommit(TrunkBasedIteration Iteration, ICommit? value, ReferenceName BranchName, IBranchConfiguration Configuration) +internal record MainlineCommit(MainlineIteration Iteration, ICommit? value, ReferenceName BranchName, IBranchConfiguration Configuration) { public bool IsPredecessorTheLastCommitOnTrunk(IGitVersionConfiguration configuration) => !GetEffectiveConfiguration(configuration).IsMainBranch && Predecessor?.GetEffectiveConfiguration(configuration).IsMainBranch == true; public VersionField Increment { get; set; } - public TrunkBasedIteration Iteration { get; } = Iteration.NotNull(); + public MainlineIteration Iteration { get; } = Iteration.NotNull(); public ReferenceName BranchName { get; } = BranchName.NotNull(); @@ -25,11 +25,11 @@ public bool IsPredecessorTheLastCommitOnTrunk(IGitVersionConfiguration configura public bool HasSuccessor => Successor is not null; - public TrunkBasedCommit? Successor { get; private set; } + public MainlineCommit? Successor { get; private set; } public bool HasPredecessor => Predecessor is not null; - public TrunkBasedCommit? Predecessor { get; private set; } + public MainlineCommit? Predecessor { get; private set; } public ICommit Value => IsDummy ? (Successor?.Value)! : value!; @@ -38,14 +38,14 @@ public bool IsPredecessorTheLastCommitOnTrunk(IGitVersionConfiguration configura public string Message => IsDummy ? "<>" : Value.Message; - public TrunkBasedIteration? ChildIteration { get; private set; } + public MainlineIteration? ChildIteration { get; private set; } [MemberNotNullWhen(true, nameof(ChildIteration))] public bool HasChildIteration => ChildIteration is not null && ChildIteration.Commits.Count != 0; - public TrunkBasedIteration? ParentIteration => Iteration.ParentIteration; + public MainlineIteration? ParentIteration => Iteration.ParentIteration; - public TrunkBasedCommit? ParentCommit => Iteration.ParentCommit; + public MainlineCommit? ParentCommit => Iteration.ParentCommit; [MemberNotNullWhen(true, nameof(ParentIteration), nameof(ParentCommit))] public bool HasParentIteration => Iteration.ParentIteration is not null && Iteration.ParentCommit is not null; @@ -101,14 +101,14 @@ public void AddSemanticVersions(IEnumerable values) } } - public void AddChildIteration(TrunkBasedIteration iteration) => ChildIteration = iteration.NotNull(); + public void AddChildIteration(MainlineIteration iteration) => ChildIteration = iteration.NotNull(); - public TrunkBasedCommit Append( + public MainlineCommit Append( ICommit? value, ReferenceName branchName, IBranchConfiguration configuration) { if (HasPredecessor) throw new InvalidOperationException(); - TrunkBasedCommit commit = new(Iteration, value, branchName, configuration); + MainlineCommit commit = new(Iteration, value, branchName, configuration); Predecessor = commit; commit.Successor = this; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedContext.cs b/src/GitVersion.Core/VersionCalculation/Mainline/MainlineContext.cs similarity index 78% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedContext.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/MainlineContext.cs index 8dbd7712c8..3657484b37 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedContext.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/MainlineContext.cs @@ -2,9 +2,9 @@ using GitVersion.Extensions; using GitVersion.Git; -namespace GitVersion.VersionCalculation.TrunkBased; +namespace GitVersion.VersionCalculation.Mainline; -internal record TrunkBasedContext(IIncrementStrategyFinder IncrementStrategyFinder, IGitVersionConfiguration Configuration) +internal record MainlineContext(IIncrementStrategyFinder IncrementStrategyFinder, IGitVersionConfiguration Configuration) { public IIncrementStrategyFinder IncrementStrategyFinder { get; } = IncrementStrategyFinder.NotNull(); diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs b/src/GitVersion.Core/VersionCalculation/Mainline/MainlineIteration.cs similarity index 70% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/MainlineIteration.cs index 2c53fbeb74..b86db33b44 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/TrunkBasedIteration.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/MainlineIteration.cs @@ -2,7 +2,7 @@ using GitVersion.Extensions; using GitVersion.Git; -namespace GitVersion.VersionCalculation.TrunkBased; +namespace GitVersion.VersionCalculation.Mainline; [DebuggerDisplay( @"\{ Id = {" + nameof(Id) + "}, " + @@ -10,7 +10,7 @@ namespace GitVersion.VersionCalculation.TrunkBased; "Depth = {" + nameof(Depth) + "}, " + "NumberOfCommits = {" + nameof(NumberOfCommits) + "}" + @"} \}" )] -internal record TrunkBasedIteration +internal record MainlineIteration { public IBranchConfiguration Configuration { get; } @@ -25,7 +25,7 @@ public EffectiveConfiguration GetEffectiveConfiguration(IGitVersionConfiguration IBranchConfiguration branchConfiguration = Configuration; - if (branchConfiguration.Increment == IncrementStrategy.Inherit && Commits.FirstOrDefault() is TrunkBasedCommit commit) + if (branchConfiguration.Increment == IncrementStrategy.Inherit && Commits.FirstOrDefault() is MainlineCommit commit) { var parentConfiguration = commit.GetEffectiveConfiguration(configuration); branchConfiguration = branchConfiguration.Inherit(parentConfiguration); @@ -34,9 +34,9 @@ public EffectiveConfiguration GetEffectiveConfiguration(IGitVersionConfiguration return this.effectiveConfiguration = new EffectiveConfiguration(configuration, branchConfiguration); } - public TrunkBasedIteration? ParentIteration { get; } + public MainlineIteration? ParentIteration { get; } - public TrunkBasedCommit? ParentCommit { get; } + public MainlineCommit? ParentCommit { get; } public string Id { get; } @@ -46,13 +46,13 @@ public EffectiveConfiguration GetEffectiveConfiguration(IGitVersionConfiguration public int NumberOfCommits => commits.Count; - public IReadOnlyCollection Commits => commits; - private readonly Stack commits = new(); + public IReadOnlyCollection Commits => commits; + private readonly Stack commits = new(); - private readonly Dictionary commitLookup = []; + private readonly Dictionary commitLookup = []; - public TrunkBasedIteration(string id, ReferenceName branchName, IBranchConfiguration configuration, - TrunkBasedIteration? parentIteration, TrunkBasedCommit? parentCommit) + public MainlineIteration(string id, ReferenceName branchName, IBranchConfiguration configuration, + MainlineIteration? parentIteration, MainlineCommit? parentCommit) { Id = id.NotNullOrEmpty(); Depth = parentIteration?.Depth ?? 0 + 1; @@ -62,15 +62,15 @@ public TrunkBasedIteration(string id, ReferenceName branchName, IBranchConfigura ParentCommit = parentCommit; } - public TrunkBasedCommit CreateCommit( + public MainlineCommit CreateCommit( ICommit? value, ReferenceName branchName, IBranchConfiguration configuration) { - TrunkBasedCommit commit; + MainlineCommit commit; if (commits.Count != 0) commit = commits.Peek().Append(value, branchName, configuration); else { - commit = new TrunkBasedCommit(this, value, branchName, configuration); + commit = new MainlineCommit(this, value, branchName, configuration); } commits.Push(commit); @@ -82,7 +82,7 @@ public TrunkBasedCommit CreateCommit( return commit; } - public TrunkBasedCommit? FindCommit(ICommit commit) + public MainlineCommit? FindCommit(ICommit commit) { commit.NotNull(); diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunk.cs similarity index 80% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunk.cs index dea1beb8bc..9b05e8cb88 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunk.cs @@ -1,8 +1,8 @@ using GitVersion.Configuration; -namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; +namespace GitVersion.VersionCalculation.Mainline.NonTrunk; -internal sealed class CommitOnNonTrunk : ITrunkBasedIncrementer +internal sealed class CommitOnNonTrunk : IIncrementer { // B 57 minutes ago (HEAD -> feature/foo) // A 58 minutes ago <<-- @@ -10,13 +10,13 @@ internal sealed class CommitOnNonTrunk : ITrunkBasedIncrementer // B 57 minutes ago (HEAD -> feature/foo) <<-- // A 58 minutes ago - public bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => !commit.HasChildIteration && !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && context.SemanticVersion is null; public IEnumerable GetIncrements( - TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { if (commit.Predecessor is not null && commit.Predecessor.BranchName != commit.BranchName) context.Label = null; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkBranchedBase.cs similarity index 78% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkBranchedBase.cs index 2fce545d32..b926b41957 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedBase.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkBranchedBase.cs @@ -1,17 +1,17 @@ using GitVersion.Configuration; using GitVersion.Extensions; -namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; +namespace GitVersion.VersionCalculation.Mainline.NonTrunk; -internal abstract class CommitOnNonTrunkBranchedBase : ITrunkBasedIncrementer +internal abstract class CommitOnNonTrunkBranchedBase : IIncrementer { - public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public virtual bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && commit.BranchName != iteration.BranchName && commit.Successor is null; public virtual IEnumerable GetIncrements( - TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { context.BaseVersionSource = commit.Value; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToNonTrunk.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkBranchedToNonTrunk.cs similarity index 74% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToNonTrunk.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkBranchedToNonTrunk.cs index c870cd297c..265a0682e1 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToNonTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkBranchedToNonTrunk.cs @@ -1,4 +1,4 @@ -namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; +namespace GitVersion.VersionCalculation.Mainline.NonTrunk; internal sealed class CommitOnNonTrunkBranchedToNonTrunk : CommitOnNonTrunkBranchedBase { @@ -13,7 +13,7 @@ internal sealed class CommitOnNonTrunkBranchedToNonTrunk : CommitOnNonTrunkBranc // |/ // A 58 minutes ago <<-- - public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => base.MatchPrecondition(iteration, commit, context) && !iteration.GetEffectiveConfiguration(context.Configuration).IsMainBranch; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToTrunk.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkBranchedToTrunk.cs similarity index 74% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToTrunk.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkBranchedToTrunk.cs index 22ff874504..0b69a31024 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkBranchedToTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkBranchedToTrunk.cs @@ -1,4 +1,4 @@ -namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; +namespace GitVersion.VersionCalculation.Mainline.NonTrunk; internal sealed class CommitOnNonTrunkBranchedToTrunk : CommitOnNonTrunkBranchedBase { @@ -13,7 +13,7 @@ internal sealed class CommitOnNonTrunkBranchedToTrunk : CommitOnNonTrunkBranched // |/ // A 58 minutes ago <<-- - public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => base.MatchPrecondition(iteration, commit, context) && iteration.GetEffectiveConfiguration(context.Configuration).IsMainBranch; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTag.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithPreReleaseTag.cs similarity index 60% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTag.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithPreReleaseTag.cs index 53d048c5d5..d829bdec15 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTag.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithPreReleaseTag.cs @@ -1,10 +1,10 @@ -namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; +namespace GitVersion.VersionCalculation.Mainline.NonTrunk; internal sealed class CommitOnNonTrunkWithPreReleaseTag : CommitOnNonTrunkWithPreReleaseTagBase { // B 57 minutes ago (HEAD -> feature/foo) // A 58 minutes ago (tag 1.2.3-1) <<-- - public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => base.MatchPrecondition(iteration, commit, context) && commit.Successor is not null; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs similarity index 76% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs index ba31a411b7..d3cb4690fd 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs @@ -1,17 +1,17 @@ using GitVersion.Configuration; using GitVersion.Extensions; -namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; +namespace GitVersion.VersionCalculation.Mainline.NonTrunk; -internal abstract class CommitOnNonTrunkWithPreReleaseTagBase : ITrunkBasedIncrementer +internal abstract class CommitOnNonTrunkWithPreReleaseTagBase : IIncrementer { - public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public virtual bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => !commit.HasChildIteration && !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && context.SemanticVersion?.IsPreRelease == true; public virtual IEnumerable GetIncrements( - TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { context.BaseVersionSource = commit.Value; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTag.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithStableTag.cs similarity index 59% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTag.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithStableTag.cs index bca6c7e7bd..ec2fdae507 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTag.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithStableTag.cs @@ -1,10 +1,10 @@ -namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; +namespace GitVersion.VersionCalculation.Mainline.NonTrunk; internal sealed class CommitOnNonTrunkWithStableTag : CommitOnNonTrunkWithStableTagBase { // B 57 minutes ago (HEAD -> feature/foo) // A 58 minutes ago (tag 1.2.3) <<-- - public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => base.MatchPrecondition(iteration, commit, context) && commit.Successor is not null; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs similarity index 71% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs index 65be56f8ec..89b7ef9f5d 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs @@ -1,17 +1,17 @@ using GitVersion.Configuration; using GitVersion.Extensions; -namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; +namespace GitVersion.VersionCalculation.Mainline.NonTrunk; -internal abstract class CommitOnNonTrunkWithStableTagBase : ITrunkBasedIncrementer +internal abstract class CommitOnNonTrunkWithStableTagBase : IIncrementer { - public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public virtual bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && !commit.HasChildIteration && context.SemanticVersion?.IsPreRelease == false; public virtual IEnumerable GetIncrements( - TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { context.BaseVersionSource = commit.Value; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/FirstCommitOnRelease.cs similarity index 80% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/FirstCommitOnRelease.cs index 94c7803fd0..d6a7d8d97c 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/FirstCommitOnRelease.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/FirstCommitOnRelease.cs @@ -1,13 +1,13 @@ using GitVersion.Configuration; -namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; +namespace GitVersion.VersionCalculation.Mainline.NonTrunk; /// /// This incrementer identifies the first commit on a branch marked with IsReleaseBranch true and appends the version number for /// instance 1.0.0 (extracted from the branch name) as an alternative semantic version to the context. This information will be /// used later to bump the version number to a higher value if necessary. /// -internal sealed class FirstCommitOnRelease : ITrunkBasedIncrementer +internal sealed class FirstCommitOnRelease : IIncrementer { // B 57 minutes ago (HEAD -> release/1.0.0) // A 58 minutes ago <<-- @@ -18,7 +18,7 @@ internal sealed class FirstCommitOnRelease : ITrunkBasedIncrementer // B 57 minutes ago <<-- // A 58 minutes ago (main) - public bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => !commit.HasChildIteration && !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && commit.GetEffectiveConfiguration(context.Configuration).IsReleaseBranch @@ -27,7 +27,7 @@ public bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit co || commit.BranchName != commit.Predecessor?.BranchName); public IEnumerable GetIncrements( - TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { var effectiveConfiguration = commit.GetEffectiveConfiguration(context.Configuration); if (commit.BranchName.TryGetSemanticVersion(out var element, effectiveConfiguration)) diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastCommitOnNonTrunkWithPreReleaseTag.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastCommitOnNonTrunkWithPreReleaseTag.cs similarity index 75% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastCommitOnNonTrunkWithPreReleaseTag.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastCommitOnNonTrunkWithPreReleaseTag.cs index 151d56927f..3316057741 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastCommitOnNonTrunkWithPreReleaseTag.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastCommitOnNonTrunkWithPreReleaseTag.cs @@ -1,15 +1,15 @@ -namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; +namespace GitVersion.VersionCalculation.Mainline.NonTrunk; internal sealed class LastCommitOnNonTrunkWithPreReleaseTag : CommitOnNonTrunkWithPreReleaseTagBase { // B 57 minutes ago (HEAD -> feature/foo) (tag 1.2.3-1) <<-- // A 58 minutes ago - public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => base.MatchPrecondition(iteration, commit, context) && commit.Successor is null; public override IEnumerable GetIncrements( - TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { foreach (var item in base.GetIncrements(iteration, commit, context)) { diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastCommitOnNonTrunkWithStableTag.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastCommitOnNonTrunkWithStableTag.cs similarity index 75% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastCommitOnNonTrunkWithStableTag.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastCommitOnNonTrunkWithStableTag.cs index b581a4342d..c9fbed2946 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastCommitOnNonTrunkWithStableTag.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastCommitOnNonTrunkWithStableTag.cs @@ -1,15 +1,15 @@ -namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; +namespace GitVersion.VersionCalculation.Mainline.NonTrunk; internal sealed class LastCommitOnNonTrunkWithStableTag : CommitOnNonTrunkWithStableTagBase { // B 57 minutes ago (HEAD -> feature/foo) (tag 1.2.3) <<-- // A 58 minutes ago - public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => base.MatchPrecondition(iteration, commit, context) && commit.Successor is null; public override IEnumerable GetIncrements( - TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { foreach (var item in base.GetIncrements(iteration, commit, context)) { diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastMergeCommitOnNonTrunk.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastMergeCommitOnNonTrunk.cs similarity index 76% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastMergeCommitOnNonTrunk.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastMergeCommitOnNonTrunk.cs index a25c69e7a4..960b7c8002 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/LastMergeCommitOnNonTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastMergeCommitOnNonTrunk.cs @@ -1,4 +1,4 @@ -namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; +namespace GitVersion.VersionCalculation.Mainline.NonTrunk; internal sealed class LastMergeCommitOnNonTrunk : MergeCommitOnNonTrunkBase { @@ -6,11 +6,11 @@ internal sealed class LastMergeCommitOnNonTrunk : MergeCommitOnNonTrunkBase // |\ // | B 56 minutes ago (feature/foo) - public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => base.MatchPrecondition(iteration, commit, context) && commit.Successor is null; public override IEnumerable GetIncrements( - TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { foreach (var item in base.GetIncrements(iteration, commit, context)) { diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunk.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/MergeCommitOnNonTrunk.cs similarity index 61% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunk.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/MergeCommitOnNonTrunk.cs index b64f5b903f..8fca598267 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/MergeCommitOnNonTrunk.cs @@ -1,4 +1,4 @@ -namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; +namespace GitVersion.VersionCalculation.Mainline.NonTrunk; internal sealed class MergeCommitOnNonTrunk : MergeCommitOnNonTrunkBase { @@ -7,6 +7,6 @@ internal sealed class MergeCommitOnNonTrunk : MergeCommitOnNonTrunkBase // |\ // | B 56 minutes ago (feature/foo) - public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => base.MatchPrecondition(iteration, commit, context) && commit.Successor is not null; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/MergeCommitOnNonTrunkBase.cs similarity index 82% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/MergeCommitOnNonTrunkBase.cs index 1479cb33cb..18b41fe1e0 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/NonTrunk/MergeCommitOnNonTrunkBase.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/MergeCommitOnNonTrunkBase.cs @@ -1,20 +1,20 @@ using GitVersion.Extensions; -namespace GitVersion.VersionCalculation.TrunkBased.NonTrunk; +namespace GitVersion.VersionCalculation.Mainline.NonTrunk; -internal abstract class MergeCommitOnNonTrunkBase : ITrunkBasedIncrementer +internal abstract class MergeCommitOnNonTrunkBase : IIncrementer { - public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public virtual bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => commit.HasChildIteration && !commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && context.SemanticVersion is null; public virtual IEnumerable GetIncrements( - TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { if (commit.ChildIteration is null) throw new InvalidOperationException("The commit child iteration is null."); - var baseVersion = TrunkBasedVersionStrategy.DetermineBaseVersionRecursive( + var baseVersion = MainlineVersionStrategy.DetermineBaseVersionRecursive( iteration: commit.ChildIteration, targetLabel: context.TargetLabel, incrementStrategyFinder: context.IncrementStrategyFinder, diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/RemoveIncrement.cs b/src/GitVersion.Core/VersionCalculation/Mainline/RemoveIncrement.cs similarity index 53% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/RemoveIncrement.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/RemoveIncrement.cs index 8e22515998..cc2687f28e 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/RemoveIncrement.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/RemoveIncrement.cs @@ -1,8 +1,8 @@ -namespace GitVersion.VersionCalculation.TrunkBased; +namespace GitVersion.VersionCalculation.Mainline; -internal sealed class RemoveIncrement : ITrunkBasedContextPostEnricher +internal sealed class RemoveIncrement : IContextPostEnricher { - public void Enrich(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public void Enrich(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { if (commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch) { diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/RemoveSemanticVersion.cs b/src/GitVersion.Core/VersionCalculation/Mainline/RemoveSemanticVersion.cs new file mode 100644 index 0000000000..802a15f491 --- /dev/null +++ b/src/GitVersion.Core/VersionCalculation/Mainline/RemoveSemanticVersion.cs @@ -0,0 +1,6 @@ +namespace GitVersion.VersionCalculation.Mainline; + +internal sealed class RemoveSemanticVersion : IContextPostEnricher +{ + public void Enrich(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => context.SemanticVersion = null; +} diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunk.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunk.cs similarity index 78% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunk.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunk.cs index d06c22f112..ad49fb058e 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunk.cs @@ -1,8 +1,8 @@ using GitVersion.Configuration; -namespace GitVersion.VersionCalculation.TrunkBased.Trunk; +namespace GitVersion.VersionCalculation.Mainline.Trunk; -internal sealed class CommitOnTrunk : ITrunkBasedIncrementer +internal sealed class CommitOnTrunk : IIncrementer { // B 57 minutes ago (HEAD -> main) <<-- // A 58 minutes ago @@ -10,12 +10,12 @@ internal sealed class CommitOnTrunk : ITrunkBasedIncrementer // B 57 minutes ago (HEAD -> main) // A 58 minutes ago <<-- - public bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => !commit.HasChildIteration && commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && context.SemanticVersion is null; public IEnumerable GetIncrements( - TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { if (commit.Predecessor is not null && commit.Predecessor.BranchName != commit.BranchName) context.Label = null; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkBranchedBase.cs similarity index 82% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkBranchedBase.cs index ed2a4831e1..c56cdea82e 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedBase.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkBranchedBase.cs @@ -1,17 +1,17 @@ using GitVersion.Configuration; using GitVersion.Extensions; -namespace GitVersion.VersionCalculation.TrunkBased.Trunk; +namespace GitVersion.VersionCalculation.Mainline.Trunk; -internal abstract class CommitOnTrunkBranchedBase : ITrunkBasedIncrementer +internal abstract class CommitOnTrunkBranchedBase : IIncrementer { - public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public virtual bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && commit.BranchName != iteration.BranchName && commit.Successor is null; public virtual IEnumerable GetIncrements( - TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { context.BaseVersionSource = commit.Value; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToNonTrunk.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkBranchedToNonTrunk.cs similarity index 74% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToNonTrunk.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkBranchedToNonTrunk.cs index cc71df969a..9ad2d1664e 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToNonTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkBranchedToNonTrunk.cs @@ -1,4 +1,4 @@ -namespace GitVersion.VersionCalculation.TrunkBased.Trunk; +namespace GitVersion.VersionCalculation.Mainline.Trunk; internal sealed class CommitOnTrunkBranchedToNonTrunk : CommitOnTrunkBranchedBase { @@ -13,7 +13,7 @@ internal sealed class CommitOnTrunkBranchedToNonTrunk : CommitOnTrunkBranchedBas // |/ // A 58 minutes ago <<-- - public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => base.MatchPrecondition(iteration, commit, context) && !iteration.GetEffectiveConfiguration(context.Configuration).IsMainBranch; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToTrunk.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkBranchedToTrunk.cs similarity index 74% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToTrunk.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkBranchedToTrunk.cs index 059fe28941..2963a6e01e 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkBranchedToTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkBranchedToTrunk.cs @@ -1,4 +1,4 @@ -namespace GitVersion.VersionCalculation.TrunkBased.Trunk; +namespace GitVersion.VersionCalculation.Mainline.Trunk; internal sealed class CommitOnTrunkBranchedToTrunk : CommitOnTrunkBranchedBase { @@ -13,7 +13,7 @@ internal sealed class CommitOnTrunkBranchedToTrunk : CommitOnTrunkBranchedBase // |/ // A 58 minutes ago <<-- - public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => base.MatchPrecondition(iteration, commit, context) && iteration.GetEffectiveConfiguration(context.Configuration).IsMainBranch; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTag.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithPreReleaseTag.cs similarity index 59% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTag.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithPreReleaseTag.cs index 42f1dd1aac..41a4d56f2a 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTag.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithPreReleaseTag.cs @@ -1,10 +1,10 @@ -namespace GitVersion.VersionCalculation.TrunkBased.Trunk; +namespace GitVersion.VersionCalculation.Mainline.Trunk; internal sealed class CommitOnTrunkWithPreReleaseTag : CommitOnTrunkWithPreReleaseTagBase { // B 58 minutes ago (HEAD -> main) // A 59 minutes ago (tag 0.2.0-1) <<-- - public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => base.MatchPrecondition(iteration, commit, context) && commit.Successor is not null; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs similarity index 61% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs index 3168ed4518..27e63c5205 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs @@ -1,15 +1,15 @@ using GitVersion.Extensions; -namespace GitVersion.VersionCalculation.TrunkBased.Trunk; +namespace GitVersion.VersionCalculation.Mainline.Trunk; -internal abstract class CommitOnTrunkWithPreReleaseTagBase : ITrunkBasedIncrementer +internal abstract class CommitOnTrunkWithPreReleaseTagBase : IIncrementer { - public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public virtual bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && !commit.HasChildIteration && context.SemanticVersion?.IsPreRelease == true; public virtual IEnumerable GetIncrements( - TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { context.BaseVersionSource = commit.Value; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTag.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithStableTag.cs similarity index 59% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTag.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithStableTag.cs index ed2ed6634a..c75a6d2f60 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTag.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithStableTag.cs @@ -1,10 +1,10 @@ -namespace GitVersion.VersionCalculation.TrunkBased.Trunk; +namespace GitVersion.VersionCalculation.Mainline.Trunk; internal sealed class CommitOnTrunkWithStableTag : CommitOnTrunkWithStableTagBase { // B 58 minutes ago (HEAD -> main) // A 59 minutes ago (tag 0.2.0) <<-- - public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => base.MatchPrecondition(iteration, commit, context) && commit.Successor is not null; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTagBase.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithStableTagBase.cs similarity index 69% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTagBase.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithStableTagBase.cs index b96aa7097d..bd1eae48d2 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/CommitOnTrunkWithStableTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithStableTagBase.cs @@ -1,16 +1,16 @@ using GitVersion.Configuration; using GitVersion.Extensions; -namespace GitVersion.VersionCalculation.TrunkBased.Trunk; +namespace GitVersion.VersionCalculation.Mainline.Trunk; -internal abstract class CommitOnTrunkWithStableTagBase : ITrunkBasedIncrementer +internal abstract class CommitOnTrunkWithStableTagBase : IIncrementer { - public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public virtual bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && !commit.HasChildIteration && context.SemanticVersion?.IsPreRelease == false; public virtual IEnumerable GetIncrements( - TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { context.BaseVersionSource = commit.Value; diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs similarity index 83% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs index 91e8407ce5..7612974e9e 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs @@ -1,17 +1,17 @@ using GitVersion.Configuration; -namespace GitVersion.VersionCalculation.TrunkBased.Trunk; +namespace GitVersion.VersionCalculation.Mainline.Trunk; internal sealed class LastCommitOnTrunkWithPreReleaseTag : CommitOnTrunkWithPreReleaseTagBase { // B 58 minutes ago (HEAD -> main) (tag 0.2.0-1) <<-- // A 59 minutes ago - public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => base.MatchPrecondition(iteration, commit, context) && commit.Successor is null; public override IEnumerable GetIncrements( - TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { foreach (var item in base.GetIncrements(iteration, commit, context)) { diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/LastCommitOnTrunkWithStableTag.cs similarity index 79% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/Trunk/LastCommitOnTrunkWithStableTag.cs index 16e32a59a6..525ee1f6b5 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastCommitOnTrunkWithStableTag.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/LastCommitOnTrunkWithStableTag.cs @@ -1,15 +1,15 @@ -namespace GitVersion.VersionCalculation.TrunkBased.Trunk; +namespace GitVersion.VersionCalculation.Mainline.Trunk; internal sealed class LastCommitOnTrunkWithStableTag : CommitOnTrunkWithStableTagBase { // B 58 minutes ago (HEAD -> main) (tag 0.2.0) <<-- // A 59 minutes ago - public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => base.MatchPrecondition(iteration, commit, context) && commit.Successor is null; public override IEnumerable GetIncrements( - TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { foreach (var item in base.GetIncrements(iteration, commit, context)) { diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastMergeCommitOnTrunk.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/LastMergeCommitOnTrunk.cs similarity index 59% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastMergeCommitOnTrunk.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/Trunk/LastMergeCommitOnTrunk.cs index d18db2846c..54d034fda9 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/LastMergeCommitOnTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/LastMergeCommitOnTrunk.cs @@ -1,5 +1,5 @@ -namespace GitVersion.VersionCalculation.TrunkBased.Trunk; +namespace GitVersion.VersionCalculation.Mainline.Trunk; internal sealed class LastMergeCommitOnTrunk : MergeCommitOnTrunkBase { @@ -7,6 +7,6 @@ internal sealed class LastMergeCommitOnTrunk : MergeCommitOnTrunkBase // |\ // | B 56 minutes ago (feature/foo) - public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => base.MatchPrecondition(iteration, commit, context) && commit.Successor is null; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunk.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/MergeCommitOnTrunk.cs similarity index 61% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunk.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/Trunk/MergeCommitOnTrunk.cs index 3275c36206..eafd1086a3 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/MergeCommitOnTrunk.cs @@ -1,4 +1,4 @@ -namespace GitVersion.VersionCalculation.TrunkBased.Trunk; +namespace GitVersion.VersionCalculation.Mainline.Trunk; internal sealed class MergeCommitOnTrunk : MergeCommitOnTrunkBase { @@ -7,6 +7,6 @@ internal sealed class MergeCommitOnTrunk : MergeCommitOnTrunkBase // |\ // | B 56 minutes ago (feature/foo) - public override bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public override bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => base.MatchPrecondition(iteration, commit, context) && commit.Successor is not null; } diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunkBase.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/MergeCommitOnTrunkBase.cs similarity index 85% rename from src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunkBase.cs rename to src/GitVersion.Core/VersionCalculation/Mainline/Trunk/MergeCommitOnTrunkBase.cs index d9d6ecaad8..f731d26a7d 100644 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/Trunk/MergeCommitOnTrunkBase.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/MergeCommitOnTrunkBase.cs @@ -1,18 +1,18 @@ using GitVersion.Extensions; -namespace GitVersion.VersionCalculation.TrunkBased.Trunk; +namespace GitVersion.VersionCalculation.Mainline.Trunk; -internal abstract class MergeCommitOnTrunkBase : ITrunkBasedIncrementer +internal abstract class MergeCommitOnTrunkBase : IIncrementer { - public virtual bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + public virtual bool MatchPrecondition(MainlineIteration iteration, MainlineCommit commit, MainlineContext context) => commit.HasChildIteration && commit.GetEffectiveConfiguration(context.Configuration).IsMainBranch && context.SemanticVersion is null; public virtual IEnumerable GetIncrements( - TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) + MainlineIteration iteration, MainlineCommit commit, MainlineContext context) { if (commit.ChildIteration is null) throw new InvalidOperationException("The commit child iteration is null."); - var baseVersion = TrunkBasedVersionStrategy.DetermineBaseVersionRecursive( + var baseVersion = MainlineVersionStrategy.DetermineBaseVersionRecursive( iteration: commit.ChildIteration!, targetLabel: context.TargetLabel, incrementStrategyFinder: context.IncrementStrategyFinder, diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/ITrunkBasedContextPostEnricher.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/ITrunkBasedContextPostEnricher.cs deleted file mode 100644 index 0647d62245..0000000000 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/ITrunkBasedContextPostEnricher.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace GitVersion.VersionCalculation.TrunkBased; - -internal interface ITrunkBasedContextPostEnricher -{ - void Enrich(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context); -} diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/ITrunkBasedContextPreEnricher.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/ITrunkBasedContextPreEnricher.cs deleted file mode 100644 index 7e0eb36442..0000000000 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/ITrunkBasedContextPreEnricher.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace GitVersion.VersionCalculation.TrunkBased; - -internal interface ITrunkBasedContextPreEnricher -{ - void Enrich(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context); -} diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/ITrunkBasedIncrementer.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/ITrunkBasedIncrementer.cs deleted file mode 100644 index 5c8141e2ad..0000000000 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/ITrunkBasedIncrementer.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace GitVersion.VersionCalculation.TrunkBased; - -internal interface ITrunkBasedIncrementer -{ - bool MatchPrecondition(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context); - - IEnumerable GetIncrements( - TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context); -} diff --git a/src/GitVersion.Core/VersionCalculation/TrunkBased/RemoveSemanticVersion.cs b/src/GitVersion.Core/VersionCalculation/TrunkBased/RemoveSemanticVersion.cs deleted file mode 100644 index 0c53022632..0000000000 --- a/src/GitVersion.Core/VersionCalculation/TrunkBased/RemoveSemanticVersion.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace GitVersion.VersionCalculation.TrunkBased; - -internal sealed class RemoveSemanticVersion : ITrunkBasedContextPostEnricher -{ - public void Enrich(TrunkBasedIteration iteration, TrunkBasedCommit commit, TrunkBasedContext context) => context.SemanticVersion = null; -} diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs similarity index 92% rename from src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs rename to src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs index f42c869d90..85f0dbab69 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrunkBasedVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs @@ -3,13 +3,13 @@ using GitVersion.Core; using GitVersion.Extensions; using GitVersion.Git; -using GitVersion.VersionCalculation.TrunkBased; -using GitVersion.VersionCalculation.TrunkBased.NonTrunk; -using GitVersion.VersionCalculation.TrunkBased.Trunk; +using GitVersion.VersionCalculation.Mainline; +using GitVersion.VersionCalculation.Mainline.NonTrunk; +using GitVersion.VersionCalculation.Mainline.Trunk; namespace GitVersion.VersionCalculation; -internal sealed class TrunkBasedVersionStrategy( +internal sealed class MainlineVersionStrategy( Lazy contextLazy, IRepositoryStore repositoryStore, ITaggedSemanticVersionService taggedSemanticVersionService, @@ -24,17 +24,17 @@ internal sealed class TrunkBasedVersionStrategy( private GitVersionContext Context => contextLazy.Value; - private static readonly IReadOnlyCollection TrunkContextPreEnricherCollection = + private static readonly IReadOnlyCollection TrunkContextPreEnricherCollection = [ new EnrichSemanticVersion(), new EnrichIncrement() ]; - private static readonly IReadOnlyCollection TrunkContextPostEnricherCollection = + private static readonly IReadOnlyCollection TrunkContextPostEnricherCollection = [ new RemoveSemanticVersion(), new RemoveIncrement() ]; - private static readonly IReadOnlyCollection TrunkIncrementerCollection = + private static readonly IReadOnlyCollection TrunkIncrementerCollection = [ // Trunk new CommitOnTrunk(), @@ -72,7 +72,7 @@ public IEnumerable GetBaseVersions(EffectiveBranchConfiguration con { configuration.NotNull(); - if (!Context.Configuration.VersionStrategy.HasFlag(VersionStrategies.TrunkBased)) + if (!Context.Configuration.VersionStrategy.HasFlag(VersionStrategies.Mainline)) yield break; var branchConfiguration = Context.Configuration.GetBranchConfiguration(Context.CurrentBranch); @@ -113,12 +113,12 @@ public IEnumerable GetBaseVersions(EffectiveBranchConfiguration con yield return DetermineBaseVersion(iteration, targetLabel, incrementStrategyFinder, Context.Configuration); } - private TrunkBasedIteration CreateIteration( + private MainlineIteration CreateIteration( ReferenceName branchName, IBranchConfiguration configuration, - TrunkBasedIteration? parentIteration = null, TrunkBasedCommit? parentCommit = null) + MainlineIteration? parentIteration = null, MainlineCommit? parentCommit = null) { var iterationCount = Interlocked.Increment(ref iterationCounter); - return new TrunkBasedIteration( + return new MainlineIteration( id: $"#{iterationCount}", branchName: branchName, configuration: configuration, @@ -128,7 +128,7 @@ private TrunkBasedIteration CreateIteration( } private bool IterateOverCommitsRecursive( - IEnumerable commitsInReverseOrder, TrunkBasedIteration iteration, IBranch targetBranch, string? targetLabel, + IEnumerable commitsInReverseOrder, MainlineIteration iteration, IBranch targetBranch, string? targetLabel, ILookup taggedSemanticVersions, HashSet? traversedCommits = null) { traversedCommits ??= []; @@ -323,11 +323,11 @@ private bool IterateOverCommitsRecursive( return result; } - private static BaseVersion DetermineBaseVersion(TrunkBasedIteration iteration, string? targetLabel, + private static BaseVersion DetermineBaseVersion(MainlineIteration iteration, string? targetLabel, IIncrementStrategyFinder incrementStrategyFinder, IGitVersionConfiguration configuration) => DetermineBaseVersionRecursive(iteration, targetLabel, incrementStrategyFinder, configuration); - internal static BaseVersion DetermineBaseVersionRecursive(TrunkBasedIteration iteration, string? targetLabel, + internal static BaseVersion DetermineBaseVersionRecursive(MainlineIteration iteration, string? targetLabel, IIncrementStrategyFinder incrementStrategyFinder, IGitVersionConfiguration configuration) { iteration.NotNull(); @@ -354,10 +354,10 @@ internal static BaseVersion DetermineBaseVersionRecursive(TrunkBasedIteration it return result ?? throw new InvalidOperationException(); } - private static IEnumerable GetIncrements(TrunkBasedIteration iteration, string? targetLabel, + private static IEnumerable GetIncrements(MainlineIteration iteration, string? targetLabel, IIncrementStrategyFinder incrementStrategyFinder, IGitVersionConfiguration configuration) { - TrunkBasedContext context = new(incrementStrategyFinder, configuration) + MainlineContext context = new(incrementStrategyFinder, configuration) { TargetLabel = targetLabel }; diff --git a/src/GitVersion.Core/VersionCalculation/VersionStrategies.cs b/src/GitVersion.Core/VersionCalculation/VersionStrategies.cs index 5810de0df5..4fe020c87a 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionStrategies.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionStrategies.cs @@ -10,5 +10,5 @@ public enum VersionStrategies TaggedCommit = 8, TrackReleaseBranches = 16, VersionInBranchName = 32, - TrunkBased = 64 + Mainline = 64 } From e52f8dfc4037a9b1bb2ee0634de8822a25f83e6e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 May 2024 13:26:45 +0000 Subject: [PATCH 103/544] --- updated-dependencies: - dependency-name: Polly dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index c87a7b71c2..4079950b77 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -11,7 +11,7 @@ - + From 0ea680d6226d6e850aaefb7053d0a5beb448cec2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 May 2024 16:34:34 +0000 Subject: [PATCH 104/544] --- updated-dependencies: - dependency-name: Microsoft.NET.Test.Sdk dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: Microsoft.Build.Utilities.Core dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: Microsoft.Build dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index f82b284bc2..9ee7a7c6e5 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -20,13 +20,13 @@ - - + + - + From d122deebec213fe11edb2b672ae943cb27d43511 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 22 May 2024 22:39:24 +0200 Subject: [PATCH 105/544] code cleanup --- .../ArgumentParserExtensions.cs | 2 +- src/GitVersion.App/QuotedStringHelpers.cs | 2 +- .../ConfigurationProviderTests.cs | 6 +- .../Attributes/JsonPropertyFormatAttribute.cs | 2 +- .../PreventIncrementConfiguration.cs | 2 +- .../Helpers/TestFileSystem.cs | 3 +- ...AlignGitFlowWithMainlineVersionStrategy.cs | 870 +++++++++--------- ...gnGitHubFlowWithMainlineVersionStrategy.cs | 870 +++++++++--------- ...UsingMainlineVersionStrategyWithGitFlow.cs | 32 +- ...ngMainlineVersionStrategyWithGitHubFlow.cs | 14 +- ...ngTheBehaviorOfDifferentVersioningModes.cs | 24 +- .../ContinuousDeliveryTestScenarios.cs | 2 +- ...FeatureBranchFromAReleaseBranchScenario.cs | 12 +- .../IntegrationTests/DevelopScenarios.cs | 2 +- .../DocumentationSamplesForGitFlow.cs | 28 +- .../DocumentationSamplesForGitHubFlow.cs | 12 +- .../FallbackVersionStrategyScenarios.cs | 18 +- .../FeatureBranchScenarios.cs | 2 +- .../IntegrationTests/IgnoreCommitScenarios.cs | 8 +- .../IntegrationTests/MainScenarios.cs | 6 +- .../MainlineDevelopmentScenarios.cs | 2 +- .../IntegrationTests/OtherBranchScenarios.cs | 8 +- .../IntegrationTests/OtherScenarios.cs | 24 +- .../IntegrationTests/PullRequestScenarios.cs | 4 +- .../ReleaseBranchScenarios.cs | 2 +- .../Logging/LoggerTest.cs | 2 +- ...elopBranchWithOneCommitMergedToMainWhen.cs | 12 +- ...gedToMainWhenMergedCommitTaggedAsStable.cs | 12 +- ...MergeCommitFromMainMergedBackToMainWhen.cs | 12 +- ...atureBranchWithAMergeCommitFromMainWhen.cs | 20 +- ...BranchWithOneCommitBranchedFromMainWhen.cs | 20 +- ...dFromMainWhenCommitAHasBumpMessageMajor.cs | 52 +- ...dFromMainWhenCommitAHasBumpMessageMinor.cs | 52 +- ...dFromMainWhenCommitAHasBumpMessagePatch.cs | 52 +- ...edFromMainWhenCommitATaggedAsPreRelease.cs | 20 +- ...romMainWhenCommitATaggedAsPreReleaseBar.cs | 20 +- ...romMainWhenCommitATaggedAsPreReleaseFoo.cs | 20 +- ...anchedFromMainWhenCommitATaggedAsStable.cs | 20 +- ...dFromMainWhenCommitBHasBumpMessageMajor.cs | 52 +- ...dFromMainWhenCommitBHasBumpMessageMinor.cs | 52 +- ...dFromMainWhenCommitBHasBumpMessagePatch.cs | 52 +- ...edFromMainWhenCommitBTaggedAsPreRelease.cs | 20 +- ...romMainWhenCommitBTaggedAsPreReleaseBar.cs | 20 +- ...romMainWhenCommitBTaggedAsPreReleaseFoo.cs | 20 +- ...anchedFromMainWhenCommitBTaggedAsStable.cs | 36 +- ...tureBranchWithOneCommitMergedToMainWhen.cs | 36 +- ...rgedToMainWhenCommitBTaggedAsPreRelease.cs | 36 +- ...dToMainWhenCommitBTaggedAsPreReleaseBar.cs | 36 +- ...dToMainWhenCommitBTaggedAsPreReleaseFoo.cs | 36 +- ...itMergedToMainWhenCommitBTaggedAsStable.cs | 40 +- ...oMainWithOneCommitBranchedToFeatureWhen.cs | 36 +- ...ow+GivenAFeatureBranchWithOneCommitWhen.cs | 4 +- ...hOneCommitWhenCommitHasBumpMessageMajor.cs | 8 +- ...hOneCommitWhenCommitHasBumpMessageMinor.cs | 8 +- ...hOneCommitWhenCommitHasBumpMessagePatch.cs | 8 +- ...thOneCommitWhenCommitTaggedAsPreRelease.cs | 6 +- ...neCommitWhenCommitTaggedAsPreReleaseBar.cs | 6 +- ...neCommitWhenCommitTaggedAsPreReleaseFoo.cs | 6 +- ...chWithOneCommitWhenCommitTaggedAsStable.cs | 6 +- ...nchWithThreeCommitsBranchedFromMainWhen.cs | 16 +- ...eBranchWithThreeCommitsMergedToMainWhen.cs | 36 +- ...GivenAFeatureBranchWithThreeCommitsWhen.cs | 4 +- ...ranchWithTwoCommitsBranchedFromMainWhen.cs | 16 +- ...ureBranchWithTwoCommitsMergedToMainWhen.cs | 36 +- ...ommitsWhenFirstCommitTaggedAsPreRelease.cs | 4 +- ...itsWhenFirstCommitTaggedAsPreReleaseBar.cs | 4 +- ...itsWhenFirstCommitTaggedAsPreReleaseFoo.cs | 4 +- ...ranchWithOneCommitBranchedToFeatureWhen.cs | 20 +- ...dToFeatureWhenCommitHasBumpMessageMajor.cs | 52 +- ...dToFeatureWhenCommitHasBumpMessageMinor.cs | 52 +- ...dToFeatureWhenCommitHasBumpMessagePatch.cs | 52 +- ...edToFeatureWhenCommitTaggedAsPreRelease.cs | 36 +- ...oFeatureWhenCommitTaggedAsPreReleaseBar.cs | 36 +- ...oFeatureWhenCommitTaggedAsPreReleaseFoo.cs | 36 +- ...anchedToFeatureWhenCommitTaggedAsStable.cs | 36 +- ...bFlow+GivenAMainBranchWithOneCommitWhen.cs | 4 +- ...hOneCommitWhenCommitHasBumpMessageMajor.cs | 8 +- ...hOneCommitWhenCommitHasBumpMessageMinor.cs | 8 +- ...hOneCommitWhenCommitHasBumpMessagePatch.cs | 8 +- ...thOneCommitWhenCommitTaggedAsPreRelease.cs | 4 +- ...neCommitWhenCommitTaggedAsPreReleaseBar.cs | 4 +- ...neCommitWhenCommitTaggedAsPreReleaseFoo.cs | 4 +- ...chWithOneCommitWhenCommitTaggedAsStable.cs | 4 +- ...ow+GivenAMainBranchWithThreeCommitsWhen.cs | 4 +- ...anchWithTwoCommitsBranchedToFeatureWhen.cs | 20 +- ...atureWhenFirstCommitHasBumpMessageMajor.cs | 52 +- ...atureWhenFirstCommitHasBumpMessageMinor.cs | 52 +- ...atureWhenFirstCommitHasBumpMessagePatch.cs | 52 +- ...eatureWhenFirstCommitTaggedAsPreRelease.cs | 20 +- ...ureWhenFirstCommitTaggedAsPreReleaseBar.cs | 20 +- ...ureWhenFirstCommitTaggedAsPreReleaseFoo.cs | 20 +- ...dToFeatureWhenFirstCommitTaggedAsStable.cs | 20 +- ...Flow+GivenAMainBranchWithTwoCommitsWhen.cs | 4 +- ...mmitsWhenFirstCommitHasBumpMessageMajor.cs | 8 +- ...mmitsWhenFirstCommitHasBumpMessageMinor.cs | 8 +- ...mmitsWhenFirstCommitHasBumpMessagePatch.cs | 8 +- ...ommitsWhenFirstCommitTaggedAsPreRelease.cs | 4 +- ...itsWhenFirstCommitTaggedAsPreReleaseBar.cs | 4 +- ...itsWhenFirstCommitTaggedAsPreReleaseFoo.cs | 4 +- ...TwoCommitsWhenFirstCommitTaggedAsStable.cs | 4 +- ...mitsWhenSecondCommitHasBumpMessageMajor.cs | 8 +- ...mitsWhenSecondCommitHasBumpMessageMinor.cs | 8 +- ...mitsWhenSecondCommitHasBumpMessagePatch.cs | 8 +- ...mmitsWhenSecondCommitTaggedAsPreRelease.cs | 4 +- ...tsWhenSecondCommitTaggedAsPreReleaseBar.cs | 4 +- ...tsWhenSecondCommitTaggedAsPreReleaseFoo.cs | 4 +- ...woCommitsWhenSecondCommitTaggedAsStable.cs | 4 +- ...EffectiveBranchConfigurationFinderTests.cs | 23 +- .../MinDateVersionFilterTests.cs | 2 +- .../VariableProviderTests.cs | 2 +- .../Configuration/ReferenceNameExtensions.cs | 5 +- src/GitVersion.Core/Core/BranchRepository.cs | 4 +- src/GitVersion.Core/Core/MergeBaseFinder.cs | 2 +- src/GitVersion.Core/Core/RepositoryStore.cs | 8 +- .../Core/SourceBranchFinder.cs | 13 +- .../Core/TaggedSemanticVersionRepository.cs | 84 +- src/GitVersion.Core/Git/CommitFilter.cs | 8 +- src/GitVersion.Core/Git/ReferenceName.cs | 6 +- src/GitVersion.Core/Helpers/ProcessHelper.cs | 3 +- src/GitVersion.Core/Logging/LogExtensions.cs | 4 +- src/GitVersion.Core/PublicAPI.Unshipped.txt | 12 +- .../SemVer/SemanticVersionPreReleaseTag.cs | 2 +- .../IncrementStrategyFinder.cs | 2 +- .../Mainline/MainlineCommit.cs | 8 +- .../Mainline/MainlineIteration.cs | 12 +- .../NextVersionCalculator.cs | 18 +- .../VersionSearchStrategies/BaseVersion.cs | 9 +- .../BaseVersionOperand.cs | 2 - .../BaseVersionOperator.cs | 2 +- .../MainlineVersionStrategy.cs | 42 +- .../MergeMessageVersionStrategy.cs | 4 +- .../TaggedCommitVersionStrategy.cs | 2 +- .../VersionInBranchNameVersionStrategy.cs | 2 +- .../Git/GitRepository.cs | 2 +- .../Git/RepositoryExtensions.cs | 4 +- .../Helpers/EventArgsFormatting.cs | 2 +- .../Mocks/MockEngine.cs | 2 +- .../Output/FormatArgumentTests.cs | 20 +- .../Fixtures/BaseGitFlowRepositoryFixture.cs | 2 +- .../Fixtures/RemoteRepositoryFixture.cs | 2 +- 140 files changed, 1947 insertions(+), 1991 deletions(-) diff --git a/src/GitVersion.App/ArgumentParserExtensions.cs b/src/GitVersion.App/ArgumentParserExtensions.cs index 35bc3ef10d..ecc930d5f0 100644 --- a/src/GitVersion.App/ArgumentParserExtensions.cs +++ b/src/GitVersion.App/ArgumentParserExtensions.cs @@ -69,7 +69,7 @@ public static bool ArgumentRequiresValue(this string argument, int argumentIndex var argumentMightRequireValue = !booleanArguments.Contains(argument[1..], StringComparer.OrdinalIgnoreCase); - // If this is the first argument that might be a target path, the argument starts with slash and we're on an OS that supports paths with slashes, the argument does not require a value. + // If this is the first argument that might be a target path, the argument starts with slash, and we're on an OS that supports paths with slashes, the argument does not require a value. if (argumentMightRequireValue && argumentIndex == 0 && argument.StartsWith('/') && Path.DirectorySeparatorChar == '/' && argument.IsValidPath()) return false; diff --git a/src/GitVersion.App/QuotedStringHelpers.cs b/src/GitVersion.App/QuotedStringHelpers.cs index 854ac054b7..15fcd174d6 100644 --- a/src/GitVersion.App/QuotedStringHelpers.cs +++ b/src/GitVersion.App/QuotedStringHelpers.cs @@ -71,7 +71,7 @@ public static string UnquoteText(string input) if (sb[0] == '"') sb.Remove(0, 1); - if (sb[sb.Length - 1] == '"' && sb[sb.Length - 2] != '\\') + if (sb[^1] == '"' && sb[^2] != '\\') sb.Remove(sb.Length - 1, 1); sb.Replace("\\\"", "\""); // unescape quotes. diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs index 45d66f314d..754eb114fe 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs @@ -126,7 +126,7 @@ public void SourceBranchesValidationShouldSucceedForWellKnownBranches(string wel using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); - configuration.Branches["bug"].SourceBranches.ShouldBe(new List { wellKnownBranchKey }); + configuration.Branches["bug"].SourceBranches.ShouldBe([wellKnownBranchKey]); } [Test] @@ -301,7 +301,7 @@ public void ShouldUseSpecifiedSourceBranchesForDevelop() using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); - configuration.Branches["develop"].SourceBranches.ShouldBe(new List { "develop" }); + configuration.Branches["develop"].SourceBranches.ShouldBe(["develop"]); } [Test] @@ -332,7 +332,7 @@ public void ShouldUseSpecifiedSourceBranchesForFeature() using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); - configuration.Branches["feature"].SourceBranches.ShouldBe(new List { "develop", "release" }); + configuration.Branches["feature"].SourceBranches.ShouldBe(["develop", "release"]); } [Test] diff --git a/src/GitVersion.Configuration/Attributes/JsonPropertyFormatAttribute.cs b/src/GitVersion.Configuration/Attributes/JsonPropertyFormatAttribute.cs index d8307d1754..86cbd6358f 100644 --- a/src/GitVersion.Configuration/Attributes/JsonPropertyFormatAttribute.cs +++ b/src/GitVersion.Configuration/Attributes/JsonPropertyFormatAttribute.cs @@ -1,7 +1,7 @@ namespace GitVersion.Configuration.Attributes; /// -/// The format keyword allows for basic semantic identification of certain kinds of string values that are commonly used. For example, because JSON doesn't have a "DateTime" type, dates need to be encoded as strings. format allows the schema author to indicate that the string value should be interpreted as a date. By default, format is just an annotation and does not effect validation. +/// The format keyword allows for basic semantic identification of certain kinds of string values that are commonly used. For example, because JSON doesn't have a "DateTime" type, dates need to be encoded as strings. format allows the schema author to indicate that the string value should be interpreted as a date. By default, format is just an annotation and does not affect validation. /// Optionally, validator implementations can [...] enable format to function as an assertion rather than just an annotation. /// /// diff --git a/src/GitVersion.Configuration/PreventIncrementConfiguration.cs b/src/GitVersion.Configuration/PreventIncrementConfiguration.cs index 45c187ae55..37661d9762 100644 --- a/src/GitVersion.Configuration/PreventIncrementConfiguration.cs +++ b/src/GitVersion.Configuration/PreventIncrementConfiguration.cs @@ -13,6 +13,6 @@ internal class PreventIncrementConfiguration : IPreventIncrementConfiguration public bool? WhenBranchMerged { get; set; } [JsonPropertyName("when-current-commit-tagged")] - [JsonPropertyDescription("This branch related property controls the behvior whether to use the tagged (value set to true) or the incremented (value set to false) semantic version. Defaults to true.")] + [JsonPropertyDescription("This branch related property controls the behavior whether to use the tagged (value set to true) or the incremented (value set to false) semantic version. Defaults to true.")] public bool? WhenCurrentCommitTagged { get; set; } } diff --git a/src/GitVersion.Core.Tests/Helpers/TestFileSystem.cs b/src/GitVersion.Core.Tests/Helpers/TestFileSystem.cs index 432d1e16dd..06a4f74ee4 100644 --- a/src/GitVersion.Core.Tests/Helpers/TestFileSystem.cs +++ b/src/GitVersion.Core.Tests/Helpers/TestFileSystem.cs @@ -74,10 +74,9 @@ public void WriteAllText(string? file, string fileContents, Encoding encoding) public Stream OpenRead(string path) { var fullPath = Path.GetFullPath(path); - if (!this.fileSystem.ContainsKey(fullPath)) + if (!this.fileSystem.TryGetValue(fullPath, out var content)) throw new FileNotFoundException("File not found.", fullPath); - var content = this.fileSystem[fullPath]; return new MemoryStream(content); } diff --git a/src/GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithMainlineVersionStrategy.cs b/src/GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithMainlineVersionStrategy.cs index 3eb66847eb..704d7fbcec 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithMainlineVersionStrategy.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/AlignGitFlowWithMainlineVersionStrategy.cs @@ -21,14 +21,14 @@ public void EnsureFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -85,14 +85,14 @@ public void EnsureFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool u : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -157,14 +157,14 @@ public void EnsureFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -229,14 +229,14 @@ public void EnsureFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -301,14 +301,14 @@ public void EnsureFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -365,14 +365,14 @@ public void EnsureFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool u : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -431,14 +431,14 @@ public void EnsureFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useM : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -497,14 +497,14 @@ public void EnsureFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool use : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -555,14 +555,14 @@ public void EnsureFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool use : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -613,14 +613,14 @@ public void EnsureFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool use : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -671,14 +671,14 @@ public void EnsureFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -735,14 +735,14 @@ public void EnsureFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool use : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -807,14 +807,14 @@ public void EnsureFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -871,14 +871,14 @@ public void EnsureFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -935,14 +935,14 @@ public void EnsureFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -999,14 +999,14 @@ public void EnsureFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1063,14 +1063,14 @@ public void EnsureFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool use : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1135,14 +1135,14 @@ public void EnsureFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1207,14 +1207,14 @@ public void EnsureFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1271,14 +1271,14 @@ public void EnsureFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1335,14 +1335,14 @@ public void EnsureFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1399,14 +1399,14 @@ public void EnsureFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool use : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1471,14 +1471,14 @@ public void EnsureFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1543,14 +1543,14 @@ public void EnsureFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1615,14 +1615,14 @@ public void EnsureFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1679,14 +1679,14 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndInheritOnFeatur : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1754,14 +1754,14 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndNoneOnFeatureBr : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1837,14 +1837,14 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndPatchOnFeatureB : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1920,14 +1920,14 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMinorOnFeatureB : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2003,14 +2003,14 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMajorOnFeatureB : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2078,14 +2078,14 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBr : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2173,14 +2173,14 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranc : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2268,14 +2268,14 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBran : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2367,14 +2367,14 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMinorOnFeatureBran : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2450,14 +2450,14 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMajorOnFeatureBran : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2533,14 +2533,14 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndInheritOnFeatureB : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2608,14 +2608,14 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndNoneOnFeatureBran : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2691,14 +2691,14 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndPatchOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2766,14 +2766,14 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMinorOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2841,14 +2841,14 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMajorOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2916,14 +2916,14 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndInheritOnFeatureB : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2991,14 +2991,14 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndNoneOnFeatureBran : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3074,14 +3074,14 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndPatchOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3157,14 +3157,14 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMinorOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3232,14 +3232,14 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMajorOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3307,14 +3307,14 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndInheritOnFeatureB : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3382,14 +3382,14 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndNoneOnFeatureBran : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3465,14 +3465,14 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndPatchOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3548,14 +3548,14 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMinorOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3631,14 +3631,14 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMajorOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3706,14 +3706,14 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndInheritOnFeatureBranch : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3758,14 +3758,14 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndNoneOnFeatureBranch(bo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3826,14 +3826,14 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndPatchOnFeatureBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3894,14 +3894,14 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndMinorOnFeatureBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3962,14 +3962,14 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndMajorOnFeatureBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4014,14 +4014,14 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndInheritOnFeatureBranch(bo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4074,14 +4074,14 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4134,14 +4134,14 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4194,14 +4194,14 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4254,14 +4254,14 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4314,14 +4314,14 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndInheritOnFeatureBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4366,14 +4366,14 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4434,14 +4434,14 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndPatchOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4486,14 +4486,14 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndMinorOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4546,14 +4546,14 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndMajorOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4606,14 +4606,14 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndInheritOnFeatureBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4658,14 +4658,14 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4726,14 +4726,14 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndPatchOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4794,14 +4794,14 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndMinorOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4846,14 +4846,14 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndMajorOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4906,14 +4906,14 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndInheritOnFeatureBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4958,14 +4958,14 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5026,14 +5026,14 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndPatchOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5094,14 +5094,14 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5162,14 +5162,14 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMajorOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5222,15 +5222,15 @@ public void EnsureReleaseBranchWithIncrementInheritOnMain(bool useMainline, Incr : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5316,15 +5316,15 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndInheritOnReleaseBran : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5406,15 +5406,15 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch( : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5510,15 +5510,15 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5612,15 +5612,15 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5714,15 +5714,15 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5804,15 +5804,15 @@ public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useMainline, Increme : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5908,15 +5908,15 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6024,15 +6024,15 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6140,15 +6140,15 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6244,15 +6244,15 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6348,15 +6348,15 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6458,15 +6458,15 @@ public void EnsureReleaseBranchWithIncrementPatchOnMain(bool useMainline, Increm : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6546,15 +6546,15 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6632,15 +6632,15 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6732,15 +6732,15 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6818,15 +6818,15 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6904,15 +6904,15 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6994,15 +6994,15 @@ public void EnsureReleaseBranchWithIncrementMinorOnMain(bool useMainline, Increm : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7082,15 +7082,15 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7170,15 +7170,15 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7270,15 +7270,15 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7366,15 +7366,15 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7456,15 +7456,15 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7546,15 +7546,15 @@ public void EnsureReleaseBranchWithIncrementMajorOnMain(bool useMainline, Increm : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7640,15 +7640,15 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7728,15 +7728,15 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7830,15 +7830,15 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7930,15 +7930,15 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8036,15 +8036,15 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8123,18 +8123,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMain( : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8228,18 +8228,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndInheritOnR : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8331,18 +8331,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndNoneOnRele : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8448,18 +8448,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndPatchOnRel : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8565,18 +8565,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMinorOnRel : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8686,18 +8686,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMajorOnRel : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8782,18 +8782,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMain( : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8881,18 +8881,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndInheritOnRele : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8992,18 +8992,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndNoneOnRelease : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9104,18 +9104,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndPatchOnReleas : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9206,18 +9206,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMinorOnReleas : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9311,18 +9311,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMajorOnReleas : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9415,18 +9415,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMain( : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9510,18 +9510,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndInheritOnRel : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9603,18 +9603,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndNoneOnReleas : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9710,18 +9710,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndPatchOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9804,18 +9804,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMinorOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9902,18 +9902,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMajorOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9998,18 +9998,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMain( : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10099,18 +10099,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndInheritOnRel : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10196,18 +10196,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndNoneOnReleas : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10307,18 +10307,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndPatchOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10416,18 +10416,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMinorOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10517,18 +10517,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMajorOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10613,18 +10613,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMain( : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10718,18 +10718,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndInheritOnRel : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10821,18 +10821,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndNoneOnReleas : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10938,18 +10938,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndPatchOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -11055,18 +11055,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMinorOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -11176,18 +11176,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMajorOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithMainlineVersionStrategy.cs b/src/GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithMainlineVersionStrategy.cs index ea81aaf68e..9bbf031f12 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithMainlineVersionStrategy.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/AlignGitHubFlowWithMainlineVersionStrategy.cs @@ -21,14 +21,14 @@ public void EnsureFeatureWithIncrementInheritOnMainAndInheritOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -85,14 +85,14 @@ public void EnsureFeatureWithIncrementInheritOnMainAndNoneOnFeatureBranch(bool u : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -157,14 +157,14 @@ public void EnsureFeatureWithIncrementInheritOnMainAndPatchOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -229,14 +229,14 @@ public void EnsureFeatureWithIncrementInheritOnMainAndMinorOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -301,14 +301,14 @@ public void EnsureFeatureWithIncrementInheritOnMainAndMajorOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -365,14 +365,14 @@ public void EnsureFeatureWithIncrementNoneOnMainAndInheritOnFeatureBranch(bool u : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -431,14 +431,14 @@ public void EnsureFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool useM : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -497,14 +497,14 @@ public void EnsureFeatureWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool use : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -555,14 +555,14 @@ public void EnsureFeatureWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool use : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -613,14 +613,14 @@ public void EnsureFeatureWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool use : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -671,14 +671,14 @@ public void EnsureFeatureWithIncrementPatchOnMainAndInheritOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -735,14 +735,14 @@ public void EnsureFeatureWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool use : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -807,14 +807,14 @@ public void EnsureFeatureWithIncrementPatchOnMainAndPatchOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -871,14 +871,14 @@ public void EnsureFeatureWithIncrementPatchOnMainAndMinorOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -935,14 +935,14 @@ public void EnsureFeatureWithIncrementPatchOnMainAndMajorOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -999,14 +999,14 @@ public void EnsureFeatureWithIncrementMinorOnMainAndInheritOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1063,14 +1063,14 @@ public void EnsureFeatureWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool use : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1135,14 +1135,14 @@ public void EnsureFeatureWithIncrementMinorOnMainAndPatchOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1207,14 +1207,14 @@ public void EnsureFeatureWithIncrementMinorOnMainAndMinorOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1271,14 +1271,14 @@ public void EnsureFeatureWithIncrementMinorOnMainAndMajorOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1335,14 +1335,14 @@ public void EnsureFeatureWithIncrementMajorOnMainAndInheritOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1399,14 +1399,14 @@ public void EnsureFeatureWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool use : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1471,14 +1471,14 @@ public void EnsureFeatureWithIncrementMajorOnMainAndPatchOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1543,14 +1543,14 @@ public void EnsureFeatureWithIncrementMajorOnMainAndMinorOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1615,14 +1615,14 @@ public void EnsureFeatureWithIncrementMajorOnMainAndMajorOnFeatureBranch(bool us : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1679,14 +1679,14 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndInheritOnFeatur : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1754,14 +1754,14 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndNoneOnFeatureBr : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1837,14 +1837,14 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndPatchOnFeatureB : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1920,14 +1920,14 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMinorOnFeatureB : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2003,14 +2003,14 @@ public void EnsureMergeMainToFeatureWithIncrementInheritOnMainAndMajorOnFeatureB : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2078,14 +2078,14 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndInheritOnFeatureBr : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2173,14 +2173,14 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndNoneOnFeatureBranc : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2268,14 +2268,14 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndPatchOnFeatureBran : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2367,14 +2367,14 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMinorOnFeatureBran : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2450,14 +2450,14 @@ public void EnsureMergeMainToFeatureWithIncrementNoneOnMainAndMajorOnFeatureBran : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2533,14 +2533,14 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndInheritOnFeatureB : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2608,14 +2608,14 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndNoneOnFeatureBran : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2691,14 +2691,14 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndPatchOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2766,14 +2766,14 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMinorOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2841,14 +2841,14 @@ public void EnsureMergeMainToFeatureWithIncrementPatchOnMainAndMajorOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2916,14 +2916,14 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndInheritOnFeatureB : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -2991,14 +2991,14 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndNoneOnFeatureBran : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3074,14 +3074,14 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndPatchOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3157,14 +3157,14 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMinorOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3232,14 +3232,14 @@ public void EnsureMergeMainToFeatureWithIncrementMinorOnMainAndMajorOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3307,14 +3307,14 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndInheritOnFeatureB : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3382,14 +3382,14 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndNoneOnFeatureBran : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3465,14 +3465,14 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndPatchOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3548,14 +3548,14 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMinorOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3631,14 +3631,14 @@ public void EnsureMergeMainToFeatureWithIncrementMajorOnMainAndMajorOnFeatureBra : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3706,14 +3706,14 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndInheritOnFeatureBranch : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3758,14 +3758,14 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndNoneOnFeatureBranch(bo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3826,14 +3826,14 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndPatchOnFeatureBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3894,14 +3894,14 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndMinorOnFeatureBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -3962,14 +3962,14 @@ public void EnsurePullRequestWithIncrementInheritOnMainAndMajorOnFeatureBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4014,14 +4014,14 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndInheritOnFeatureBranch(bo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4074,14 +4074,14 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndNoneOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4134,14 +4134,14 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndPatchOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4194,14 +4194,14 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndMinorOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4254,14 +4254,14 @@ public void EnsurePullRequestWithIncrementNoneOnMainAndMajorOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4314,14 +4314,14 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndInheritOnFeatureBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4366,14 +4366,14 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndNoneOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4434,14 +4434,14 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndPatchOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4486,14 +4486,14 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndMinorOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4546,14 +4546,14 @@ public void EnsurePullRequestWithIncrementPatchOnMainAndMajorOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4606,14 +4606,14 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndInheritOnFeatureBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4658,14 +4658,14 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndNoneOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4726,14 +4726,14 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndPatchOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4794,14 +4794,14 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndMinorOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4846,14 +4846,14 @@ public void EnsurePullRequestWithIncrementMinorOnMainAndMajorOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4906,14 +4906,14 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndInheritOnFeatureBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -4958,14 +4958,14 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndNoneOnFeatureBranch(bool : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.None) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5026,14 +5026,14 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndPatchOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Patch) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5094,14 +5094,14 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5162,14 +5162,14 @@ public void EnsurePullRequestWithIncrementMajorOnMainAndMajorOnFeatureBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Major) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5222,15 +5222,15 @@ public void EnsureReleaseBranchWithIncrementInheritOnMain(bool useMainline, Incr : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5316,15 +5316,15 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndInheritOnReleaseBran : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5406,15 +5406,15 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndNoneOnReleaseBranch( : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5510,15 +5510,15 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndPatchOnReleaseBranch : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5612,15 +5612,15 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMinorOnReleaseBranch : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5714,15 +5714,15 @@ public void EnsureReleaseBranchWithIncrementInheritOnMainAndMajorOnReleaseBranch : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5804,15 +5804,15 @@ public void EnsureReleaseBranchWithIncrementNoneOnMain(bool useMainline, Increme : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -5908,15 +5908,15 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndInheritOnReleaseBranch( : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6024,15 +6024,15 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndNoneOnReleaseBranch(boo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6140,15 +6140,15 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndPatchOnReleaseBranch(bo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6244,15 +6244,15 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMinorOnReleaseBranch(bo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6348,15 +6348,15 @@ public void EnsureReleaseBranchWithIncrementNoneOnMainAndMajorOnReleaseBranch(bo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6458,15 +6458,15 @@ public void EnsureReleaseBranchWithIncrementPatchOnMain(bool useMainline, Increm : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6546,15 +6546,15 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndInheritOnReleaseBranch : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6632,15 +6632,15 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndNoneOnReleaseBranch(bo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6732,15 +6732,15 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndPatchOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6818,15 +6818,15 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMinorOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6904,15 +6904,15 @@ public void EnsureReleaseBranchWithIncrementPatchOnMainAndMajorOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -6994,15 +6994,15 @@ public void EnsureReleaseBranchWithIncrementMinorOnMain(bool useMainline, Increm : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7082,15 +7082,15 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndInheritOnReleaseBranch : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7170,15 +7170,15 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndNoneOnReleaseBranch(bo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7270,15 +7270,15 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndPatchOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7366,15 +7366,15 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMinorOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7456,15 +7456,15 @@ public void EnsureReleaseBranchWithIncrementMinorOnMainAndMajorOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7546,15 +7546,15 @@ public void EnsureReleaseBranchWithIncrementMajorOnMain(bool useMainline, Increm : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7640,15 +7640,15 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndInheritOnReleaseBranch : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7728,15 +7728,15 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndNoneOnReleaseBranch(bo : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7830,15 +7830,15 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndPatchOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -7930,15 +7930,15 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMinorOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8036,15 +8036,15 @@ public void EnsureReleaseBranchWithIncrementMajorOnMainAndMajorOnReleaseBranch(b : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8123,18 +8123,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMain( : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8228,18 +8228,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndInheritOnR : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8331,18 +8331,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndNoneOnRele : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8448,18 +8448,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndPatchOnRel : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8565,18 +8565,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMinorOnRel : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8686,18 +8686,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementInheritOnMainAndMajorOnRel : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Inherit) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8782,18 +8782,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMain( : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8881,18 +8881,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndInheritOnRele : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -8992,18 +8992,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndNoneOnRelease : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9104,18 +9104,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndPatchOnReleas : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9206,18 +9206,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMinorOnReleas : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9311,18 +9311,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementNoneOnMainAndMajorOnReleas : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.None) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9415,18 +9415,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMain( : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9510,18 +9510,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndInheritOnRel : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9603,18 +9603,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndNoneOnReleas : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9710,18 +9710,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndPatchOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9804,18 +9804,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMinorOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9902,18 +9902,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementPatchOnMainAndMajorOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Patch) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -9998,18 +9998,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMain( : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10099,18 +10099,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndInheritOnRel : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10196,18 +10196,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndNoneOnReleas : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10307,18 +10307,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndPatchOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10416,18 +10416,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMinorOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10517,18 +10517,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMinorOnMainAndMajorOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Minor) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10613,18 +10613,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMain( : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(incrementOnReleaseBranch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10718,18 +10718,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndInheritOnRel : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10821,18 +10821,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndNoneOnReleas : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.None) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -10938,18 +10938,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndPatchOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -11055,18 +11055,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMinorOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Minor) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -11176,18 +11176,18 @@ public void EnsureReleaseAndFeatureBranchWithIncrementMajorOnMainAndMajorOnRelea : configurationBuilder; var configuration = builder .WithIncrement(IncrementStrategy.Major) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithIncrement(IncrementStrategy.Major) - ).WithBranch("release", _ => _ + ).WithBranch("release", b => b .WithIncrement(IncrementStrategy.Major) .WithDeploymentMode(DeploymentMode.ManualDeployment) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit) .WithDeploymentMode(DeploymentMode.ManualDeployment) ).Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitFlow.cs b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitFlow.cs index 8b5a72a238..ec307dd2b8 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitFlow.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitFlow.cs @@ -21,7 +21,7 @@ public void EnsureFeature(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -78,7 +78,7 @@ public void EnsureMergeMainToFeature(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -146,7 +146,7 @@ public void EnsurePullRequest(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -188,7 +188,7 @@ public void EnsureReleaseAndFeatureBranch(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -272,7 +272,7 @@ public void EnsureReleaseAndFeatureBranch(bool useMainline, string releaseBranch : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -352,7 +352,7 @@ public void EnsureReleaseBranch(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -433,7 +433,7 @@ public void EnsureReleaseBranch(bool useMainline, string releaseBranch) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -504,7 +504,7 @@ public void EnsureFeatureDevelopmentWithDevelopBranch(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -601,7 +601,7 @@ public void EnsureFeatureDevelopmentWithDevelopBranchFast(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -683,7 +683,7 @@ public void EnsureDevelopmentWithMainBranchFast(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -746,7 +746,7 @@ public void EnsureBugFixWithMainBranch(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -809,7 +809,7 @@ public void EnsureBugFixWithDevelopBranch(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -888,7 +888,7 @@ public void EnsureBugFixWithDevelopBranchFast(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -962,7 +962,7 @@ public void EnsureFeatureDevelopmentWithReleaseNextBranch(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1071,7 +1071,7 @@ public void EnsureFeatureDevelopmentWithReleaseNextBranchFast(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -1175,7 +1175,7 @@ public void EnsureFeatureDevelopmentWithRelease100Branch(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitHubFlow.cs b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitHubFlow.cs index be5fdfff17..4a66feb476 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitHubFlow.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/CompareTheDifferentWhenUsingMainlineVersionStrategyWithGitHubFlow.cs @@ -21,7 +21,7 @@ public void EnsureFeature1(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -78,7 +78,7 @@ public void EnsureMergeMainToFeature2(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -146,7 +146,7 @@ public void EnsurePullRequest(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -188,7 +188,7 @@ public void EnsureReleaseAndFeatureBranch1(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -270,7 +270,7 @@ public void EnsureReleaseAndFeatureBranch2(bool useMainline, string releaseBranc : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -350,7 +350,7 @@ public void EnsureReleaseBranch1(bool useMainline) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); @@ -430,7 +430,7 @@ public void EnsureReleaseBranch2(bool useMainline, string releaseBranch) : configurationBuilder; var configuration = builder.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/ComparingTheBehaviorOfDifferentVersioningModes.cs b/src/GitVersion.Core.Tests/IntegrationTests/ComparingTheBehaviorOfDifferentVersioningModes.cs index 1b77c9d6a7..f1d4833705 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/ComparingTheBehaviorOfDifferentVersioningModes.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/ComparingTheBehaviorOfDifferentVersioningModes.cs @@ -13,28 +13,28 @@ internal class ComparingTheBehaviorOfDifferentDeploymentModes { private static GitHubFlowConfigurationBuilder GetConfigurationBuilder() => GitHubFlowConfigurationBuilder.New .WithLabel(null) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithIncrement(IncrementStrategy.Patch).WithLabel(null) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Inherit).WithLabel("{BranchName}") ); private static readonly IGitVersionConfiguration continuousDeployment = GetConfigurationBuilder() .WithDeploymentMode(DeploymentMode.ContinuousDeployment) - .WithBranch("main", _ => _.WithIsMainBranch(true).WithDeploymentMode(DeploymentMode.ContinuousDeployment)) - .WithBranch("feature", _ => _.WithIsMainBranch(false).WithDeploymentMode(DeploymentMode.ContinuousDeployment)) + .WithBranch("main", b => b.WithIsMainBranch(true).WithDeploymentMode(DeploymentMode.ContinuousDeployment)) + .WithBranch("feature", b => b.WithIsMainBranch(false).WithDeploymentMode(DeploymentMode.ContinuousDeployment)) .Build(); private static readonly IGitVersionConfiguration continuousDelivery = GetConfigurationBuilder() .WithDeploymentMode(DeploymentMode.ContinuousDelivery) - .WithBranch("main", _ => _.WithIsMainBranch(true).WithDeploymentMode(DeploymentMode.ContinuousDelivery)) - .WithBranch("feature", _ => _.WithIsMainBranch(false).WithDeploymentMode(DeploymentMode.ContinuousDelivery)) + .WithBranch("main", b => b.WithIsMainBranch(true).WithDeploymentMode(DeploymentMode.ContinuousDelivery)) + .WithBranch("feature", b => b.WithIsMainBranch(false).WithDeploymentMode(DeploymentMode.ContinuousDelivery)) .Build(); private static readonly IGitVersionConfiguration manualDeployment = GetConfigurationBuilder() .WithDeploymentMode(DeploymentMode.ManualDeployment) - .WithBranch("main", _ => _.WithIsMainBranch(true).WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _.WithIsMainBranch(false).WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("main", b => b.WithIsMainBranch(true).WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b.WithIsMainBranch(false).WithDeploymentMode(DeploymentMode.ManualDeployment)) .Build(); [Test] @@ -238,7 +238,7 @@ public void MergeFeatureToMainWithPreviousCommits() } [Test] - public void MergeFeatureToMainWithMinorMinorSemversionIncrement() + public void MergeFeatureToMainWithMinorMinorSemVersionIncrement() { using var fixture = new EmptyRepositoryFixture(); @@ -269,7 +269,7 @@ public void MergeFeatureToMainWithMinorMinorSemversionIncrement() } [Test] - public void MergeFeatureToMainWithMajorMinorSemversionIncrement() + public void MergeFeatureToMainWithMajorMinorSemVersionIncrement() { using var fixture = new EmptyRepositoryFixture(); @@ -300,7 +300,7 @@ public void MergeFeatureToMainWithMajorMinorSemversionIncrement() } [Test] - public void MergeFeatureToMainWithPreviousCommitsAndMinorMinorSemversionIncrement() + public void MergeFeatureToMainWithPreviousCommitsAndMinorMinorSemVersionIncrement() { using var fixture = new EmptyRepositoryFixture(); @@ -345,7 +345,7 @@ public void MergeFeatureToMainWithPreviousCommitsAndMinorMinorSemversionIncremen } [Test] - public void MergeFeatureToMainWithPreviousCommitsAndMinorMajorSemversionIncrement() + public void MergeFeatureToMainWithPreviousCommitsAndMinorMajorSemVersionIncrement() { using var fixture = new EmptyRepositoryFixture(); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/ContinuousDeliveryTestScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/ContinuousDeliveryTestScenarios.cs index 60c0cc0ab2..fc3168c637 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/ContinuousDeliveryTestScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/ContinuousDeliveryTestScenarios.cs @@ -73,7 +73,7 @@ public void ShouldUseConfiguredNextVersionOnMainWhenNoHigherVersionsAvailable() } [Test] - public void ShouldNotMatterWhenConfiguredNextVersionIsEqualsToTheTaggeVersion() + public void ShouldNotMatterWhenConfiguredNextVersionIsEqualsToTheTaggedVersion() { // * 858f71b 58 minutes ago (HEAD -> main, tag: 1.0.0) diff --git a/src/GitVersion.Core.Tests/IntegrationTests/CreatingAFeatureBranchFromAReleaseBranchScenario.cs b/src/GitVersion.Core.Tests/IntegrationTests/CreatingAFeatureBranchFromAReleaseBranchScenario.cs index e803fa05f1..6d8a75983a 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/CreatingAFeatureBranchFromAReleaseBranchScenario.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/CreatingAFeatureBranchFromAReleaseBranchScenario.cs @@ -180,7 +180,7 @@ public void ShouldTreatTheHotfixBranchLikeTheFirstReleaseBranchWhenItHasBeenBran var configuration = GitFlowConfigurationBuilder.New.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit(); fixture.BranchTo("release/1.0.0"); @@ -248,7 +248,7 @@ public void ShouldTreatTheHotfixBranchLikeTheFirstReleaseBranchWhenItHasBeenBran var configuration = GitFlowConfigurationBuilder.New.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit(); fixture.BranchTo("develop"); @@ -319,7 +319,7 @@ public void ShouldTreatTheFeatureBranchLikeTheFirstReleaseBranchWhenItHasBeenBra var configuration = GitFlowConfigurationBuilder.New.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeACommit(); fixture.BranchTo("release/1.0.0"); @@ -389,7 +389,7 @@ public void ShouldTreatTheFeatureBranchLikeTheFirstReleaseBranchWhenItHasBeenBra var configuration = GitFlowConfigurationBuilder.New.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeACommit(); fixture.BranchTo("develop"); @@ -462,7 +462,7 @@ public void ShouldTreatTheHotfixBranchLikeTheFirstReleaseBranchWhenItHasBeenBran var configuration = GitFlowConfigurationBuilder.New.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeACommit(); fixture.BranchTo("release/1.0.0"); @@ -532,7 +532,7 @@ public void ShouldTreatTheHotfixBranchLikeTheFirstReleaseBranchWhenItHasBeenBran var configuration = GitFlowConfigurationBuilder.New.Build(); - using var fixture = new EmptyRepositoryFixture("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeACommit(); fixture.BranchTo("develop"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/DevelopScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/DevelopScenarios.cs index 2fab203ef4..6d06396eb4 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/DevelopScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/DevelopScenarios.cs @@ -499,7 +499,7 @@ public void PreventDecrementationOfVersionsOnTheMainBranch() // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-beta.1+2", configurationBuilder.Build()); - // now we makes changes on develop that may or may not end up in the 1.0.0 release + // now we make changes on develop that may or may not end up in the 1.0.0 release fixture.Checkout("develop"); // ✅ succeeds as expected diff --git a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs index 9da73925f9..b72cb67ccf 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs @@ -13,7 +13,7 @@ public void FeatureFromMainBranch(bool withPullRequestIntoMain) { var configuration = GitFlowConfigurationBuilder.New.Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); // GitFlow setup fixture.SequenceDiagram.Activate("main"); @@ -86,7 +86,7 @@ public void FeatureFromMainBranchWithMainline(bool withPullRequestIntoMain) .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) .Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); // GitFlow setup fixture.SequenceDiagram.Activate("main"); @@ -154,7 +154,7 @@ public void HotfixBranch(bool withPullRequestIntoMain) { var configuration = GitFlowConfigurationBuilder.New.Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); // GitFlow setup fixture.SequenceDiagram.Activate("main"); @@ -227,7 +227,7 @@ public void HotfixBranchWithMainline(bool withPullRequestIntoMain) .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) .Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); // GitFlow setup fixture.SequenceDiagram.Activate("main"); @@ -295,7 +295,7 @@ public void VersionedHotfixBranch(bool withPullRequestIntoMain) { var configuration = GitFlowConfigurationBuilder.New.Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); // GitFlow setup fixture.SequenceDiagram.Activate("main"); @@ -368,7 +368,7 @@ public void VersionedHotfixBranchWithMainline(bool withPullRequestIntoMain) .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) .Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); // GitFlow setup fixture.SequenceDiagram.Activate("main"); @@ -436,7 +436,7 @@ public void ReleaseBranch(bool withPullRequestIntoMain) { var configuration = GitFlowConfigurationBuilder.New.Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); // GitFlow setup fixture.SequenceDiagram.Activate("main"); @@ -509,7 +509,7 @@ public void ReleaseBranchWithMainline(bool withPullRequestIntoMain) .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) .Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); // GitFlow setup fixture.SequenceDiagram.Activate("main"); @@ -577,7 +577,7 @@ public void VersionedReleaseBranch(bool withPullRequestIntoMain) { var configuration = GitFlowConfigurationBuilder.New.Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); // GitFlow setup fixture.SequenceDiagram.Activate("main"); @@ -650,7 +650,7 @@ public void VersionedReleaseBranchWithMainline(bool withPullRequestIntoMain) .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) .Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); // GitFlow setup fixture.SequenceDiagram.Activate("main"); @@ -718,7 +718,7 @@ public void DevelopBranch(bool withPullRequestIntoMain) { var configuration = GitFlowConfigurationBuilder.New.Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.SequenceDiagram.Participant("main"); fixture.SequenceDiagram.Participant("develop"); @@ -813,7 +813,7 @@ public void DevelopBranchWithMainline(bool withPullRequestIntoMain) .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrackReleaseBranches, VersionStrategies.Mainline) .Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.SequenceDiagram.Participant("main"); fixture.SequenceDiagram.Participant("develop"); @@ -903,7 +903,7 @@ public void SupportBranch(bool withPullRequestIntoSupport) { var configuration = GitFlowConfigurationBuilder.New.Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.SequenceDiagram.Participant("main"); @@ -987,7 +987,7 @@ public void SupportBranchWithMainline(bool withPullRequestIntoSupport) .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.TrackReleaseBranches, VersionStrategies.Mainline) .Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.SequenceDiagram.Participant("main"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitHubFlow.cs b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitHubFlow.cs index d892bdd1d7..0f0aaf4202 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitHubFlow.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitHubFlow.cs @@ -13,7 +13,7 @@ public void FeatureBranch(bool withPullRequestIntoMain) { var configuration = GitHubFlowConfigurationBuilder.New.Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); // GitFlow setup fixture.SequenceDiagram.Activate("main"); @@ -86,7 +86,7 @@ public void FeatureBranchWithMainline(bool withPullRequestIntoMain) .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) .Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); // GitFlow setup fixture.SequenceDiagram.Activate("main"); @@ -154,7 +154,7 @@ public void ReleaseBranch(bool withPullRequestIntoMain) { var configuration = GitHubFlowConfigurationBuilder.New.Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); // GitFlow setup fixture.SequenceDiagram.Activate("main"); @@ -227,7 +227,7 @@ public void ReleaseBranchWithMainline(bool withPullRequestIntoMain) .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) .Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); // GitFlow setup fixture.SequenceDiagram.Activate("main"); @@ -295,7 +295,7 @@ public void VersionedReleaseBranch(bool withPullRequestIntoMain) { var configuration = GitHubFlowConfigurationBuilder.New.Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); // GitFlow setup fixture.SequenceDiagram.Activate("main"); @@ -368,7 +368,7 @@ public void VersionedReleaseBranchWithMainline(bool withPullRequestIntoMain) .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) .Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); // GitFlow setup fixture.SequenceDiagram.Activate("main"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/FallbackVersionStrategyScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/FallbackVersionStrategyScenarios.cs index b7bcf88f90..9076c18b5c 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/FallbackVersionStrategyScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/FallbackVersionStrategyScenarios.cs @@ -9,7 +9,7 @@ public class FallbackVersionStrategyScenarios : TestBase { private static GitHubFlowConfigurationBuilder ConfigurationBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Fallback) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [TestCase(IncrementStrategy.None, "0.0.0-1+1")] [TestCase(IncrementStrategy.Patch, "0.0.1-1+1")] @@ -18,10 +18,10 @@ public class FallbackVersionStrategyScenarios : TestBase public void EnsureVersionIncrementOnMainWillBeUsed(IncrementStrategy increment, string expected) { var configuration = ConfigurationBuilder - .WithBranch("main", _ => _.WithIncrement(increment)) + .WithBranch("main", b => b.WithIncrement(increment)) .Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit(); @@ -36,10 +36,10 @@ public void EnsureVersionIncrementOnMainWillBeUsed(IncrementStrategy increment, public void EnsureVersionIncrementOnMessageWillBeUsed(IncrementStrategy increment, string expected) { var configuration = ConfigurationBuilder - .WithBranch("main", _ => _.WithIncrement(IncrementStrategy.None)) + .WithBranch("main", b => b.WithIncrement(IncrementStrategy.None)) .Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit($"+semver: {increment}"); @@ -52,13 +52,13 @@ public void EnsureVersionIncrementOnMessageWillBeUsed(IncrementStrategy incremen public void TakeTheLatestCommitAsBaseVersion(bool mode) { var configuration = ConfigurationBuilder - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithIncrement(IncrementStrategy.Major) .WithTrackMergeTarget(true) .WithTracksReleaseBranches(false) ).Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.BranchTo("release/foo"); @@ -100,13 +100,13 @@ public void TakeTheCommitBranchedFromAsBaseVersionWhenTracksReleaseBranchesIsTru bool tracksReleaseBranches, string version) { var configuration = ConfigurationBuilder - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithIncrement(IncrementStrategy.Major) .WithTrackMergeTarget(false) .WithTracksReleaseBranches(tracksReleaseBranches) ).Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeACommit("B"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/FeatureBranchScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/FeatureBranchScenarios.cs index 9b30536fd7..0f2f64c1ff 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/FeatureBranchScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/FeatureBranchScenarios.cs @@ -235,7 +235,7 @@ public void BranchCreatedAfterFinishReleaseShouldInheritAndIncrementFromLastMain fixture.BranchTo("feature/TEST-1"); fixture.Repository.MakeACommit(); - //I'm not entirely sure what the + value should be but I know the semvar major/minor/patch should be 0.3.0 + //I'm not entirely sure what the + value should be, but I know the semver major/minor/patch should be 0.3.0 fixture.AssertFullSemver("0.3.0-TEST-1.1+2"); } diff --git a/src/GitVersion.Core.Tests/IntegrationTests/IgnoreCommitScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/IgnoreCommitScenarios.cs index 9f56c41b7d..0ab82ba0e8 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/IgnoreCommitScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/IgnoreCommitScenarios.cs @@ -156,7 +156,7 @@ public void GivenTrunkBasedWorkflowWithIgnoreConfigurationOfCommitBThenTagShould var configuration = TrunkBasedConfigurationBuilder.New .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitB.Sha] }) - .WithBranch("main", _ => _.WithIncrement(IncrementStrategy.Patch) + .WithBranch("main", b => b.WithIncrement(IncrementStrategy.Patch) .WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged) .WithDeploymentMode(GitVersion.VersionCalculation.DeploymentMode.ContinuousDelivery) ).Build(); @@ -177,7 +177,7 @@ public void GivenTrunkBasedWorkflowWithCommitParameterBThenTagShouldBeConsidered fixture.MakeACommit("B"); var configuration = TrunkBasedConfigurationBuilder.New - .WithBranch("main", _ => _.WithIncrement(IncrementStrategy.Patch) + .WithBranch("main", b => b.WithIncrement(IncrementStrategy.Patch) .WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged) .WithDeploymentMode(GitVersion.VersionCalculation.DeploymentMode.ContinuousDelivery) ).Build(); @@ -306,7 +306,7 @@ public void GivenGitHubFlowWorkflowWithIgnoreConfigurationOfCommitBThenTagShould var configuration = GitHubFlowConfigurationBuilder.New .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitB.Sha] }) - .WithBranch("main", _ => _.WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged)) + .WithBranch("main", b => b.WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged)) .Build(); // ✅ succeeds as expected @@ -325,7 +325,7 @@ public void GivenGitHubFlowWorkflowWithCommitParameterBThenTagShouldBeConsidered fixture.MakeACommit("B"); var configuration = GitHubFlowConfigurationBuilder.New - .WithBranch("main", _ => _.WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged)) + .WithBranch("main", b => b.WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged)) .Build(); // ✅ succeeds as expected diff --git a/src/GitVersion.Core.Tests/IntegrationTests/MainScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/MainScenarios.cs index c4bae960c6..709263c825 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/MainScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/MainScenarios.cs @@ -308,7 +308,7 @@ public void PreventDecrementationOfVersionsOnTheDevelopmentBranch() // ✅ succeeds as expected fixture.AssertFullSemver("1.0.0-beta.1+2", configurationBuilder.Build()); - // now we makes changes on develop that may or may not end up in the 1.0.0 release + // now we make changes on develop that may or may not end up in the 1.0.0 release fixture.Checkout("develop"); // ✅ succeeds as expected @@ -337,8 +337,8 @@ public void PreventDecrementationOfVersionsOnTheDevelopmentBranch() // ✅ succeeds as expected fixture.AssertFullSemver("1.1.0-alpha.2", configurationBuilder.Build()); - // now we decide that the new on develop should be part of the beta 2 release - // so we merge it into release/1.0.0 with --no-ff because it is a protected branch + // now we decide that the new on develop should be part of the beta 2 release, + // so we merge it into release/1.0.0 with --no-ff because it is a protected branch, // but we don't do the release of beta 2 just yet fixture.Checkout("release/1.0.0"); fixture.MergeNoFF("develop"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/MainlineDevelopmentScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/MainlineDevelopmentScenarios.cs index 366c593102..8ba8ab429f 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/MainlineDevelopmentScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/MainlineDevelopmentScenarios.cs @@ -219,7 +219,7 @@ public void VerifyDevelopTracksMainVersion() fixture.MakeACommit(); fixture.AssertFullSemver("1.1.1", configuration); - // adding a commit to main doesn't change develop's version + // adding a commit to main doesn't change develop 's version fixture.Checkout("develop"); fixture.AssertFullSemver("1.1.0-alpha.2", configuration); } diff --git a/src/GitVersion.Core.Tests/IntegrationTests/OtherBranchScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/OtherBranchScenarios.cs index 985e6e865a..597ac26ba2 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/OtherBranchScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/OtherBranchScenarios.cs @@ -62,7 +62,7 @@ public void CanUseCommitMessagesToBumpVersion_TagsTakePriorityOnlyIfVersions( public string WhenTaggingACommitAsPreRelease(string tagPrefix, string? label, string tag, string expectedVersion) { var configuration = GitFlowConfigurationBuilder.New.WithLabel(null).WithTagPrefix(tagPrefix) - .WithBranch("main", _ => _.WithLabel(label).WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("main", b => b.WithLabel(label).WithDeploymentMode(DeploymentMode.ManualDeployment)) .Build(); using var fixture = new EmptyRepositoryFixture(); @@ -72,7 +72,7 @@ public string WhenTaggingACommitAsPreRelease(string tagPrefix, string? label, st fixture.AssertFullSemver(expectedVersion, configuration); fixture.ApplyTag(tag); - return fixture!.GetVersion(configuration).FullSemVer; + return fixture.GetVersion(configuration).FullSemVer; } /// @@ -102,7 +102,7 @@ public void ShouldOnlyConsiderTagsMatchingOfCurrentBranch() public void CanTakeVersionFromReleaseBranch() { var configuration = GitFlowConfigurationBuilder.New - .WithBranch("release", _ => _.WithLabel("{BranchName}").WithRegularExpression("(?.+)")) + .WithBranch("release", b => b.WithLabel("{BranchName}").WithRegularExpression("(?.+)")) .Build(); using var fixture = new EmptyRepositoryFixture(); @@ -120,7 +120,7 @@ public void CanTakeVersionFromReleaseBranch() public void CanTakeVersionFromHotfixBranch() { var configuration = GitFlowConfigurationBuilder.New - .WithBranch("hotfix", _ => _.WithLabel("{BranchName}").WithRegularExpression("(?.+)")) + .WithBranch("hotfix", b => b.WithLabel("{BranchName}").WithRegularExpression("(?.+)")) .Build(); using var fixture = new EmptyRepositoryFixture(); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs index 0ceff64960..dce46a0eb6 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs @@ -915,7 +915,7 @@ public void EnsurePreReleaseTagLabelWithInitialTagWillBeConsideredIfGammaLabelIs public void IncreaseVersionWithBumpMessageWhenCommitMessageIncrementIsEnabledAndIncrementStrategyIsNoneForBranchWithNoLabel(string? label) { var configuration = GitFlowConfigurationBuilder.New.WithLabel(null) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithCommitMessageIncrementing(CommitMessageIncrementMode.Enabled) .WithDeploymentMode(DeploymentMode.ContinuousDelivery) .WithIncrement(IncrementStrategy.None) @@ -956,7 +956,7 @@ public void IncreaseVersionWithBumpMessageWhenCommitMessageIncrementIsEnabledAnd public void IncreaseVersionWithBumpMessageWhenCommitMessageIncrementIsEnabledAndIncrementStrategyIsNoneForBranchWithAlphaLabel() { var configuration = GitFlowConfigurationBuilder.New - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithCommitMessageIncrementing(CommitMessageIncrementMode.Enabled) .WithDeploymentMode(DeploymentMode.ContinuousDelivery) .WithIncrement(IncrementStrategy.None) @@ -998,7 +998,7 @@ public void ShouldProvideTheCorrectVersionEvenIfPreReleaseLabelExistsInTheGitTag var configuration = GitFlowConfigurationBuilder.New .WithNextVersion("5.0") .WithSemanticVersionFormat(SemanticVersionFormat.Loose) - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithLabel("beta") .WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ContinuousDelivery) @@ -1039,7 +1039,7 @@ public void ShouldProvideTheCorrectVersionEvenIfPreReleaseLabelExistsInTheGitTag public void EnsureThePreReleaseTagIsCorrectlyGeneratedWhenPreReleaseLabelIsEmpty() { var configuration = GitFlowConfigurationBuilder.New - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithLabel(string.Empty).WithIsMainBranch(false) .WithDeploymentMode(DeploymentMode.ContinuousDelivery) ).Build(); @@ -1068,7 +1068,7 @@ public void EnsurePreventIncrementWhenCurrentCommitTaggedOnDevelopWithDeployment string tag, bool preventIncrementWhenCurrentCommitTagged, string version) { var configuration = GitFlowConfigurationBuilder.New - .WithBranch("develop", _ => _ + .WithBranch("develop", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged) ).Build(); @@ -1097,7 +1097,7 @@ public void EnsurePreventIncrementWhenCurrentCommitTaggedOnDevelopWithDeployment string tag, bool preventIncrementWhenCurrentCommitTagged, string version) { var configuration = GitFlowConfigurationBuilder.New - .WithBranch("develop", _ => _ + .WithBranch("develop", b => b .WithDeploymentMode(DeploymentMode.ContinuousDelivery) .WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged) ).Build(); @@ -1126,7 +1126,7 @@ public void EnsurePreventIncrementWhenCurrentCommitTaggedOnDevelopWithDeployment string tag, bool preventIncrementWhenCurrentCommitTagged, string version) { var configuration = GitFlowConfigurationBuilder.New - .WithBranch("develop", _ => _ + .WithBranch("develop", b => b .WithDeploymentMode(DeploymentMode.ContinuousDeployment) .WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged) ).Build(); @@ -1145,7 +1145,7 @@ public void EnsurePreventIncrementWhenCurrentCommitTaggedOnDevelopWithNextVersio { var configuration = GitFlowConfigurationBuilder.New .WithNextVersion("6.0.0") - .WithBranch("develop", _ => _ + .WithBranch("develop", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged) ).Build(); @@ -1203,7 +1203,7 @@ public void EnsurePreventIncrementWhenCurrentCommitTaggedOnReleaseBranchAndIncre string[]? tags, bool preventIncrementWhenCurrentCommitTagged, string semVersion) { var configuration = GitFlowConfigurationBuilder.New - .WithBranch("release", _ => _ + .WithBranch("release", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged) .WithIncrement(IncrementStrategy.Minor) @@ -1370,7 +1370,7 @@ public void AlternativeSemanticVersionsShouldBeConsidered() { var configuration = GitFlowConfigurationBuilder.New.Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit("A"); fixture.MakeATaggedCommit("4.0.0-beta.14"); @@ -1385,10 +1385,10 @@ public void AlternativeSemanticVersionsShouldBeConsidered(string? labelOnMain, s { var configuration = GitFlowConfigurationBuilder.New .WithLabel(null) - .WithBranch("main", _ => _.WithLabel(labelOnMain)) + .WithBranch("main", b => b.WithLabel(labelOnMain)) .Build(); - using EmptyRepositoryFixture fixture = new("main"); + using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("1.0.0"); fixture.MakeATaggedCommit("4.0.0-beta.14"); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs index 6754a39139..683d3dbec7 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/PullRequestScenarios.cs @@ -14,9 +14,9 @@ public class PullRequestScenarios : TestBase public void EnsurePullRequestWithIncrementMajorOnMainAndMinorOnFeatureBranch() { var configuration = GitHubFlowConfigurationBuilder.New - .WithBranch("main", _ => _ + .WithBranch("main", b => b .WithIncrement(IncrementStrategy.Major) - ).WithBranch("feature", _ => _ + ).WithBranch("feature", b => b .WithIncrement(IncrementStrategy.Minor) ).Build(); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/ReleaseBranchScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/ReleaseBranchScenarios.cs index 9a777ef127..8437c3fd33 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/ReleaseBranchScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/ReleaseBranchScenarios.cs @@ -418,7 +418,7 @@ public void CommitOnDevelopAfterReleaseBranchMergeToDevelopShouldNotResetCount() } [Test] - public void CommitBeetweenMergeReleaseToDevelopShouldNotResetCount() + public void CommitBetweenMergeReleaseToDevelopShouldNotResetCount() { var configuration = GitFlowConfigurationBuilder.New.Build(); diff --git a/src/GitVersion.Core.Tests/Logging/LoggerTest.cs b/src/GitVersion.Core.Tests/Logging/LoggerTest.cs index 0c9d6fb76d..e0e1ccdeaa 100644 --- a/src/GitVersion.Core.Tests/Logging/LoggerTest.cs +++ b/src/GitVersion.Core.Tests/Logging/LoggerTest.cs @@ -35,7 +35,7 @@ public void UsernameWithoutPassword() var logAppender = new TestLogAppender(Action); var log = new Log(logAppender); - const string repoUrl = "http://username@workspace.visualstudio.com/DefaultCollection/_git/CAS"; + const string repoUrl = "https://username@workspace.visualstudio.com/DefaultCollection/_git/CAS"; log.Info(repoUrl); diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs index bb66b40d71..b6b96cd061 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhen.cs @@ -14,8 +14,8 @@ public class GivenADevelopBranchWithOneCommitMergedToMainWhen private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New.WithLabel(null) .WithVersionStrategy(VersionStrategies.Mainline) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("develop", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("develop", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -59,8 +59,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("develop", _ => _.WithIncrement(increment)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("develop", b => b.WithIncrement(increment)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -88,8 +88,8 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("develop", _ => _.WithIncrement(increment)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("develop", b => b.WithIncrement(increment)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs index c84ca98dc2..648d69ddba 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitFlow+GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedAsStable.cs @@ -14,8 +14,8 @@ public class GivenADevelopBranchWithOneCommitMergedToMainWhenMergedCommitTaggedA private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New.WithLabel(null) .WithVersionStrategy(VersionStrategies.Mainline) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("develop", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("develop", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -61,8 +61,8 @@ public void OneTimeSetUp() public string GetVersionWithTrackMergeTargetOnDevelop(IncrementStrategy incrementOnMain, IncrementStrategy increment) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("develop", _ => _.WithIncrement(increment).WithTrackMergeTarget(true)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("develop", b => b.WithIncrement(increment).WithTrackMergeTarget(true)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -90,8 +90,8 @@ public string GetVersionWithTrackMergeTargetOnDevelop(IncrementStrategy incremen public string GetVersionWithNoTrackMergeTargetOnDevelop(IncrementStrategy incrementOnMain, IncrementStrategy increment) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("develop", _ => _.WithIncrement(increment).WithTrackMergeTarget(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("develop", b => b.WithIncrement(increment).WithTrackMergeTarget(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs index 3160655c09..87d626b6a4 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithAMergeCommitFromMainMergedBackToMainWhen private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New.WithLabel(null) .WithVersionStrategy(VersionStrategies.Mainline) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -134,8 +134,8 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, IncrementStrategy incrementOnFeature, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) - .WithBranch("feature", _ => _.WithIncrement(incrementOnFeature)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", b => b.WithIncrement(incrementOnFeature)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -228,8 +228,8 @@ public string GetVersionWithPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy increment, IncrementStrategy incrementOnFeature, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(incrementOnFeature)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(incrementOnFeature)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs index 9b2772f1a8..a223f6f1be 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithAMergeCommitFromMainWhen.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithAMergeCommitFromMainWhen private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New.WithLabel(null) .WithVersionStrategy(VersionStrategies.Mainline) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -68,8 +68,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -101,8 +101,8 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -134,8 +134,8 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -167,8 +167,8 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs index 9a8ff621bf..b621263a0e 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhen.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhen private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -141,8 +141,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -254,8 +254,8 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -367,8 +367,8 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -480,8 +480,8 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs index 85b532dd2d..e316d139ac 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMajor.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpM private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -141,8 +141,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -255,9 +255,9 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -370,9 +370,9 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -485,8 +485,8 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -599,9 +599,9 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -714,9 +714,9 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -828,8 +828,8 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -942,9 +942,9 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1057,9 +1057,9 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1171,8 +1171,8 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1285,9 +1285,9 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1400,9 +1400,9 @@ public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs index f4fae6fa1f..726d511f00 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessageMinor.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpM private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -141,8 +141,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -255,9 +255,9 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -370,9 +370,9 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -485,8 +485,8 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -599,9 +599,9 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -714,9 +714,9 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -828,8 +828,8 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -942,9 +942,9 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1057,9 +1057,9 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1171,8 +1171,8 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1285,9 +1285,9 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1400,9 +1400,9 @@ public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs index 479b94b421..ac28a234eb 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpMessagePatch.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitAHasBumpM private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -141,8 +141,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -255,9 +255,9 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -370,9 +370,9 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -484,8 +484,8 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -598,9 +598,9 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -713,9 +713,9 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -827,8 +827,8 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -941,9 +941,9 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1056,9 +1056,9 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1170,8 +1170,8 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1284,9 +1284,9 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1399,9 +1399,9 @@ public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs index f8fa3b092f..826cdde4c8 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreRelease.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAs private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -142,8 +142,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -255,8 +255,8 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -368,8 +368,8 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -481,8 +481,8 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs index 985860a103..efd75ff410 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseBar.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAs private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -142,8 +142,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -255,8 +255,8 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -368,8 +368,8 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -481,8 +481,8 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs index f27b19a36d..6014f1af71 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsPreReleaseFoo.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAs private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -142,8 +142,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -255,8 +255,8 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -368,8 +368,8 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -481,8 +481,8 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs index 76caf74f85..4de1d77ae9 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAsStable.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitATaggedAs private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -143,8 +143,8 @@ public string GetVersionWithNoLabelOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -257,8 +257,8 @@ public string GetVersionWithEmptyLabelOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -371,8 +371,8 @@ public string GetVersionWithLabelFooOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -485,8 +485,8 @@ public string GetVersionWithLabelBarOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs index 1d2d1e8ed3..4d72b021d5 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMajor.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpM private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -141,8 +141,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -255,8 +255,8 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -371,8 +371,8 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); @@ -486,8 +486,8 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -600,8 +600,8 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -716,8 +716,8 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); @@ -831,8 +831,8 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -945,8 +945,8 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -1061,8 +1061,8 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); @@ -1176,8 +1176,8 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1290,8 +1290,8 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -1406,8 +1406,8 @@ public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs index 27d612ca90..ee1731cda9 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessageMinor.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpM private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -141,8 +141,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -255,8 +255,8 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -371,8 +371,8 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); @@ -486,8 +486,8 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -600,8 +600,8 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -716,8 +716,8 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); @@ -831,8 +831,8 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -945,8 +945,8 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -1061,8 +1061,8 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); @@ -1176,8 +1176,8 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1290,8 +1290,8 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -1406,8 +1406,8 @@ public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs index 04344acc30..fd31f2d6e8 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpMessagePatch.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBHasBumpM private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -141,8 +141,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -255,8 +255,8 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -371,8 +371,8 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); @@ -486,8 +486,8 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -600,8 +600,8 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -716,8 +716,8 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); @@ -831,8 +831,8 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -945,8 +945,8 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -1061,8 +1061,8 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); @@ -1176,8 +1176,8 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1290,8 +1290,8 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -1406,8 +1406,8 @@ public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b .WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs index 5157385de6..05502b86f9 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreRelease.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAs private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -142,8 +142,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -255,8 +255,8 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -368,8 +368,8 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -481,8 +481,8 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs index 253bbcbff7..2e90aa8889 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseBar.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAs private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -142,8 +142,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -255,8 +255,8 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -368,8 +368,8 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -481,8 +481,8 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs index c3335ac0da..ef0054c150 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsPreReleaseFoo.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAs private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -142,8 +142,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -255,8 +255,8 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -368,8 +368,8 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -481,8 +481,8 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs index 87926ce5aa..3ab135df63 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAsStable.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitBranchedFromMainWhenCommitBTaggedAs private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -143,8 +143,8 @@ public string GetVersionWithNoLabelOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -237,8 +237,8 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -351,8 +351,8 @@ public string GetVersionWithEmptyLabelOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -445,8 +445,8 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -559,8 +559,8 @@ public string GetVersionWithLabelFooOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -653,8 +653,8 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -767,8 +767,8 @@ public string GetVersionWithLabelBarOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -861,8 +861,8 @@ public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTa IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs index 55cc9a5785..01d13e03f9 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhen.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitMergedToMainWhen private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -146,8 +146,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -261,8 +261,8 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -375,8 +375,8 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -490,8 +490,8 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -604,8 +604,8 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -719,8 +719,8 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -833,8 +833,8 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -948,8 +948,8 @@ public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFals IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs index 9c0044c29b..b19f8c64a8 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreRelease.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreR private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -146,8 +146,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -260,8 +260,8 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -373,8 +373,8 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -488,8 +488,8 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -601,8 +601,8 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -715,8 +715,8 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -828,8 +828,8 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -942,8 +942,8 @@ public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFals IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs index 6b45e8f8e7..a11ab72d0a 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseBar.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreR private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -146,8 +146,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -260,8 +260,8 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -373,8 +373,8 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -487,8 +487,8 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -600,8 +600,8 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -714,8 +714,8 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -827,8 +827,8 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -941,8 +941,8 @@ public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFals IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs index e9544cc614..300eb4e00c 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreReleaseFoo.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsPreR private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -146,8 +146,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -260,8 +260,8 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -373,8 +373,8 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -487,8 +487,8 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -600,8 +600,8 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -714,8 +714,8 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -827,8 +827,8 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -941,8 +941,8 @@ public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFals IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs index 6e207987f4..5ceace138e 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStable.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitMergedToMainWhenCommitBTaggedAsStab private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -146,8 +146,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -260,8 +260,8 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -370,11 +370,11 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "0.1.0-1+1")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-1+1")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-1+1")] - public string GetVersionWithEmpyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) + public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -483,12 +483,12 @@ public string GetVersionWithEmpyLabelOnMain(IncrementStrategy incrementOnMain, I [TestCase(IncrementStrategy.Major, IncrementStrategy.Minor, "{BranchName}", ExpectedResult = "1.0.0-1+1")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Major, "{BranchName}", ExpectedResult = "1.0.0-1+1")] [TestCase(IncrementStrategy.Major, IncrementStrategy.Inherit, "{BranchName}", ExpectedResult = "1.0.0-1+1")] - public string GetVersionWithEmpyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain( + public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFalseOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -600,8 +600,8 @@ public string GetVersionWithEmpyLabelAndPreventIncrementOfMergedBranchVersionFal public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -714,8 +714,8 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -827,8 +827,8 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -941,8 +941,8 @@ public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFals IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs index e6f7d83c78..a00b118d9a 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedToFeatureWhen.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithOneCommitMergedToMainWithOneCommitBranchedTo private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -151,8 +151,8 @@ public void OneTimeSetUp() public string GetVersionWithLabelNullOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -266,8 +266,8 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -380,8 +380,8 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -495,8 +495,8 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -609,8 +609,8 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -724,8 +724,8 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -838,8 +838,8 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -953,8 +953,8 @@ public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFals IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs index 3ff90c04ea..cdd2e25d5a 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhen.cs @@ -14,7 +14,7 @@ public class GivenAFeatureBranchWithOneCommitWhen private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("feature", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -51,7 +51,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs index fff98b9e2b..7ee8bc6e68 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs @@ -14,7 +14,7 @@ public class GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMajor private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("feature", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -51,7 +51,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -79,7 +79,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -108,7 +108,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs index 1c1c9cd7ed..75e2ae6018 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs @@ -14,7 +14,7 @@ public class GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessageMinor private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("feature", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -51,7 +51,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -79,7 +79,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -108,7 +108,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs index 984e957fcc..e8dbb2d8ea 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs @@ -14,7 +14,7 @@ public class GivenAFeatureBranchWithOneCommitWhenCommitHasBumpMessagePatch private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("feature", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("feature", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -51,7 +51,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -79,7 +79,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -108,7 +108,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs index 509022c68b..c65189358f 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs @@ -14,7 +14,7 @@ public class GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreRelease private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("feature", _ => _ + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -54,7 +54,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -82,7 +82,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs index 61b23319ac..7eab4b4550 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs @@ -14,7 +14,7 @@ public class GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("feature", _ => _ + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -54,7 +54,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -82,7 +82,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs index a74ea44292..94a7919769 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs @@ -14,7 +14,7 @@ public class GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("feature", _ => _ + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -54,7 +54,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -82,7 +82,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs index 34bc870488..2a364c6117 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable.cs @@ -14,7 +14,7 @@ public class GivenAFeatureBranchWithOneCommitWhenCommitTaggedAsStable private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("feature", _ => _ + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -54,7 +54,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -82,7 +82,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithPreventIncrementWhenCurrentCommitTaggedFalse(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs index a4a2e00aea..bbf25713ae 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithThreeCommitsBranchedFromMainWhen private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -125,8 +125,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -218,8 +218,8 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -311,8 +311,8 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs index c55a7aaede..1e60798ead 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsMergedToMainWhen.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithThreeCommitsMergedToMainWhen private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -150,8 +150,8 @@ public void OneTimeSetUp() public string GetVersionWithLabelNullOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -265,8 +265,8 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -379,8 +379,8 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -494,8 +494,8 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -608,8 +608,8 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -723,8 +723,8 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -837,8 +837,8 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -952,8 +952,8 @@ public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFals IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs index 68966d7566..68e261655a 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithThreeCommitsWhen.cs @@ -14,7 +14,7 @@ public class GivenAFeatureBranchWithThreeCommitsWhen private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("feature", _ => _ + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -57,7 +57,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs index 8cf2641892..ca166148b5 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithTwoCommitsBranchedFromMainWhen private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -123,8 +123,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -216,8 +216,8 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -309,8 +309,8 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs index cce2fd4716..8d53b23842 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsMergedToMainWhen.cs @@ -14,8 +14,8 @@ public class GivenAFeatureBranchWithTwoCommitsMergedToMainWhen private static GitFlowConfigurationBuilder MainlineBuilder => GitFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -148,8 +148,8 @@ public void OneTimeSetUp() public string GetVersionWithLabelNullOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -263,8 +263,8 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null).WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -377,8 +377,8 @@ public string GetVersionWithLabelNullAndPreventIncrementOfMergedBranchVersionFal public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -492,8 +492,8 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty).WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -606,8 +606,8 @@ public string GetVersionWithEmptyLabelAndPreventIncrementOfMergedBranchVersionFa public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -721,8 +721,8 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo").WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -835,8 +835,8 @@ public string GetVersionWithLabelFooAndPreventIncrementOfMergedBranchVersionFals public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -950,8 +950,8 @@ public string GetVersionWithLabelBarAndPreventIncrementOfMergedBranchVersionFals IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar").WithPreventIncrementOfMergedBranch(false)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs index afd0c2b05c..c46eeb186f 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs @@ -14,7 +14,7 @@ public class GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("feature", _ => _ + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -56,7 +56,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs index 3020904978..ede3f8afe4 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs @@ -14,7 +14,7 @@ public class GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseB private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("feature", _ => _ + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -56,7 +56,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs index 1bb394b644..fc3663c8dc 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs @@ -14,7 +14,7 @@ public class GivenAFeatureBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseF private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("feature", _ => _ + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -56,7 +56,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs index eb2b472df3..5562d917d9 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhen.cs @@ -14,8 +14,8 @@ public class GivenAMainBranchWithOneCommitBranchedToFeatureWhen private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -139,8 +139,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -253,8 +253,8 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -366,8 +366,8 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -479,8 +479,8 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs index b034e68a17..0c215481b9 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMajor.cs @@ -14,8 +14,8 @@ public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMess private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -139,8 +139,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -253,9 +253,9 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -368,9 +368,9 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -483,8 +483,8 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -597,9 +597,9 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -712,9 +712,9 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -826,8 +826,8 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -940,9 +940,9 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1055,9 +1055,9 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1169,8 +1169,8 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1283,9 +1283,9 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1398,9 +1398,9 @@ public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs index 3bfce93c5f..5cedf59ec5 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessageMinor.cs @@ -14,8 +14,8 @@ public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMess private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -139,8 +139,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -253,9 +253,9 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -368,9 +368,9 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -483,8 +483,8 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -597,9 +597,9 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -712,9 +712,9 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -826,8 +826,8 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -940,9 +940,9 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1055,9 +1055,9 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1169,8 +1169,8 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1283,9 +1283,9 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1398,9 +1398,9 @@ public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs index 9d83ae5d70..b66b8ffb39 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMessagePatch.cs @@ -14,8 +14,8 @@ public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitHasBumpMess private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -139,8 +139,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -253,9 +253,9 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -368,9 +368,9 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -482,8 +482,8 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -596,9 +596,9 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -711,9 +711,9 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -825,8 +825,8 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -939,9 +939,9 @@ public string GetVersionWithLabelFooAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1054,9 +1054,9 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1168,8 +1168,8 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1282,9 +1282,9 @@ public string GetVersionWithLabelBarAndDisabledMergeMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1397,9 +1397,9 @@ public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs index 5830ea2d53..e254e99716 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreRelease.cs @@ -14,8 +14,8 @@ public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPre private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -140,8 +140,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -254,8 +254,8 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -367,8 +367,8 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -481,8 +481,8 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -594,8 +594,8 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -708,8 +708,8 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -821,8 +821,8 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -935,8 +935,8 @@ public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTa IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs index 369ea52f69..6097fd0e09 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseBar.cs @@ -14,8 +14,8 @@ public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPre private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -140,8 +140,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -254,8 +254,8 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -367,8 +367,8 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -481,8 +481,8 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -594,8 +594,8 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -708,8 +708,8 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -821,8 +821,8 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -935,8 +935,8 @@ public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTa IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs index adeb9fb6be..2721e46e16 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPreReleaseFoo.cs @@ -14,8 +14,8 @@ public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsPre private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -140,8 +140,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -254,8 +254,8 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -367,8 +367,8 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -481,8 +481,8 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -594,8 +594,8 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -708,8 +708,8 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -821,8 +821,8 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -935,8 +935,8 @@ public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTa IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs index 41117fbe87..faa9aadc69 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsStable.cs @@ -14,8 +14,8 @@ public class GivenAMainBranchWithOneCommitBranchedToFeatureWhenCommitTaggedAsSta private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -140,8 +140,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -254,8 +254,8 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -367,8 +367,8 @@ public string GetVersionWithNoLabelOnMainAndPreventIncrementWhenCurrentCommitTag public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -481,8 +481,8 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -594,8 +594,8 @@ public string GetVersionWithEmptyLabelOnMainAndPreventIncrementWhenCurrentCommit public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -708,8 +708,8 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -821,8 +821,8 @@ public string GetVersionWithLabelFooOnMainAndPreventIncrementWhenCurrentCommitTa public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -935,8 +935,8 @@ public string GetVersionWithLabelBarOnMainAndPreventIncrementWhenCurrentCommitTa IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label).WithPreventIncrementWhenCurrentCommitTagged(false)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs index 38b2bfc8c8..dbe3587af8 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhen.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithOneCommitWhen private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -51,7 +51,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs index 0133e2b3f0..f426dff437 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMajor private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -51,7 +51,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -79,7 +79,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -108,7 +108,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs index 92397b4354..93f5d04efa 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithOneCommitWhenCommitHasBumpMessageMinor private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -51,7 +51,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -79,7 +79,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -108,7 +108,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs index a513a2d2e3..e0b6c322f8 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithOneCommitWhenCommitHasBumpMessagePatch private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -51,7 +51,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -79,7 +79,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -108,7 +108,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs index eb5a9331c7..05e18236af 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreRelease private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -52,7 +52,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs index f38277b7d8..dd1d0cb61c 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseBar private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -52,7 +52,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs index 4be4581604..ead26ad71c 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithOneCommitWhenCommitTaggedAsPreReleaseFoo private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -52,7 +52,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs index f36826d8b3..f6d1694476 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithOneCommitWhenCommitTaggedAsStable private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -52,7 +52,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs index 218000cfa8..5b4f43cc40 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithThreeCommitsWhen.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithThreeCommitsWhen private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -55,7 +55,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs index 619534d3ff..88b321480e 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen.cs @@ -14,8 +14,8 @@ public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhen private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -141,8 +141,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -254,8 +254,8 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -367,8 +367,8 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -480,8 +480,8 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs index 46789d0f70..d5592d078b 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMajor.cs @@ -14,8 +14,8 @@ public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBu private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -141,8 +141,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -254,9 +254,9 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -368,9 +368,9 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(Incremen public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -482,8 +482,8 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(Increme public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -597,9 +597,9 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -713,9 +713,9 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -827,8 +827,8 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -941,9 +941,9 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1056,10 +1056,10 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1171,8 +1171,8 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain( public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1285,9 +1285,9 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1400,9 +1400,9 @@ public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs index 1e69f79653..117d580522 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessageMinor.cs @@ -14,8 +14,8 @@ public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBu private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -141,8 +141,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -254,9 +254,9 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -368,9 +368,9 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(Incremen public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -482,8 +482,8 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(Increme public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -597,9 +597,9 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -713,9 +713,9 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -827,8 +827,8 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -941,9 +941,9 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1056,10 +1056,10 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1171,8 +1171,8 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain( public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1285,9 +1285,9 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1400,9 +1400,9 @@ public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs index f1fd023e85..92669b7ab4 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBumpMessagePatch.cs @@ -14,8 +14,8 @@ public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitHasBu private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -141,8 +141,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -254,9 +254,9 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -368,9 +368,9 @@ public string GetVersionWithNoLabelAndDisabledMessageIncrementingOnMain(Incremen public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -482,8 +482,8 @@ public string GetVersionWithNoLabelAndMergeMessageOnlyIncrementingOnMain(Increme public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -597,9 +597,9 @@ public string GetVersionWithEmptyLabelAndDisabledMessageIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -713,9 +713,9 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -827,8 +827,8 @@ public string GetVersionWithEmptyLabelAndMergeMessageOnlyIncrementingOnMain( public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -941,9 +941,9 @@ public string GetVersionWithLabelFooAndDisabledMessageIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1056,10 +1056,10 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1171,8 +1171,8 @@ public string GetVersionWithLabelFooAndMergeMessageOnlyIncrementModeOnMain( public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1285,9 +1285,9 @@ public string GetVersionWithLabelBarAndDisabledMessageIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -1400,9 +1400,9 @@ public string GetVersionWithLabelBarAndMergeMessageOnlyIncrementModeOnMain( IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar") + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar") .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) - ).WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + ).WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs index c46a8d5034..5caadaeb23 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreRelease.cs @@ -14,8 +14,8 @@ public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTagge private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -142,8 +142,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -255,8 +255,8 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -368,8 +368,8 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -481,8 +481,8 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs index 9205332abe..54058188ef 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseBar.cs @@ -14,8 +14,8 @@ public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTagge private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -142,8 +142,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -255,8 +255,8 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -368,8 +368,8 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -481,8 +481,8 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs index 3f1b63e185..44ddb5faa0 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsPreReleaseFoo.cs @@ -14,8 +14,8 @@ public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTagge private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -142,8 +142,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -255,8 +255,8 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -368,8 +368,8 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -481,8 +481,8 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs index 51a859036c..b84caf36fc 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTaggedAsStable.cs @@ -14,8 +14,8 @@ public class GivenAMainBranchWithTwoCommitsBranchedToFeatureWhenFirstCommitTagge private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)) - .WithBranch("feature", _ => _ + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)) + .WithBranch("feature", b => b .WithDeploymentMode(DeploymentMode.ManualDeployment).WithPreventIncrementWhenCurrentCommitTagged(true) ); @@ -142,8 +142,8 @@ public void OneTimeSetUp() public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(null)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(null)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -255,8 +255,8 @@ public string GetVersionWithNoLabelOnMain(IncrementStrategy incrementOnMain, Inc public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel(string.Empty)) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel(string.Empty)) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -368,8 +368,8 @@ public string GetVersionWithEmptyLabelOnMain(IncrementStrategy incrementOnMain, public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("foo")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("foo")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -481,8 +481,8 @@ public string GetVersionWithLabelFooOnMain(IncrementStrategy incrementOnMain, In public string GetVersionWithLabelBarOnMain(IncrementStrategy incrementOnMain, IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(incrementOnMain).WithLabel("bar")) - .WithBranch("feature", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(incrementOnMain).WithLabel("bar")) + .WithBranch("feature", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs index 854c4dac22..5ab2e54ec2 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhen.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithTwoCommitsWhen private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -53,7 +53,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs index 554e8a4db2..37abd564e6 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMajor private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -53,7 +53,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -81,7 +81,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -110,7 +110,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs index 41c92cc59d..c8066c87ef 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessageMinor private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -53,7 +53,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -81,7 +81,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -110,7 +110,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs index 8041108063..df68d760c6 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithTwoCommitsWhenFirstCommitHasBumpMessagePatch private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -53,7 +53,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -81,7 +81,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -110,7 +110,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs index 2b9dff7f1e..faf3b55295 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreRelease private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -54,7 +54,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs index 93aa7cd67a..5a55b2ee16 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseBar private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -54,7 +54,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs index cf823959c8..89e4c715aa 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsPreReleaseFoo private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -54,7 +54,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs index 555cf673d8..05b4a99d93 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithTwoCommitsWhenFirstCommitTaggedAsStable private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -54,7 +54,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs index 35d3b44309..333dc9c0e8 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMajor private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -53,7 +53,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -81,7 +81,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -110,7 +110,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs index 6ce5fc53fc..5e94901177 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessageMinor private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -53,7 +53,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -81,7 +81,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -110,7 +110,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs index b15b1bdf22..540b8fce7e 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithTwoCommitsWhenSecondCommitHasBumpMessagePatch private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -53,7 +53,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; @@ -81,7 +81,7 @@ public string GetVersion(IncrementStrategy increment, string? label) public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.Disabled) ).Build(); @@ -110,7 +110,7 @@ public string GetVersionWithDisabledMessageIncrementing(IncrementStrategy increm public string GetVersionWithMergeMessageOnlyIncrementing(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label) .WithCommitMessageIncrementing(CommitMessageIncrementMode.MergeMessageOnly) ).Build(); diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs index d6ca80b48d..ad884f4653 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreRelease private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -54,7 +54,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs index 2db9bb62a9..3f72569f57 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseBar private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -54,7 +54,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs index 82c38a98ed..97d8d78a1c 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsPreReleaseFoo private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -54,7 +54,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs index 142b30d65a..2072e5f8c6 100644 --- a/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs +++ b/src/GitVersion.Core.Tests/Mainline/MainlineScenariosWithAGitHubFlow+GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable.cs @@ -14,7 +14,7 @@ public class GivenAMainBranchWithTwoCommitsWhenSecondCommitTaggedAsStable private static GitHubFlowConfigurationBuilder MainlineBuilder => GitHubFlowConfigurationBuilder.New .WithVersionStrategy(VersionStrategies.Mainline).WithLabel(null) - .WithBranch("main", _ => _.WithDeploymentMode(DeploymentMode.ManualDeployment)); + .WithBranch("main", b => b.WithDeploymentMode(DeploymentMode.ManualDeployment)); [OneTimeSetUp] public void OneTimeSetUp() @@ -54,7 +54,7 @@ public void OneTimeSetUp() public string GetVersion(IncrementStrategy increment, string? label) { IGitVersionConfiguration mainline = MainlineBuilder - .WithBranch("main", _ => _.WithIncrement(increment).WithLabel(label)) + .WithBranch("main", b => b.WithIncrement(increment).WithLabel(label)) .Build(); return fixture!.GetVersion(mainline).FullSemVer; diff --git a/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs index 1e66d278ca..0b90e579f5 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs @@ -10,7 +10,7 @@ namespace GitVersion.Core.Tests.VersionCalculation; public class EffectiveBranchConfigurationFinderTests { [Theory] - public void When_getting_configurations_of_a_branch_without_versioning_mode_Given_fallback_configuaration_with_versioning_mode_Then_result_should_have_versioning_mode( + public void When_getting_configurations_of_a_branch_without_versioning_mode_Given_fallback_configuration_with_versioning_mode_Then_result_should_have_versioning_mode( DeploymentMode versioningMode) { // Arrange @@ -34,7 +34,7 @@ public void When_getting_configurations_of_a_branch_without_versioning_mode_Give } [Theory] - public void When_getting_configurations_of_a_branch_with_versioning_mode_Given_fallback_configuaration_without_versioning_mode_Then_result_should_have_versioning_mode( + public void When_getting_configurations_of_a_branch_with_versioning_mode_Given_fallback_configuration_without_versioning_mode_Then_result_should_have_versioning_mode( DeploymentMode versioningMode) { // Arrange @@ -60,7 +60,7 @@ public void When_getting_configurations_of_a_branch_with_versioning_mode_Given_f } [Theory] - public void When_getting_configurations_of_a_branch_with_versioning_mode_Given_parent_configuaration_with_versioning_mode_Then_result_should_not_have_versioning_mode_of_parent( + public void When_getting_configurations_of_a_branch_with_versioning_mode_Given_parent_configuration_with_versioning_mode_Then_result_should_not_have_versioning_mode_of_parent( DeploymentMode versioningMode) { // Arrange @@ -257,7 +257,7 @@ public void When_getting_configurations_of_an_unknown_branch_Given_fallback_and_ [TestCase(IncrementStrategy.Patch)] [TestCase(IncrementStrategy.Minor)] [TestCase(IncrementStrategy.Major)] - public void When_getting_configurations_of_an_unknown_branch_Given_fallback_configuaration_with_increment_and_unknown_configuration_with_increment_inherit_Then_result_should_have_fallback_increment( + public void When_getting_configurations_of_an_unknown_branch_Given_fallback_configuration_with_increment_and_unknown_configuration_with_increment_inherit_Then_result_should_have_fallback_increment( IncrementStrategy fallbackIncrement) { // Arrange @@ -281,7 +281,7 @@ public void When_getting_configurations_of_an_unknown_branch_Given_fallback_conf } [Theory] - public void When_getting_configurations_of_an_unknown_branch_Given_fallback_configuaration_with_increment_and_develop_branch_with_increment_Then_result_should_have_develop_increment( + public void When_getting_configurations_of_an_unknown_branch_Given_fallback_configuration_with_increment_and_develop_branch_with_increment_Then_result_should_have_develop_increment( IncrementStrategy fallbackIncrement, IncrementStrategy developIncrement) { // Arrange @@ -309,19 +309,12 @@ public void When_getting_configurations_of_an_unknown_branch_Given_fallback_conf actual.ShouldHaveSingleItem(); actual[0].Branch.ShouldBe(developBranchMock); - if (developIncrement == IncrementStrategy.Inherit) - { - actual[0].Value.Increment.ShouldBe(fallbackIncrement); - } - else - { - actual[0].Value.Increment.ShouldBe(developIncrement); - } + actual[0].Value.Increment.ShouldBe(developIncrement == IncrementStrategy.Inherit ? fallbackIncrement : developIncrement); } } [Theory] - public void When_getting_configurations_of_an_unknown_branch_Given_fallback_configuaration_with_increment_and_develop_branch_with_increment_inherit_Then_result_should_have_fallback_increment( + public void When_getting_configurations_of_an_unknown_branch_Given_fallback_configuration_with_increment_and_develop_branch_with_increment_inherit_Then_result_should_have_fallback_increment( IncrementStrategy fallbackIncrement) { // Arrange @@ -356,7 +349,7 @@ public void When_getting_configurations_of_an_unknown_branch_Given_fallback_conf [TestCase(IncrementStrategy.Patch)] [TestCase(IncrementStrategy.Minor)] [TestCase(IncrementStrategy.Major)] - public void When_getting_configurations_of_an_unknown_branch_Given_fallback_and_unknown_configuaration_with_increment_inherit_and_develop_branch_with_increment_Then_result_should_have_develop_branch_increment( + public void When_getting_configurations_of_an_unknown_branch_Given_fallback_and_unknown_configuration_with_increment_inherit_and_develop_branch_with_increment_Then_result_should_have_develop_branch_increment( IncrementStrategy developBranchIncrement) { // Arrange diff --git a/src/GitVersion.Core.Tests/VersionCalculation/MinDateVersionFilterTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/MinDateVersionFilterTests.cs index 317a0af8a2..bd5438ecc7 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/MinDateVersionFilterTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/MinDateVersionFilterTests.cs @@ -42,7 +42,7 @@ public void WhenShaMismatchShouldNotExclude() [Test] public void ExcludeShouldAcceptVersionWithNullCommit() { - BaseVersion version = new("dummy", new SemanticVersion(1), null); + BaseVersion version = new("dummy", new SemanticVersion(1)); var futureDate = DateTimeOffset.UtcNow.AddYears(1); var sut = new MinDateVersionFilter(futureDate); diff --git a/src/GitVersion.Core.Tests/VersionCalculation/VariableProviderTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/VariableProviderTests.cs index 76e33af068..fecaa15065 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/VariableProviderTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/VariableProviderTests.cs @@ -282,6 +282,6 @@ public void ProvidesVariablesInContinuousDeploymentModeForMainBranchWithEmptyLab int preReleaseWeight = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName("main")).PreReleaseWeight; var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, preReleaseWeight); - variables.ToJson().ShouldMatchApproved(_ => _.SubFolder("Approved")); + variables.ToJson().ShouldMatchApproved(x => x.SubFolder("Approved")); } } diff --git a/src/GitVersion.Core/Configuration/ReferenceNameExtensions.cs b/src/GitVersion.Core/Configuration/ReferenceNameExtensions.cs index 6930689188..dd05cab0f2 100644 --- a/src/GitVersion.Core/Configuration/ReferenceNameExtensions.cs +++ b/src/GitVersion.Core/Configuration/ReferenceNameExtensions.cs @@ -1,4 +1,3 @@ -using System.Diagnostics.CodeAnalysis; using GitVersion.Git; namespace GitVersion.Configuration; @@ -6,10 +5,10 @@ namespace GitVersion.Configuration; public static class ReferenceNameExtensions { public static bool TryGetSemanticVersion( - this ReferenceName source, [NotNullWhen(true)] out (SemanticVersion Value, string? Name) result, IGitVersionConfiguration configuration) + this ReferenceName source, out (SemanticVersion Value, string? Name) result, IGitVersionConfiguration configuration) => source.TryGetSemanticVersion(out result, configuration.VersionInBranchRegex, configuration.TagPrefix, configuration.SemanticVersionFormat); public static bool TryGetSemanticVersion( - this ReferenceName source, [NotNullWhen(true)] out (SemanticVersion Value, string? Name) result, EffectiveConfiguration configuration) + this ReferenceName source, out (SemanticVersion Value, string? Name) result, EffectiveConfiguration configuration) => source.TryGetSemanticVersion(out result, configuration.VersionInBranchRegex, configuration.TagPrefix, configuration.SemanticVersionFormat); } diff --git a/src/GitVersion.Core/Core/BranchRepository.cs b/src/GitVersion.Core/Core/BranchRepository.cs index 3a3832e5ff..731e12fe23 100644 --- a/src/GitVersion.Core/Core/BranchRepository.cs +++ b/src/GitVersion.Core/Core/BranchRepository.cs @@ -9,10 +9,10 @@ internal sealed class BranchRepository(IGitRepository gitRepository) : IBranchRe private readonly IGitRepository gitRepository = gitRepository.NotNull(); public IEnumerable GetMainBranches(IGitVersionConfiguration configuration, params IBranch[] excludeBranches) - => GetBranches(configuration, [.. excludeBranches], configuration => configuration.IsMainBranch == true); + => GetBranches(configuration, [.. excludeBranches], branchConfiguration => branchConfiguration.IsMainBranch == true); public IEnumerable GetReleaseBranches(IGitVersionConfiguration configuration, params IBranch[] excludeBranches) - => GetBranches(configuration, [.. excludeBranches], configuration => configuration.IsReleaseBranch == true); + => GetBranches(configuration, [.. excludeBranches], branchConfiguration => branchConfiguration.IsReleaseBranch == true); private IEnumerable GetBranches( IGitVersionConfiguration configuration, HashSet excludeBranches, Func predicate) diff --git a/src/GitVersion.Core/Core/MergeBaseFinder.cs b/src/GitVersion.Core/Core/MergeBaseFinder.cs index 36f0ca1329..28ad16fc9a 100644 --- a/src/GitVersion.Core/Core/MergeBaseFinder.cs +++ b/src/GitVersion.Core/Core/MergeBaseFinder.cs @@ -77,7 +77,7 @@ internal class MergeBaseFinder(IRepositoryStore repositoryStore, IGitRepository continue; // TODO Fix the logging up in this section - var second = forwardMerge.Parents.First(); + var second = forwardMerge.Parents[0]; this.log.Debug($"Second {second}"); var mergeBase = this.repositoryStore.FindMergeBase(commit, second); if (mergeBase == null) diff --git a/src/GitVersion.Core/Core/RepositoryStore.cs b/src/GitVersion.Core/Core/RepositoryStore.cs index e5ddb584a5..6aa023bdfa 100644 --- a/src/GitVersion.Core/Core/RepositoryStore.cs +++ b/src/GitVersion.Core/Core/RepositoryStore.cs @@ -72,7 +72,7 @@ public IBranch GetTargetBranch(string? targetBranchName) return desiredBranch; // There are some edge cases where HEAD is not pointing to the desired branch. - // Therefore it's important to verify if 'currentBranch' is indeed the desired branch. + // Therefore, it's important to verify if 'currentBranch' is indeed the desired branch. var targetBranch = FindBranch(targetBranchName); // CanonicalName can be "refs/heads/develop", so we need to check for "/{TargetBranch}" as well @@ -132,11 +132,11 @@ public IEnumerable GetSourceBranches( { if (ignore.Contains(item)) continue; - foreach (var commitBranche in commitBranches) + foreach (var commitBranch in commitBranches) { - if (item.Commit.Equals(commitBranche.Commit)) break; + if (item.Commit.Equals(commitBranch.Commit)) break; - foreach (var commit in commitBranche.Branch.Commits.Where(element => element.When >= item.Commit.When)) + foreach (var commit in commitBranch.Branch.Commits.Where(element => element.When >= item.Commit.When)) { if (commit.Equals(item.Commit)) { diff --git a/src/GitVersion.Core/Core/SourceBranchFinder.cs b/src/GitVersion.Core/Core/SourceBranchFinder.cs index 98dc0491c0..21dad72d68 100644 --- a/src/GitVersion.Core/Core/SourceBranchFinder.cs +++ b/src/GitVersion.Core/Core/SourceBranchFinder.cs @@ -16,20 +16,13 @@ public IEnumerable FindSourceBranchesOf(IBranch branch) return this.excludedBranches.Where(predicate.IsSourceBranch); } - private class SourceBranchPredicate + private class SourceBranchPredicate(IBranch branch, IGitVersionConfiguration configuration) { - private readonly IBranch branch; - private readonly IEnumerable sourceBranchRegexes; - - public SourceBranchPredicate(IBranch branch, IGitVersionConfiguration configuration) - { - this.branch = branch; - this.sourceBranchRegexes = GetSourceBranchRegexes(branch, configuration); - } + private readonly IEnumerable sourceBranchRegexes = GetSourceBranchRegexes(branch, configuration); public bool IsSourceBranch(INamedReference sourceBranchCandidate) { - if (Equals(sourceBranchCandidate, this.branch)) + if (Equals(sourceBranchCandidate, branch)) return false; var branchName = sourceBranchCandidate.Name.WithoutOrigin; diff --git a/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs b/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs index 953f3a91b5..78ec16c8ce 100644 --- a/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs +++ b/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs @@ -24,10 +24,27 @@ public ILookup GetTaggedSemanticVersionsOfBranc branch.NotNull(); tagPrefix ??= string.Empty; + bool isCached = true; + var result = taggedSemanticVersionsOfBranchCache.GetOrAdd(new(branch, tagPrefix, format), _ => + { + isCached = false; + return GetElements().Distinct().OrderByDescending(element => element.Tag.Commit.When).ToList(); + }); + + if (isCached) + { + this.log.Debug( + $"Returning cached tagged semantic versions on branch '{branch.Name.Canonical}'. " + + $"TagPrefix: {tagPrefix} and Format: {format}" + ); + } + + return result.ToLookup(element => element.Tag.Commit, element => element); + IEnumerable GetElements() { using (this.log.IndentLog($"Getting tagged semantic versions on branch '{branch.Name.Canonical}'. " + - $"TagPrefix: {tagPrefix} and Format: {format}")) + $"TagPrefix: {tagPrefix} and Format: {format}")) { var semanticVersions = GetTaggedSemanticVersions(tagPrefix, format, ignore); @@ -40,39 +57,39 @@ IEnumerable GetElements() } } } + } + + public ILookup GetTaggedSemanticVersionsOfMergeTarget( + IBranch branch, string? tagPrefix, SemanticVersionFormat format, IIgnoreConfiguration ignore) + { + branch.NotNull(); + tagPrefix ??= string.Empty; bool isCached = true; - var result = taggedSemanticVersionsOfBranchCache.GetOrAdd(new(branch, tagPrefix, format), _ => + var result = taggedSemanticVersionsOfMergeTargetCache.GetOrAdd(new(branch, tagPrefix, format), _ => { isCached = false; - return GetElements().Distinct().OrderByDescending(element => element.Tag.Commit.When).ToList(); + return GetElements().Distinct().OrderByDescending(element => element.Key.When).ToList(); }); if (isCached) { this.log.Debug( - $"Returning cached tagged semantic versions on branch '{branch.Name.Canonical}'. " + + $"Returning cached tagged semantic versions by track merge target '{branch.Name.Canonical}'. " + $"TagPrefix: {tagPrefix} and Format: {format}" ); } - return result.ToLookup(element => element.Tag.Commit, element => element); - } - - public ILookup GetTaggedSemanticVersionsOfMergeTarget( - IBranch branch, string? tagPrefix, SemanticVersionFormat format, IIgnoreConfiguration ignore) - { - branch.NotNull(); - tagPrefix ??= string.Empty; + return result.ToLookup(element => element.Key, element => element.Value); IEnumerable<(ICommit Key, SemanticVersionWithTag Value)> GetElements() { using (this.log.IndentLog($"Getting tagged semantic versions by track merge target '{branch.Name.Canonical}'. " + - $"TagPrefix: {tagPrefix} and Format: {format}")) + $"TagPrefix: {tagPrefix} and Format: {format}")) { var shaHashSet = new HashSet(ignore.Filter(branch.Commits).Select(element => element.Id.Sha)); - foreach (var semanticVersion in GetTaggedSemanticVersions(tagPrefix, format, ignore).SelectMany(_ => _)) + foreach (var semanticVersion in GetTaggedSemanticVersions(tagPrefix, format, ignore).SelectMany(v => v)) { foreach (var commit in semanticVersion.Tag.Commit.Parents.Where(element => shaHashSet.Contains(element.Id.Sha))) { @@ -81,35 +98,32 @@ public ILookup GetTaggedSemanticVersionsOfMerge } } } + } + + public ILookup GetTaggedSemanticVersions( + string? tagPrefix, SemanticVersionFormat format, IIgnoreConfiguration ignore) + { + tagPrefix ??= string.Empty; bool isCached = true; - var result = taggedSemanticVersionsOfMergeTargetCache.GetOrAdd(new(branch, tagPrefix, format), _ => + var result = taggedSemanticVersionsCache.GetOrAdd(new(tagPrefix, format), _ => { isCached = false; - return GetElements().Distinct().OrderByDescending(element => element.Key.When).ToList(); + return GetElements().OrderByDescending(element => element.Tag.Commit.When).ToList(); }); if (isCached) { - this.log.Debug( - $"Returning cached tagged semantic versions by track merge target '{branch.Name.Canonical}'. " + - $"TagPrefix: {tagPrefix} and Format: {format}" - ); + this.log.Debug($"Returning cached tagged semantic versions. TagPrefix: {tagPrefix} and Format: {format}"); } - return result.ToLookup(element => element.Key, element => element.Value); - } - - public ILookup GetTaggedSemanticVersions( - string? tagPrefix, SemanticVersionFormat format, IIgnoreConfiguration ignore) - { - tagPrefix ??= string.Empty; + return result.ToLookup(element => element.Tag.Commit, element => element); IEnumerable GetElements() { this.log.Info($"Getting tagged semantic versions. TagPrefix: {tagPrefix} and Format: {format}"); - foreach (var tag in ignore.Filter(gitRepository.Tags)) + foreach (var tag in ignore.Filter(this.gitRepository.Tags)) { if (SemanticVersion.TryParse(tag.Name.Friendly, tagPrefix, out var semanticVersion, format)) { @@ -117,19 +131,5 @@ IEnumerable GetElements() } } } - - bool isCached = true; - var result = taggedSemanticVersionsCache.GetOrAdd(new(tagPrefix, format), _ => - { - isCached = false; - return GetElements().OrderByDescending(element => element.Tag.Commit.When).ToList(); - }); - - if (isCached) - { - this.log.Debug($"Returning cached tagged semantic versions. TagPrefix: {tagPrefix} and Format: {format}"); - } - - return result.ToLookup(element => element.Tag.Commit, element => element); } } diff --git a/src/GitVersion.Core/Git/CommitFilter.cs b/src/GitVersion.Core/Git/CommitFilter.cs index f8c05c5261..074f7d67d4 100644 --- a/src/GitVersion.Core/Git/CommitFilter.cs +++ b/src/GitVersion.Core/Git/CommitFilter.cs @@ -2,10 +2,10 @@ namespace GitVersion.Git; public record CommitFilter { - public bool FirstParentOnly { get; set; } - public object? IncludeReachableFrom { get; set; } - public object? ExcludeReachableFrom { get; set; } - public CommitSortStrategies SortBy { get; set; } + public bool FirstParentOnly { get; init; } + public object? IncludeReachableFrom { get; init; } + public object? ExcludeReachableFrom { get; init; } + public CommitSortStrategies SortBy { get; init; } } [Flags] diff --git a/src/GitVersion.Core/Git/ReferenceName.cs b/src/GitVersion.Core/Git/ReferenceName.cs index 4ab5a6ce52..bb86f2d09e 100644 --- a/src/GitVersion.Core/Git/ReferenceName.cs +++ b/src/GitVersion.Core/Git/ReferenceName.cs @@ -12,8 +12,8 @@ public class ReferenceName : IEquatable, IComparable !(left == right); - public bool TryGetSemanticVersion([NotNullWhen(true)] out (SemanticVersion Value, string? Name) result, + public bool TryGetSemanticVersion(out (SemanticVersion Value, string? Name) result, Regex versionPatternRegex, string? tagPrefix, SemanticVersionFormat format) diff --git a/src/GitVersion.Core/Helpers/ProcessHelper.cs b/src/GitVersion.Core/Helpers/ProcessHelper.cs index d36af47961..7706fe1324 100644 --- a/src/GitVersion.Core/Helpers/ProcessHelper.cs +++ b/src/GitVersion.Core/Helpers/ProcessHelper.cs @@ -141,8 +141,7 @@ public static int Run(Action output, Action errorOutput, TextRea }; process.BeginErrorReadLine(); - string? line; - while ((line = input?.ReadLine()) != null) + while (input?.ReadLine() is { } line) process.StandardInput.WriteLine(line); process.StandardInput.Close(); diff --git a/src/GitVersion.Core/Logging/LogExtensions.cs b/src/GitVersion.Core/Logging/LogExtensions.cs index d88a5ef5c6..77dff958a6 100644 --- a/src/GitVersion.Core/Logging/LogExtensions.cs +++ b/src/GitVersion.Core/Logging/LogExtensions.cs @@ -44,7 +44,7 @@ public static class LogExtensions public static void Error(this ILog log, Verbosity verbosity, LogAction logAction) => log.Write(verbosity, LogLevel.Error, logAction); - public static void Write(this ILog log, LogLevel level, string format, params object[] args) + private static void Write(this ILog log, LogLevel level, string format, params object[] args) { var verbosity = GetVerbosityForLevel(level); if (verbosity > log.Verbosity) @@ -105,7 +105,7 @@ private static IDisposable WithVerbosity(this ILog log, Verbosity verbosity) return Disposable.Create(() => log.Verbosity = lastVerbosity); } - public static Verbosity GetVerbosityForLevel(LogLevel level) => VerbosityMaps[level]; + private static Verbosity GetVerbosityForLevel(LogLevel level) => VerbosityMaps[level]; private static readonly IDictionary VerbosityMaps = new Dictionary { diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 1b72e90e01..b20f471231 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -1,8 +1,6 @@ #nullable enable const GitVersion.Git.ReferenceName.LocalBranchPrefix = "refs/heads/" -> string! -const GitVersion.Git.ReferenceName.OriginPrefix = "origin/" -> string! const GitVersion.Git.ReferenceName.RemoteTrackingBranchPrefix = "refs/remotes/" -> string! -const GitVersion.Git.ReferenceName.TagPrefix = "refs/tags/" -> string! GitVersion.Agents.IBuildAgent GitVersion.Agents.IBuildAgent.CanApplyToCurrentContext() -> bool GitVersion.Agents.IBuildAgent.GetCurrentBranch(bool usingDynamicRepos) -> string? @@ -184,13 +182,13 @@ GitVersion.Git.BranchCommit.Equals(GitVersion.Git.BranchCommit? other) -> bool GitVersion.Git.CommitExtensions GitVersion.Git.CommitFilter GitVersion.Git.CommitFilter.ExcludeReachableFrom.get -> object? -GitVersion.Git.CommitFilter.ExcludeReachableFrom.set -> void +GitVersion.Git.CommitFilter.ExcludeReachableFrom.init -> void GitVersion.Git.CommitFilter.FirstParentOnly.get -> bool -GitVersion.Git.CommitFilter.FirstParentOnly.set -> void +GitVersion.Git.CommitFilter.FirstParentOnly.init -> void GitVersion.Git.CommitFilter.IncludeReachableFrom.get -> object? -GitVersion.Git.CommitFilter.IncludeReachableFrom.set -> void +GitVersion.Git.CommitFilter.IncludeReachableFrom.init -> void GitVersion.Git.CommitFilter.SortBy.get -> GitVersion.Git.CommitSortStrategies -GitVersion.Git.CommitFilter.SortBy.set -> void +GitVersion.Git.CommitFilter.SortBy.init -> void GitVersion.Git.CommitSortStrategies GitVersion.Git.CommitSortStrategies.None = 0 -> GitVersion.Git.CommitSortStrategies GitVersion.Git.CommitSortStrategies.Reverse = 4 -> GitVersion.Git.CommitSortStrategies @@ -787,7 +785,6 @@ static GitVersion.Logging.LogExtensions.Error(this GitVersion.Logging.ILog! log, static GitVersion.Logging.LogExtensions.Error(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogAction! logAction) -> void static GitVersion.Logging.LogExtensions.Error(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, string! format, params object![]! args) -> void static GitVersion.Logging.LogExtensions.Error(this GitVersion.Logging.ILog! log, string! format, params object![]! args) -> void -static GitVersion.Logging.LogExtensions.GetVerbosityForLevel(GitVersion.Logging.LogLevel level) -> GitVersion.Logging.Verbosity static GitVersion.Logging.LogExtensions.Info(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogAction! logAction) -> void static GitVersion.Logging.LogExtensions.Info(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogAction! logAction) -> void static GitVersion.Logging.LogExtensions.Info(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, string! format, params object![]! args) -> void @@ -804,7 +801,6 @@ static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! lo static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogAction! logAction) -> void static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, string! format, params object![]! args) -> void static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! log, string! format, params object![]! args) -> void -static GitVersion.Logging.LogExtensions.Write(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogLevel level, string! format, params object![]! args) -> void static GitVersion.MergeMessage.TryParse(GitVersion.Git.ICommit! mergeCommit, GitVersion.Configuration.IGitVersionConfiguration! configuration, out GitVersion.MergeMessage? mergeMessage) -> bool static GitVersion.SemanticVersion.Parse(string! version, string? tagPrefixRegex, GitVersion.SemanticVersionFormat versionFormat = GitVersion.SemanticVersionFormat.Strict) -> GitVersion.SemanticVersion! static GitVersion.SemanticVersion.operator !=(GitVersion.SemanticVersion? v1, GitVersion.SemanticVersion? v2) -> bool diff --git a/src/GitVersion.Core/SemVer/SemanticVersionPreReleaseTag.cs b/src/GitVersion.Core/SemVer/SemanticVersionPreReleaseTag.cs index dff27ee621..cd26afde4e 100644 --- a/src/GitVersion.Core/SemVer/SemanticVersionPreReleaseTag.cs +++ b/src/GitVersion.Core/SemVer/SemanticVersionPreReleaseTag.cs @@ -85,7 +85,7 @@ public static SemanticVersionPreReleaseTag Parse(string? preReleaseTag) var value = match.Groups["name"].Value; var number = match.Groups["number"].Success ? long.Parse(match.Groups["number"].Value) : (long?)null; return value.EndsWith('-') - ? new(preReleaseTag, null, true) + ? new SemanticVersionPreReleaseTag(preReleaseTag, null, true) : new SemanticVersionPreReleaseTag(value, number, true); } diff --git a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs index c48e070785..2a02f7bd6c 100644 --- a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs @@ -122,7 +122,7 @@ private IReadOnlyCollection GetCommitHistory(string? tagPrefix, Semanti .ToHashSet() ); - var intermediateCommits = GetIntermediateCommits(baseVersionSource, currentCommit, ignore); + var intermediateCommits = GetIntermediateCommits(baseVersionSource, currentCommit, ignore).ToArray(); var commitLog = intermediateCommits.ToDictionary(element => element.Id.Sha); foreach (var intermediateCommit in intermediateCommits.Reverse()) diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/MainlineCommit.cs b/src/GitVersion.Core/VersionCalculation/Mainline/MainlineCommit.cs index 2148aa7cdc..02d9d7b64e 100644 --- a/src/GitVersion.Core/VersionCalculation/Mainline/MainlineCommit.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/MainlineCommit.cs @@ -48,7 +48,7 @@ public bool IsPredecessorTheLastCommitOnTrunk(IGitVersionConfiguration configura public MainlineCommit? ParentCommit => Iteration.ParentCommit; [MemberNotNullWhen(true, nameof(ParentIteration), nameof(ParentCommit))] - public bool HasParentIteration => Iteration.ParentIteration is not null && Iteration.ParentCommit is not null; + private bool HasParentIteration => Iteration.ParentIteration is not null && Iteration.ParentCommit is not null; public IReadOnlyCollection SemanticVersions => semanticVersions; @@ -62,7 +62,7 @@ public EffectiveConfiguration GetEffectiveConfiguration(IGitVersionConfiguration IBranchConfiguration branchConfiguration = Configuration; - IBranchConfiguration? last = Configuration; + IBranchConfiguration last = Configuration; for (var i = this; i is not null; i = i.Predecessor) { if (branchConfiguration.Increment != IncrementStrategy.Inherit) break; @@ -104,11 +104,11 @@ public void AddSemanticVersions(IEnumerable values) public void AddChildIteration(MainlineIteration iteration) => ChildIteration = iteration.NotNull(); public MainlineCommit Append( - ICommit? value, ReferenceName branchName, IBranchConfiguration configuration) + ICommit? referenceValue, ReferenceName branchName, IBranchConfiguration configuration) { if (HasPredecessor) throw new InvalidOperationException(); - MainlineCommit commit = new(Iteration, value, branchName, configuration); + MainlineCommit commit = new(Iteration, referenceValue, branchName, configuration); Predecessor = commit; commit.Successor = this; diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/MainlineIteration.cs b/src/GitVersion.Core/VersionCalculation/Mainline/MainlineIteration.cs index b86db33b44..3f37deeaeb 100644 --- a/src/GitVersion.Core/VersionCalculation/Mainline/MainlineIteration.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/MainlineIteration.cs @@ -25,7 +25,7 @@ public EffectiveConfiguration GetEffectiveConfiguration(IGitVersionConfiguration IBranchConfiguration branchConfiguration = Configuration; - if (branchConfiguration.Increment == IncrementStrategy.Inherit && Commits.FirstOrDefault() is MainlineCommit commit) + if (branchConfiguration.Increment == IncrementStrategy.Inherit && Commits.FirstOrDefault() is { } commit) { var parentConfiguration = commit.GetEffectiveConfiguration(configuration); branchConfiguration = branchConfiguration.Inherit(parentConfiguration); @@ -65,13 +65,9 @@ public MainlineIteration(string id, ReferenceName branchName, IBranchConfigurati public MainlineCommit CreateCommit( ICommit? value, ReferenceName branchName, IBranchConfiguration configuration) { - MainlineCommit commit; - if (commits.Count != 0) - commit = commits.Peek().Append(value, branchName, configuration); - else - { - commit = new MainlineCommit(this, value, branchName, configuration); - } + var commit = this.commits.Count != 0 + ? this.commits.Peek().Append(value, branchName, configuration) + : new MainlineCommit(this, value, branchName, configuration); commits.Push(commit); if (value is not null) diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs index 74c4b3a356..2c14c3ba54 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs @@ -44,8 +44,7 @@ public virtual SemanticVersion FindVersion() ); var taggedSemanticVersionsOfCurrentCommit = allTaggedSemanticVersions[Context.CurrentCommit].ToList(); - SemanticVersion? value; - if (TryGetSemanticVersion(effectiveConfiguration, taggedSemanticVersionsOfCurrentCommit, out value)) + if (TryGetSemanticVersion(effectiveConfiguration, taggedSemanticVersionsOfCurrentCommit, out var value)) { return value; } @@ -65,8 +64,7 @@ public virtual SemanticVersion FindVersion() ); var taggedSemanticVersionsOfCurrentCommit = allTaggedSemanticVersions[Context.CurrentCommit].ToList(); - SemanticVersion? value; - if (TryGetSemanticVersion(nextVersion.Configuration, taggedSemanticVersionsOfCurrentCommit, out value)) + if (TryGetSemanticVersion(nextVersion.Configuration, taggedSemanticVersionsOfCurrentCommit, out var value)) { return value; } @@ -122,7 +120,7 @@ private bool TryGetSemanticVersion( branch: Context.CurrentBranch.Name.Friendly, commitSha: Context.CurrentCommit.Sha, commitShortSha: Context.CurrentCommit.Id.ToString(7), - commitDate: Context.CurrentCommit?.When, + commitDate: Context.CurrentCommit.When, numberOfUnCommittedChanges: Context.NumberOfUncommittedChanges ); @@ -248,16 +246,16 @@ IEnumerable GetNextVersionsInternal() { this.log.Info($"Calculating base versions for '{effectiveBranchConfiguration.Branch.Name}'"); - var versionStrategies = this.versionStrategies.ToList(); - var fallbackVersionStrategy = versionStrategies.FirstOrDefault(element => element is FallbackVersionStrategy); + var strategies = this.versionStrategies.ToList(); + var fallbackVersionStrategy = strategies.Find(element => element is FallbackVersionStrategy); if (fallbackVersionStrategy is not null) { - versionStrategies.Remove(fallbackVersionStrategy); - versionStrategies.Add(fallbackVersionStrategy); + strategies.Remove(fallbackVersionStrategy); + strategies.Add(fallbackVersionStrategy); } var atLeastOneBaseVersionReturned = false; - foreach (var versionStrategy in versionStrategies) + foreach (var versionStrategy in strategies) { if (atLeastOneBaseVersionReturned && versionStrategy is FallbackVersionStrategy) continue; diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs index ed9b94c57c..16aec5ce62 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs @@ -53,12 +53,7 @@ public override string ToString() if (ShouldIncrement) { stringBuilder.Append($"{Source}: "); - if (Operator.ForceIncrement) - stringBuilder.Append("Force version increment "); - else - { - stringBuilder.Append("Version increment "); - } + stringBuilder.Append(Operator.ForceIncrement ? "Force version increment " : "Version increment "); if (SemanticVersion is not null) stringBuilder.Append($"'{SemanticVersion:f}' "); @@ -66,7 +61,9 @@ public override string ToString() stringBuilder.Append($"+semver '{Operator.Increment}'"); if (Operator.Label is null) + { stringBuilder.Append(" with no label"); + } else { stringBuilder.Append($" with label '{Operator.Label}'"); diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs index 20944f2084..0a46368ba5 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperand.cs @@ -14,8 +14,6 @@ public BaseVersionOperand() : this(string.Empty, SemanticVersion.Empty) public SemanticVersion SemanticVersion { get; init; } = SemanticVersion.NotNull(); - public ICommit? BaseVersionSource { get; init; } = BaseVersionSource; - public override string ToString() { StringBuilder stringBuilder = new(); diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperator.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperator.cs index 705c485c82..767dd7b83f 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersionOperator.cs @@ -2,7 +2,7 @@ namespace GitVersion.VersionCalculation; -public sealed record class BaseVersionOperator : IBaseVersionIncrement +public sealed record BaseVersionOperator : IBaseVersionIncrement { public string Source { get; init; } = string.Empty; diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs index 85f0dbab69..2dd181c896 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs @@ -149,9 +149,9 @@ private bool IterateOverCommitsRecursive( if (commitsWasBranchedFromLazy.Value.TryGetValue(item, out var effectiveConfigurationsWasBranchedFrom)) { - var effectiveConfigurationWasBranchedFrom = effectiveConfigurationsWasBranchedFrom.First(); + var effectiveConfigurationWasBranchedFrom = effectiveConfigurationsWasBranchedFrom[0]; - if (!(configuration.IsMainBranch == true) || effectiveConfigurationWasBranchedFrom.Value.IsMainBranch == true) + if (configuration.IsMainBranch != true || effectiveConfigurationWasBranchedFrom.Value.IsMainBranch == true) { var excludeBranch = branch; if (effectiveConfigurationsWasBranchedFrom.Any(element => @@ -167,7 +167,7 @@ private bool IterateOverCommitsRecursive( commitsWasBranchedFromLazy = new Lazy>> (() => branch is null ? new Dictionary>() - : GetCommitsWasBranchedFrom(branch, excludeBranch is null ? Array.Empty() : [excludeBranch]) + : GetCommitsWasBranchedFrom(branch, excludeBranch is null ? [] : [excludeBranch]) ); TaggedSemanticVersions taggedSemanticVersion = TaggedSemanticVersions.OfBranch; @@ -278,7 +278,7 @@ private bool IterateOverCommitsRecursive( private IReadOnlyDictionary> GetCommitsWasBranchedFrom( IBranch branch, params IBranch[] excludedBranches) { - Dictionary> result = new(); + Dictionary> result = []; var branchCommits = repositoryStore.FindCommitBranchesBranchedFrom( branch, Context.Configuration, excludedBranches: excludedBranches @@ -292,24 +292,24 @@ private bool IterateOverCommitsRecursive( var branchConfiguration = Context.Configuration.GetBranchConfiguration(item); var key = branchCommitDictionary[item]; - if (result.ContainsKey(key)) + if (result.TryGetValue(key, out var value)) { - if (branchConfiguration.Increment == IncrementStrategy.Inherit && branchConfiguration.IsMainBranch is null) + if (branchConfiguration is { Increment: IncrementStrategy.Inherit, IsMainBranch: null }) { throw new InvalidOperationException(); } if ((branchConfiguration.IsMainBranch ?? Context.Configuration.IsMainBranch) == true) { - foreach (var element in result[key].ToArray()) + foreach (var _ in value.ToArray()) { - result[key].Add(new(item, branchConfiguration)); + value.Add(new(item, branchConfiguration)); } } } else { - result.Add(key: key, value: [new(item, branchConfiguration)]); + result.Add(key: key, value: [new ValueTuple(item, branchConfiguration)]); } } @@ -335,20 +335,20 @@ internal static BaseVersion DetermineBaseVersionRecursive(MainlineIteration iter var incrementSteps = GetIncrements(iteration, targetLabel, incrementStrategyFinder, configuration).ToArray(); BaseVersion? result = null; - for (var i = 0; i < incrementSteps.Length; i++) + foreach (var baseVersionIncrement in incrementSteps) { - if (incrementSteps[i] is BaseVersionOperand baseVersionOperand) + switch (baseVersionIncrement) { - result = new BaseVersion(baseVersionOperand); - } - else if (incrementSteps[i] is BaseVersionOperator baseVersionOperator) - { - result ??= new BaseVersion(); - result = result.Apply(baseVersionOperator); - } - else if (incrementSteps[i] is BaseVersion baseVersion) - { - result = baseVersion; + case BaseVersionOperand baseVersionOperand: + result = new BaseVersion(baseVersionOperand); + break; + case BaseVersionOperator baseVersionOperator: + result ??= new BaseVersion(); + result = result.Apply(baseVersionOperator); + break; + case BaseVersion baseVersion: + result = baseVersion; + break; } } return result ?? throw new InvalidOperationException(); diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs index 547cba2277..7dfe751dc3 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs @@ -57,9 +57,9 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur label: label ); - yield return new BaseVersion($"Merge message '{commit.Message.Trim()}'", mergeMessage.Version, null) + yield return new BaseVersion($"Merge message '{commit.Message.Trim()}'", mergeMessage.Version) { - Operator = new BaseVersionOperator() + Operator = new() { Increment = increment, ForceIncrement = false, diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs index 3e51ae753b..c13012deb2 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs @@ -41,7 +41,7 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); - List alternativeSemanticVersionsWithTag = new(); + List alternativeSemanticVersionsWithTag = []; foreach (var semanticVersionWithTag in taggedSemanticVersions) { if (!semanticVersionWithTag.Value.IsMatchForBranchSpecificLabel(label)) diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs index dabbcb6bda..512b73c11e 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs @@ -47,7 +47,7 @@ public bool TryGetBaseVersion(EffectiveBranchConfiguration configuration, [NotNu var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, branchNameOverride); - baseVersion = new BaseVersion("Version in branch name", result.Value, null) + baseVersion = new BaseVersion("Version in branch name", result.Value) { Operator = new BaseVersionOperator() { diff --git a/src/GitVersion.LibGit2Sharp/Git/GitRepository.cs b/src/GitVersion.LibGit2Sharp/Git/GitRepository.cs index 6662992379..683a6571ee 100644 --- a/src/GitVersion.LibGit2Sharp/Git/GitRepository.cs +++ b/src/GitVersion.LibGit2Sharp/Git/GitRepository.cs @@ -67,7 +67,7 @@ private int GetNumberOfUncommittedChangesInternal() { // check if we have a branch tip at all to behave properly with empty repos // => return that we have actually un-committed changes because we are apparently - // running GitVersion on something which lives inside this brand new repo _/\Ö/\_ + // running GitVersion on something which lives inside this brand-new repo _/\Ö/\_ if (RepositoryInstance.Head?.Tip == null || RepositoryInstance.Diff == null) { // this is a somewhat cumbersome way of figuring out the number of changes in the repo diff --git a/src/GitVersion.LibGit2Sharp/Git/RepositoryExtensions.cs b/src/GitVersion.LibGit2Sharp/Git/RepositoryExtensions.cs index fc32d6e072..f98e993fa2 100644 --- a/src/GitVersion.LibGit2Sharp/Git/RepositoryExtensions.cs +++ b/src/GitVersion.LibGit2Sharp/Git/RepositoryExtensions.cs @@ -10,7 +10,7 @@ internal static void RunSafe(Action operation) } catch (LibGit2Sharp.LockedFileException ex) { - // Wrap this exception so that callers that want to catch it don't need to take a dependency on LibGit2Sharp. + // Wrap this exception so that callers that want to catch it doesn't need to take a dependency on LibGit2Sharp. throw new LockedFileException(ex); } } @@ -23,7 +23,7 @@ internal static T RunSafe(Func operation) } catch (LibGit2Sharp.LockedFileException ex) { - // Wrap this exception so that callers that want to catch it don't need to take a dependency on LibGit2Sharp. + // Wrap this exception so that callers that want to catch it doesn't need to take a dependency on LibGit2Sharp. throw new LockedFileException(ex); } } diff --git a/src/GitVersion.MsBuild.Tests/Helpers/EventArgsFormatting.cs b/src/GitVersion.MsBuild.Tests/Helpers/EventArgsFormatting.cs index d3c523626c..a0781dee3f 100644 --- a/src/GitVersion.MsBuild.Tests/Helpers/EventArgsFormatting.cs +++ b/src/GitVersion.MsBuild.Tests/Helpers/EventArgsFormatting.cs @@ -140,7 +140,7 @@ int threadId { var format = new StringBuilder(); - // Uncomment these lines to show show the processor, if present. + // Uncomment these lines to show the processor, if present. /* if (threadId != 0) { diff --git a/src/GitVersion.MsBuild.Tests/Mocks/MockEngine.cs b/src/GitVersion.MsBuild.Tests/Mocks/MockEngine.cs index d059b6a4f1..6e6a5671ed 100644 --- a/src/GitVersion.MsBuild.Tests/Mocks/MockEngine.cs +++ b/src/GitVersion.MsBuild.Tests/Mocks/MockEngine.cs @@ -70,7 +70,7 @@ public string Log /// /// Assert that the log file contains the given string. - /// Case insensitive. + /// Case-insensitive. /// /// internal void AssertLogContains(string contains) => Log.ShouldContain(contains); diff --git a/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs b/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs index 84e0180350..d116855c6f 100644 --- a/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs +++ b/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs @@ -16,20 +16,14 @@ public class FormatArgumentTests : TestBase [TestCase("{Major}.{Minor}.{Patch}.{PreReleaseTag}", "1.1.0.foo.1")] public void ShouldOutputFormatTests(string format, string expectedValue) { - using var fixture = CreateTestRepository(); + var fixture = CreateTestRepository(); var consoleBuilder = new StringBuilder(); IConsole consoleAdapter = new TestConsoleAdapter(consoleBuilder); var sp = ConfigureServices(services => { - var options = Options.Create(new GitVersionOptions - { - WorkingDirectory = fixture.RepositoryPath, - RepositoryInfo = { TargetBranch = fixture.Repository.Head.CanonicalName }, - Format = format, - Output = { OutputType.Json } - }); + var options = Options.Create(new GitVersionOptions { WorkingDirectory = fixture.RepositoryPath, RepositoryInfo = { TargetBranch = fixture.Repository.Head.CanonicalName }, Format = format, Output = { OutputType.Json } }); var repository = fixture.Repository.ToGitRepository(); services.AddSingleton(options); @@ -49,7 +43,7 @@ public void ShouldOutputFormatTests(string format, string expectedValue) [TestCase("{Major}.{Minor}.{Patch}.{env:CustomVar}", "1.1.0.foo")] public void ShouldOutputFormatWithEnvironmentVariablesTests(string format, string expectedValue) { - using var fixture = CreateTestRepository(); + var fixture = CreateTestRepository(); var consoleBuilder = new StringBuilder(); IConsole console = new TestConsoleAdapter(consoleBuilder); IEnvironment environment = new TestEnvironment(); @@ -57,13 +51,7 @@ public void ShouldOutputFormatWithEnvironmentVariablesTests(string format, strin var sp = ConfigureServices(services => { - var options = Options.Create(new GitVersionOptions - { - WorkingDirectory = fixture.RepositoryPath, - RepositoryInfo = { TargetBranch = fixture.Repository.Head.CanonicalName }, - Format = format, - Output = { OutputType.Json } - }); + var options = Options.Create(new GitVersionOptions { WorkingDirectory = fixture.RepositoryPath, RepositoryInfo = { TargetBranch = fixture.Repository.Head.CanonicalName }, Format = format, Output = { OutputType.Json } }); var repository = fixture.Repository.ToGitRepository(); services.AddSingleton(options); diff --git a/src/GitVersion.Testing/Fixtures/BaseGitFlowRepositoryFixture.cs b/src/GitVersion.Testing/Fixtures/BaseGitFlowRepositoryFixture.cs index d241e697e0..1d97d7a79b 100644 --- a/src/GitVersion.Testing/Fixtures/BaseGitFlowRepositoryFixture.cs +++ b/src/GitVersion.Testing/Fixtures/BaseGitFlowRepositoryFixture.cs @@ -9,7 +9,7 @@ namespace GitVersion.Testing; public class BaseGitFlowRepositoryFixture : EmptyRepositoryFixture { /// - /// Creates a repo with a develop branch off main which is a single commit ahead of main + /// Creates a repo with a develop branch off main which is a single commit ahead of main branch /// Main will be tagged with the initial version before branching develop /// public BaseGitFlowRepositoryFixture(string initialVersion, string branchName = "main") : diff --git a/src/GitVersion.Testing/Fixtures/RemoteRepositoryFixture.cs b/src/GitVersion.Testing/Fixtures/RemoteRepositoryFixture.cs index 57c3a53f3e..2312d47f62 100644 --- a/src/GitVersion.Testing/Fixtures/RemoteRepositoryFixture.cs +++ b/src/GitVersion.Testing/Fixtures/RemoteRepositoryFixture.cs @@ -20,7 +20,7 @@ public RemoteRepositoryFixture(string branchName = "main") /// /// Fixture pointing at the local repository /// - public LocalRepositoryFixture LocalRepositoryFixture { get; private set; } + public LocalRepositoryFixture LocalRepositoryFixture { get; } /// /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. From 4915aaf4bd97dd280dfdee0f4407d16922f2722d Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 22 May 2024 22:19:37 +0200 Subject: [PATCH 106/544] use `ManualDeployment` instead of `ContinuousDelivery` for GitVersion itself --- GitVersion.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/GitVersion.yml b/GitVersion.yml index 5724cb45f9..0061565a50 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -1,4 +1,5 @@ workflow: GitFlow/v1 +mode: ManualDeployment branches: main: label: beta From d9900f877011b99e9b578971289c7c2a4e0c7553 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 22 May 2024 22:27:17 +0200 Subject: [PATCH 107/544] use sdk 8.0.300 --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index bd10fad04b..20f980a181 100644 --- a/global.json +++ b/global.json @@ -5,6 +5,6 @@ "src" ], "sdk": { - "version": "8.0.203" + "version": "8.0.300" } } From 21a13fabf2231e2df0ceec51ba2055e2173eb6cd Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 22 May 2024 22:44:14 +0200 Subject: [PATCH 108/544] use dependabot directories --- .github/dependabot.yml | 38 ++++---------------------------- new-cli/Directory.Packages.props | 2 +- src/Directory.Packages.props | 2 +- 3 files changed, 6 insertions(+), 36 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 8759a0ab79..d30a25bc3f 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,38 +1,5 @@ version: 2 updates: -- package-ecosystem: nuget - labels: - - "dependencies" - commit-message: - prefix: "(ci deps)" - groups: - microsoft: - patterns: - - "Microsoft.*" - - "System.*" - directory: "/build" - schedule: - interval: daily - open-pull-requests-limit: 10 - -- package-ecosystem: nuget - labels: - - "dependencies" - commit-message: - prefix: "(new-cli deps)" - groups: - microsoft: - patterns: - - "Microsoft.*" - - "System.*" - serilog: - patterns: - - "Serilog.*" - directory: "/new-cli" - schedule: - interval: daily - open-pull-requests-limit: 10 - - package-ecosystem: nuget labels: - "dependencies" @@ -52,7 +19,10 @@ updates: nunit: patterns: - "NUnit.*" - directory: "/" + directories: + - "/build" + - "/new-cli" + - "/src" schedule: interval: daily open-pull-requests-limit: 10 diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 4079950b77..c87a7b71c2 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -11,7 +11,7 @@ - + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 9ee7a7c6e5..27f7f3b80a 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -11,7 +11,7 @@ - + From 5c1b788de9cce6c1fdeaff60368249345ef4954c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 May 2024 22:23:38 +0000 Subject: [PATCH 109/544] (deps): Bump the analyzers group across 1 directory with 3 updates Bumps the analyzers group with 3 updates in the /src directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator), [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator) and [NUnit.Analyzers](https://github.com/nunit/nunit.analyzers). Updates `Roslynator.Analyzers` from 4.12.2 to 4.12.3 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.2...v4.12.3) Updates `Roslynator.Formatting.Analyzers` from 4.12.2 to 4.12.3 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.2...v4.12.3) Updates `NUnit.Analyzers` from 4.1.0 to 4.2.0 - [Release notes](https://github.com/nunit/nunit.analyzers/releases) - [Changelog](https://github.com/nunit/nunit.analyzers/blob/master/CHANGES.md) - [Commits](https://github.com/nunit/nunit.analyzers/compare/4.1.0...4.2.0) --- updated-dependencies: - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: NUnit.Analyzers dependency-type: direct:production update-type: version-update:semver-minor dependency-group: analyzers ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Build.props | 11 +++++++++++ new-cli/Directory.Packages.props | 4 ++-- new-cli/GitVersion.Cli.Generator/Content.cs | 1 - .../Git/GitRepository.extended.cs | 5 +---- .../LockedFileException.cs | 12 ++++++++++++ src/Directory.Packages.props | 6 +++--- 6 files changed, 29 insertions(+), 10 deletions(-) diff --git a/new-cli/Directory.Build.props b/new-cli/Directory.Build.props index 518998d6b8..ea7d0c9db2 100644 --- a/new-cli/Directory.Build.props +++ b/new-cli/Directory.Build.props @@ -14,6 +14,17 @@ true + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index c87a7b71c2..4fa6197733 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -12,8 +12,8 @@ - - + + diff --git a/new-cli/GitVersion.Cli.Generator/Content.cs b/new-cli/GitVersion.Cli.Generator/Content.cs index 31bdc2ae73..f3a2484a68 100644 --- a/new-cli/GitVersion.Cli.Generator/Content.cs +++ b/new-cli/GitVersion.Cli.Generator/Content.cs @@ -15,7 +15,6 @@ public static class Content #nullable enable """; - /*language=cs*/ public const string CommandImplContent = $$$""" {{{GeneratedHeader}}} diff --git a/new-cli/GitVersion.Core.Libgit2Sharp/Git/GitRepository.extended.cs b/new-cli/GitVersion.Core.Libgit2Sharp/Git/GitRepository.extended.cs index d54427f263..c7286ff0fb 100644 --- a/new-cli/GitVersion.Core.Libgit2Sharp/Git/GitRepository.extended.cs +++ b/new-cli/GitVersion.Core.Libgit2Sharp/Git/GitRepository.extended.cs @@ -1,6 +1,3 @@ namespace GitVersion.Git; -internal sealed partial class GitRepository : IGitRepository -{ - -} +internal sealed partial class GitRepository : IGitRepository; diff --git a/new-cli/GitVersion.Core.Libgit2Sharp/LockedFileException.cs b/new-cli/GitVersion.Core.Libgit2Sharp/LockedFileException.cs index ac742982b0..3cef30a364 100644 --- a/new-cli/GitVersion.Core.Libgit2Sharp/LockedFileException.cs +++ b/new-cli/GitVersion.Core.Libgit2Sharp/LockedFileException.cs @@ -5,4 +5,16 @@ public class LockedFileException : Exception public LockedFileException(Exception inner) : base(inner.Message, inner) { } + + public LockedFileException() + { + } + + public LockedFileException(string? message) : base(message) + { + } + + public LockedFileException(string? message, Exception? innerException) : base(message, innerException) + { + } } diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 27f7f3b80a..acec33411c 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -12,8 +12,8 @@ - - + + @@ -30,7 +30,7 @@ - + From 21a8f5e9cc1f940c376096c33f86d4ab0f5f23b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 May 2024 22:24:07 +0000 Subject: [PATCH 110/544] (deps): Bump Polly from 8.3.1 to 8.4.0 in /new-cli and /src Bumps [Polly](https://github.com/App-vNext/Polly) from 8.3.1 to 8.4.0. - [Release notes](https://github.com/App-vNext/Polly/releases) - [Changelog](https://github.com/App-vNext/Polly/blob/main/CHANGELOG.md) - [Commits](https://github.com/App-vNext/Polly/compare/8.3.1...8.4.0) --- updated-dependencies: - dependency-name: Polly dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- src/Directory.Packages.props | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 4fa6197733..a5d3819823 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -11,7 +11,7 @@ - + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index acec33411c..b05f7f9067 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -11,7 +11,7 @@ - + From 3b60aed1cb34897d1c50b0f04d8fcd555a8327a6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 May 2024 22:26:11 +0000 Subject: [PATCH 111/544] (deps): Bump Buildalyzer from 6.0.4 to 7.0.1 in /src Bumps [Buildalyzer](https://github.com/phmonte/Buildalyzer) from 6.0.4 to 7.0.1. - [Release notes](https://github.com/phmonte/Buildalyzer/releases) - [Changelog](https://github.com/phmonte/Buildalyzer/blob/main/RELEASE.md) - [Commits](https://github.com/phmonte/Buildalyzer/compare/v6.0.4...7.0.1) --- updated-dependencies: - dependency-name: Buildalyzer dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 3 ++- src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj | 1 + src/GitVersion.MsBuild.Tests/Helpers/MsBuildExeFixture.cs | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index b05f7f9067..7d0d83aa4b 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -6,6 +6,7 @@ + @@ -15,7 +16,7 @@ - + diff --git a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj index 23f81dc266..5aeabac2af 100644 --- a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj +++ b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj @@ -6,6 +6,7 @@ + diff --git a/src/GitVersion.MsBuild.Tests/Helpers/MsBuildExeFixture.cs b/src/GitVersion.MsBuild.Tests/Helpers/MsBuildExeFixture.cs index ead5310c34..b05fe01433 100644 --- a/src/GitVersion.MsBuild.Tests/Helpers/MsBuildExeFixture.cs +++ b/src/GitVersion.MsBuild.Tests/Helpers/MsBuildExeFixture.cs @@ -46,7 +46,7 @@ public MsBuildExeFixtureResult Execute() { foreach (var (key, value) in this.environmentVariables) { - analyzer.SetEnvironmentVariable(key, value); + analyzer.SetEnvironmentVariable(key, value!); } } From 7d836b915cb6cdd0d042a55fac84e870ae0adbe9 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 23 May 2024 09:53:54 +0200 Subject: [PATCH 112/544] update BREAKING_CHANGES, set version 6.0.0 --- BREAKING_CHANGES.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/BREAKING_CHANGES.md b/BREAKING_CHANGES.md index 807a5698e0..66e1d4697b 100644 --- a/BREAKING_CHANGES.md +++ b/BREAKING_CHANGES.md @@ -1,4 +1,5 @@ -## Unreleased +## v6.0.0 + ### Platforms * Drop support for .NET Framework 4.8, .NET Core 3.1 and .NET 5.0. Changed the project targets to .NET 6.0 or later. From 0452c2e74f50ec6c68abafcd589690394a383153 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 23 May 2024 11:15:09 +0200 Subject: [PATCH 113/544] updated GitVersion.yml label configuration --- GitVersion.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GitVersion.yml b/GitVersion.yml index 0061565a50..7c62fc859e 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -2,6 +2,6 @@ workflow: GitFlow/v1 mode: ManualDeployment branches: main: - label: beta + label: rc support: label: beta From 97a2f911c3d619c80e257da43df611a0ca31f25a Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 23 May 2024 21:29:49 +0200 Subject: [PATCH 114/544] fix markdown files --- .markdownlint.json | 3 +- BREAKING_CHANGES.md | 141 +++++++++--------- CONTRIBUTING.md | 39 ++--- README.md | 20 +-- SECURITY.md | 14 +- build/nuspec/README.md | 20 ++- .../contribute-examples.md | 4 +- .../branching-strategies/gitflow/index.md | 78 +++++----- .../branching-strategies/githubflow/index.md | 20 +-- .../learn/branching-strategies/overview.md | 24 +-- docs/input/docs/learn/dynamic-repositories.md | 10 +- docs/input/docs/learn/how-it-works.md | 30 ++-- docs/input/docs/learn/intro-to-semver.md | 12 +- docs/input/docs/learn/who.md | 26 ++-- docs/input/docs/learn/why.md | 30 ++-- .../docs/reference/build-servers/appveyor.md | 8 +- .../reference/build-servers/azure-devops.md | 2 +- .../docs/reference/build-servers/bamboo.md | 6 +- .../docs/reference/build-servers/buildkite.md | 5 +- .../docs/reference/build-servers/continua.md | 52 +++---- .../reference/build-servers/github-actions.md | 2 +- .../docs/reference/build-servers/gitlab.md | 20 +-- .../docs/reference/build-servers/jenkins.md | 22 +-- .../docs/reference/build-servers/myget.md | 10 +- .../reference/build-servers/octopus-deploy.md | 24 +-- .../docs/reference/build-servers/teamcity.md | 20 +-- docs/input/docs/reference/configuration.md | 63 ++++---- .../reference/modes/continuous-delivery.md | 24 +-- docs/input/docs/reference/modes/mainline.md | 16 +- docs/input/docs/reference/requirements.md | 1 - .../docs/reference/version-increments.md | 4 +- docs/input/docs/reference/version-sources.md | 16 +- docs/input/docs/usage/cli/arguments.md | 36 ++--- docs/input/docs/usage/cli/assembly-patch.md | 12 +- docs/input/docs/usage/msbuild.md | 8 +- 35 files changed, 416 insertions(+), 406 deletions(-) diff --git a/.markdownlint.json b/.markdownlint.json index 7ab1720b67..08d535e1cb 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -1,3 +1,4 @@ { - "MD026": false + "MD026": false, + "MD041": false } diff --git a/BREAKING_CHANGES.md b/BREAKING_CHANGES.md index 66e1d4697b..9f0db2b22b 100644 --- a/BREAKING_CHANGES.md +++ b/BREAKING_CHANGES.md @@ -1,74 +1,81 @@ ## v6.0.0 ### Platforms -* Drop support for .NET Framework 4.8, .NET Core 3.1 and .NET 5.0. Changed the project targets to .NET 6.0 or later. + +* Drop support for .NET Framework 4.8, .NET Core 3.1 and .NET 5.0. Changed the project targets to .NET 6.0 or later. ### Caching -* Refactor caching system in GitVersion to use json files instead of yaml files. This change is not backwards compatible with the old caching system. + +* Refactor caching system in GitVersion to use json files instead of yaml files. This change is not backwards compatible with the old caching system. ### Configuration changes: -* The configuration properties `continuous-delivery-fallback-tag`, `tag-number-pattern`, and `tag` were renamed to `continuous-delivery-fallback-label`, `label-number-pattern`, and `label` respectively. `tag-pre-release-weight` and `tag-prefix` remained as they were as they are referring to a Git tag. -* When using a commit message that matches **both** `*-version-bump-message` and `no-bump-message`, there is no increment for that commit. In other words, `no-bump-message` now takes precedence over `*-version-bump-message`. -* The fallback version strategy now returns `0.0.0` and is flagged with `ShouldIncrement` equal to `true`. This yields the version `0.1.0` on the `develop` branch (`IncrementStrategy.Minor` by default) and `0.0.1` on the `main` branch (`IncremetnStrategy.Patch` by default). -* The current branch (child) inherits its configuration from the source (parent) branch if the `increment` strategy is set to `Inherit`. This makes branch configuration recursive, simpler, more intuitive, more flexible, and more robust. -* Instead of having a single effective configuration, we now have one effective configuration per branch where the increment strategy is not set to `inherit`. -* The new implementation of the branch configuration inheritance affects per default only the pull-requests, hotfix and feature branches. In this case the next version will be generated like the child branch is not existing and the commits have been made on the source branch. - * The following example illustrates this behavior. On the feature branch the semantic version `1.1.0-just-a-test.1+2` will now be generated instead of version `1.0.0-just-a-test.1+3` previously: - ``` + +* The configuration properties `continuous-delivery-fallback-tag`, `tag-number-pattern`, and `tag` were renamed to `continuous-delivery-fallback-label`, `label-number-pattern`, and `label` respectively. `tag-pre-release-weight` and `tag-prefix` remained as they were as they are referring to a Git tag. +* When using a commit message that matches **both** `*-version-bump-message` and `no-bump-message`, there is no increment for that commit. In other words, `no-bump-message` now takes precedence over `*-version-bump-message`. +* The fallback version strategy now returns `0.0.0` and is flagged with `ShouldIncrement` equal to `true`. This yields the version `0.1.0` on the `develop` branch (`IncrementStrategy.Minor` by default) and `0.0.1` on the `main` branch (`IncremetnStrategy.Patch` by default). +* The current branch (child) inherits its configuration from the source (parent) branch if the `increment` strategy is set to `Inherit`. This makes branch configuration recursive, simpler, more intuitive, more flexible, and more robust. +* Instead of having a single effective configuration, we now have one effective configuration per branch where the increment strategy is not set to `inherit`. +* The new implementation of the branch configuration inheritance affects per default only the pull-requests, hotfix and feature branches. In this case the next version will be generated like the child branch is not existing and the commits have been made on the source branch. + * The following example illustrates this behavior. On the feature branch the semantic version `1.1.0-just-a-test.1+2` will now be generated instead of version `1.0.0-just-a-test.1+3` previously: + + ``` log * 1f1cfb4 52 minutes ago (HEAD -> feature/just-a-test) * 1f9654d 54 minutes ago (release/1.1.0) * be72411 56 minutes ago (develop) * 14800ff 58 minutes ago (tag: 1.0.0, main) ``` -* A new `unknown` branch magic string has been introduced to give the user the possibility to specify the branch configuration for a branch which is not known. A branch is not known if only the regular expression of the branch configuration with the name `unknown` is matching. Please notice that this branch configuration behaves like any other branch configurations. -* Additional `fallback` branch configuration properties have been introduced at the root to define base properties which will be inherit to the branch configurations. That means if no other branch configuration in the inheritance line defines the given property the fallback property applies. Notice that the inheritance tree can be controlled using the increment strategy property in the branch configuration section. - * The following example illustrates this behavior. The hotfix branch configuration overrides the main branch configuration and the result overrides the fallback branch configuration. - ``` + +* A new `unknown` branch magic string has been introduced to give the user the possibility to specify the branch configuration for a branch which is not known. A branch is not known if only the regular expression of the branch configuration with the name `unknown` is matching. Please notice that this branch configuration behaves like any other branch configurations. +* Additional `fallback` branch configuration properties have been introduced at the root to define base properties which will be inherit to the branch configurations. That means if no other branch configuration in the inheritance line defines the given property the fallback property applies. Notice that the inheritance tree can be controlled using the increment strategy property in the branch configuration section. + * The following example illustrates this behavior. The hotfix branch configuration overrides the main branch configuration and the result overrides the fallback branch configuration. + + ``` log * 1f1cfb4 52 minutes ago (HEAD -> hotfix/just-a-test) * 14800ff 58 minutes ago (tag: 1.0.0, main) ``` -* When overriding the configuration with e.g. GitVersion.yaml the software distinguishes between properties who are not existent and properties who are `null`. This is especially important if the user wants to define branch related configuration which are marked with `increment` strategy `Inherit`. -* Following root configuration properties have been removed: - * continuous-delivery-fallback-tag -* A new branch related property with name `track-merge-message` has been introduced. Consider we have a `main` branch and a `release/1.0.0` branch and merge changes from `release/1.0.0` to the main branch. In this scenario the merge message will be interpreted as a next version `1.0.0` when `track-merge-message` is set to `true` otherwise `0.0.1`. -* The pre-release tags are only considered when they are matching with the label name of the branch. This has an effect on the way how the `CommitCountSource` will be determined. -* The process of increasing the version with bump message when `CommitMessageIncrementing` is enabled and increment strategy is `None` has been changed. -* A new configuration property with name `version-in-branch-pattern` has been introduced. This setting only applies on branches where the option `is-release-branch` is set to `true`. Please notice that the branch name needs to be defined after the version number by default (instead of `support/lts-2.0.0` please name the branch like `support/2.0.0-lts`). -* The `is-release-branch` property of the `hotfix` branch setting has been changed from `false` to `true`. If present the hotfix number will be considered now by default. -* In the GitHub and the Git Flow workflows the `label` property is by default set to an empty string on the `main` branch. This yields to a pre-release version on `main` with an empty tag. Instead of for instance `1.0.1+46` GitVersion generates the full semantic version `1.0.1-46` instead. This behavior can be changed to generate only stable versions (no pre-release version) with setting the label to `null` (Please keep in mind that the `label` property on root needs to be set to `null` as well, otherwise the fallback applies). This change is caused by issue #2347. -* The `useBranchName` magic string has been removed. Instead use `{BranchName}` for `label`. -* The `BranchPrefixToTrim` configuration property has been removed. `RegularExpression` is now used to capture named groups instead. - * Default `RegularExpression` for feature branches is changed from `^features?[/-]` to `^features?[/-](?.+)` to support using `{BranchName}` out-of-the-box - * Default `RegularExpression` for unknown branches is changed from `.*` to `(?.+)` to support using `{BranchName}` out-of-the-box -* The `Mainline` mode and the related implementation has been removed completely. The new `Mainline` version strategy should be used instead. -* The `Mainline` version strategy doesn't support downgrading the increment for calculating the next version. This is the case if e.g. a bump messages has been defined which is lower than the branch increment. -* The branch related property `is-mainline` in the configuration system has been renamed to `is-main-branch` -* The versioning mode has been renamed to deployment mode and consists of following values: - * ManualDeployment (previously ContinuousDelivery) - * ContinuousDelivery (previously ContinuousDeployment) - * ContinuousDeployment (new) -* At the configuration root level, a new array called `strategies` has been introduced, which can consist of on or more following values: - * ConfiguredNextVersion - * MergeMessage - * TaggedCommit - * TrackReleaseBranches - * VersionInBranchName - * Mainline -* The initialization wizard has been removed. -* On the `develop`, `release` and `hotfix` branch the introduced branch related property `prevent-increment.when-current-commit-tagged` has been set to `false` to get the incremented instead of the tagged semantic version. -* When setting the "ignore commits before" parameter to a future value, an exception will occur if no commits are found on the current branch. This behavior mimics that of an empty repository. -* On the `GitFlow` workflow the increment property has been changed: - * in branch `release` from `None` to `Minor` and - * in branch `hotfix` from `None` to `Patch` -* On the `GitHubFlow` workflow the increment property has been changed in branch `release` from `None` to `Patch`. -* When creating a branch with name `hotfix/next` (by using the `GitFlow` workflow) or `release/next` (by the `GitHubFlow` workflow) the resulting version will yield to a patched version per default. -* If you have a tag `1.0.0` on `main` and branch from `main` to `release/1.0.1` then the next version number will be `1.1.0` when using the `GitFlow` workflow. This behavior is expected (but different compared to the `GitHubFlow` workflow) because on the `GitFlow` workflow you have an addition branch configuration with name hotfix where `is-release-branch` is set to `true`. That means if you want `1.0.1` as a next version you need to branch to `hotfix/1.0.1` or `hotfix/next`. On the other hand if you use the `GitHubFlow` workflow the next version number will be `1.0.1` because the increment on the `release` branch is set to `Patch`. + +* When overriding the configuration with e.g. GitVersion.yaml the software distinguishes between properties who are not existent and properties who are `null`. This is especially important if the user wants to define branch related configuration which are marked with `increment` strategy `Inherit`. +* Following root configuration properties have been removed: + * continuous-delivery-fallback-tag +* A new branch related property with name `track-merge-message` has been introduced. Consider we have a `main` branch and a `release/1.0.0` branch and merge changes from `release/1.0.0` to the main branch. In this scenario the merge message will be interpreted as a next version `1.0.0` when `track-merge-message` is set to `true` otherwise `0.0.1`. +* The pre-release tags are only considered when they are matching with the label name of the branch. This has an effect on the way how the `CommitCountSource` will be determined. +* The process of increasing the version with bump message when `CommitMessageIncrementing` is enabled and increment strategy is `None` has been changed. +* A new configuration property with name `version-in-branch-pattern` has been introduced. This setting only applies on branches where the option `is-release-branch` is set to `true`. Please notice that the branch name needs to be defined after the version number by default (instead of `support/lts-2.0.0` please name the branch like `support/2.0.0-lts`). +* The `is-release-branch` property of the `hotfix` branch setting has been changed from `false` to `true`. If present the hotfix number will be considered now by default. +* In the GitHub and the Git Flow workflows the `label` property is by default set to an empty string on the `main` branch. This yields to a pre-release version on `main` with an empty tag. Instead of for instance `1.0.1+46` GitVersion generates the full semantic version `1.0.1-46` instead. This behavior can be changed to generate only stable versions (no pre-release version) with setting the label to `null` (Please keep in mind that the `label` property on root needs to be set to `null` as well, otherwise the fallback applies). This change is caused by issue #2347. +* The `useBranchName` magic string has been removed. Instead use `{BranchName}` for `label`. +* The `BranchPrefixToTrim` configuration property has been removed. `RegularExpression` is now used to capture named groups instead. + * Default `RegularExpression` for feature branches is changed from `^features?[/-]` to `^features?[/-](?.+)` to support using `{BranchName}` out-of-the-box + * Default `RegularExpression` for unknown branches is changed from `.*` to `(?.+)` to support using `{BranchName}` out-of-the-box +* The `Mainline` mode and the related implementation has been removed completely. The new `Mainline` version strategy should be used instead. +* The `Mainline` version strategy doesn't support downgrading the increment for calculating the next version. This is the case if e.g. a bump messages has been defined which is lower than the branch increment. +* The branch related property `is-mainline` in the configuration system has been renamed to `is-main-branch` +* The versioning mode has been renamed to deployment mode and consists of following values: + * ManualDeployment (previously ContinuousDelivery) + * ContinuousDelivery (previously ContinuousDeployment) + * ContinuousDeployment (new) +* At the configuration root level, a new array called `strategies` has been introduced, which can consist of on or more following values: + * ConfiguredNextVersion + * MergeMessage + * TaggedCommit + * TrackReleaseBranches + * VersionInBranchName + * Mainline +* The initialization wizard has been removed. +* On the `develop`, `release` and `hotfix` branch the introduced branch related property `prevent-increment.when-current-commit-tagged` has been set to `false` to get the incremented instead of the tagged semantic version. +* When setting the "ignore commits before" parameter to a future value, an exception will occur if no commits are found on the current branch. This behavior mimics that of an empty repository. +* On the `GitFlow` workflow the increment property has been changed: + * in branch `release` from `None` to `Minor` and + * in branch `hotfix` from `None` to `Patch` +* On the `GitHubFlow` workflow the increment property has been changed in branch `release` from `None` to `Patch`. +* When creating a branch with name `hotfix/next` (by using the `GitFlow` workflow) or `release/next` (by the `GitHubFlow` workflow) the resulting version will yield to a patched version per default. +* If you have a tag `1.0.0` on `main` and branch from `main` to `release/1.0.1` then the next version number will be `1.1.0` when using the `GitFlow` workflow. This behavior is expected (but different compared to the `GitHubFlow` workflow) because on the `GitFlow` workflow you have an addition branch configuration with name hotfix where `is-release-branch` is set to `true`. That means if you want `1.0.1` as a next version you need to branch to `hotfix/1.0.1` or `hotfix/next`. On the other hand if you use the `GitHubFlow` workflow the next version number will be `1.0.1` because the increment on the `release` branch is set to `Patch`. ## v5.0.0 -* Version numbers in branches other than `release` branches are no longer +* Version numbers in branches other than `release` branches are no longer considered as a version source by default. Implemented in [#1541][pr-1541]. -* [#1581][pr-1581] folds `GitTools.Core` back into GitVersion to make +* [#1581][pr-1581] folds `GitTools.Core` back into GitVersion to make maintaining GitVersion easier. ## v4.0.0 @@ -78,35 +85,35 @@ When using GitFlow, a few things have changed. Hopefully the new settings just work for you -* `develop` has pre-release tag of `alpha` now, not unstable. -* `develop` will bump as soon as a `release` branch is created. -* Look at the [GitFlow examples][gitflow] for details of how it works now. +* `develop` has pre-release tag of `alpha` now, not unstable. +* `develop` will bump as soon as a `release` branch is created. +* Look at the [GitFlow examples][gitflow] for details of how it works now. ### Configuration Changes -* `GitVersionConfig.yaml` is deprecated in favor of `GitVersion.yml`. -* Regular expressions are no longer used as keys in branch config - * We have named branches, and introduced a `regex` config which you can +* `GitVersionConfig.yaml` is deprecated in favor of `GitVersion.yml`. +* Regular expressions are no longer used as keys in branch config + * We have named branches, and introduced a `regex` config which you can override. - * The default keys are: `master`, `develop`, `feature`, `release`, `pull-request`, + * The default keys are: `master`, `develop`, `feature`, `release`, `pull-request`, `hotfix` and `support` - * Just run `GitVersion.exe` in your project directory and it will tell you + * Just run `GitVersion.exe` in your project directory and it will tell you what to change your config keys to - * For example, `dev(elop)?(ment)?$` is now just `develop`, we suggest not + * For example, `dev(elop)?(ment)?$` is now just `develop`, we suggest not overring regular expressions unless you really want to use a different convention. -* `source-branches` added as a configuration option for branches, it helps +* `source-branches` added as a configuration option for branches, it helps GitVersion pick the correct source branch ## v3.0.0 -* NextVersion.txt has been deprecated, only `GitVersionConfig.yaml` is supported -* `AssemblyFileSemVer` variable removed, `AssemblyVersioningScheme` configuration +* NextVersion.txt has been deprecated, only `GitVersionConfig.yaml` is supported +* `AssemblyFileSemVer` variable removed, `AssemblyVersioningScheme` configuration value makes this variable obsolete -* Variables `ClassicVersion` and `ClassicVersionWithTag` removed -* MSBuild task arguments (`AssemblyVersioningScheme`, `DevelopBranchTag`, +* Variables `ClassicVersion` and `ClassicVersionWithTag` removed +* MSBuild task arguments (`AssemblyVersioningScheme`, `DevelopBranchTag`, `ReleaseBranchTag`, `TagPrefix`, `NextVersion`) have been removed, use `GitVersionConfig.yaml` instead -* GitVersionTask's `ReleaseDateAttribute` no longer exists +* GitVersionTask's `ReleaseDateAttribute` no longer exists [gitflow]: https://gitversion.net/docs/learn/branching-strategies/gitflow-examples_complete [pr-1541]: https://github.com/GitTools/GitVersion/pull/1541 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index da08a4f88a..fa2ab0c87e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,10 +2,10 @@ We love contributions to get started contributing you might need: -* [Get started with git](https://rogerdudler.github.io/git-guide) -* [How to create a pull request](https://help.github.com/articles/using-pull-requests) -* [An issue to work on](https://github.com/GitTools/GitVersion/labels/up-for-grabs) - We are on [Up for grabs](https://up-for-grabs.net/), our up for grabs issues are tagged `up-for-grabs` -* An understanding of our [architecture](https://gitversion.net/docs/learn/how-it-works#architecture) and how [we write tests](#writing-tests) +* [Get started with git](https://rogerdudler.github.io/git-guide) +* [How to create a pull request](https://help.github.com/articles/using-pull-requests) +* [An issue to work on](https://github.com/GitTools/GitVersion/labels/up-for-grabs) - We are on [Up for grabs](https://up-for-grabs.net/), our up for grabs issues are tagged `up-for-grabs` +* An understanding of our [architecture](https://gitversion.net/docs/learn/how-it-works#architecture) and how [we write tests](#writing-tests) Once you know how to create a pull request and have an issue to work on, just post a comment saying you will work on it. If you end up not being able to complete the task, please post another comment so others can pick it up. @@ -14,9 +14,9 @@ Issues are also welcome, [failing tests](#writing-tests) are even more welcome. ## Contribution Guidelines -* Try to use feature branches rather than developing on main. -* Please include tests covering the change. -* The documentation is stored in the repository under the [`docs`](docs) folder. +* Try to use feature branches rather than developing on main. +* Please include tests covering the change. +* The documentation is stored in the repository under the [`docs`](docs) folder. Have a look at the [documentation readme file](docs/readme.md) for guidance on how to improve the documentation and please include documentation updates with your PR. @@ -50,6 +50,7 @@ var configurationBuilder = GitFlowConfigurationBuilder.New; We can then customize the configuration by chaining methods of the builder. At the end we build the configuration. For example: + ```csharp var configuration = configurationBuilder .WithDeploymentMode(DeploymentMode.ContinuousDeployment) @@ -61,9 +62,9 @@ var configuration = configurationBuilder We have a few fixtures for different scenarios. -* `EmptyRepositoryFixture` - Gives you an empty git repo to start with -* `RemoteRepositoryFixture` - A local repo tracking a test remote repository. The remote repo is available through the `Repository` property, the local is accessible via `LocalRepository` -* `BaseGitFlowRepositoryFixture` - A repo setup for GitFlow (has a develop branch checked out ready to go) +* `EmptyRepositoryFixture` - Gives you an empty git repo to start with +* `RemoteRepositoryFixture` - A local repo tracking a test remote repository. The remote repo is available through the `Repository` property, the local is accessible via `LocalRepository` +* `BaseGitFlowRepositoryFixture` - A repo setup for GitFlow (has a develop branch checked out ready to go) You can use a fixture by just `using` it. Like this @@ -97,18 +98,18 @@ Even better include the fix, but a failing test is a great start We use Cake for our build and deployment process. The way the release process is setup is: -1. We build releasable artifacts with GitHub Actions -2. We create a milestone for the release if it's not already created. Our milestones are named using the semver. +1. We build releasable artifacts with GitHub Actions +2. We create a milestone for the release if it's not already created. Our milestones are named using the semver. For example `5.12.0` or `6.0.0-beta.2` -3. We move all the closed issues and closed pull requests that are going to be included in the release to the milestone. -4. We check that all the issues and pull requests that are going to be included in the release have a label assigned, +3. We move all the closed issues and closed pull requests that are going to be included in the release to the milestone. +4. We check that all the issues and pull requests that are going to be included in the release have a label assigned, otherwise it will fail the release. -5. We create a release in the GitHub UI, and create a tag and name it using the milestone name. For example `5.12.0` or `6.0.0-beta.2` -6. We specify if the release is a pre-release or latest release in the GitHub UI. -7. We publish the release. -8. The GitHub Actions will create a GitHub release and publish the artifacts to NuGet, Chocolatey, Docker, Homebrew +5. We create a release in the GitHub UI, and create a tag and name it using the milestone name. For example `5.12.0` or `6.0.0-beta.2` +6. We specify if the release is a pre-release or latest release in the GitHub UI. +7. We publish the release. +8. The GitHub Actions will create a GitHub release and publish the artifacts to NuGet, Chocolatey, Docker, Homebrew and other distribution channels. -9. The issues and pull requests will get updated with message specifying in which release it was included. +9. The issues and pull requests will get updated with message specifying in which release it was included. ## Code Style diff --git a/README.md b/README.md index 684d8ee417..3627b83c90 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![GitVersion – From git log to SemVer in no time][banner] +# ![GitVersion – From git log to SemVer in no time][banner] Versioning when using Git, solved. GitVersion looks at your git history and works out the [Semantic Version][semver] of the commit being built. @@ -27,13 +27,13 @@ GitVersion works on Windows, Linux, and Mac. ## Quick Links -* [Documentation][docs] -* [Contributing][contribute] -* [Why GitVersion][why] -* [Usage][usage] -* [How it works][how] -* [FAQ][faq] -* [Who is using GitVersion][who] +* [Documentation][docs] +* [Contributing][contribute] +* [Why GitVersion][why] +* [Usage][usage] +* [How it works][how] +* [FAQ][faq] +* [Who is using GitVersion][who] ## GitVersion in action! @@ -41,8 +41,8 @@ GitVersion works on Windows, Linux, and Mac. You are seeing: -* Pull requests being built as pre-release builds -* A branch called `release-1.0.0` producing beta v1 packages +* Pull requests being built as pre-release builds +* A branch called `release-1.0.0` producing beta v1 packages ## Icon diff --git a/SECURITY.md b/SECURITY.md index 6e0e279f39..6e07e80a06 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -17,13 +17,13 @@ You should receive a response within 24 hours. If for some reason you do not, pl Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: -* Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) -* Full paths of source file(s) related to the manifestation of the issue -* The location of the affected source code (tag/branch/commit or direct URL) -* Any special configuration required to reproduce the issue -* Step-by-step instructions to reproduce the issue -* Proof-of-concept or exploit code (if possible) -* Impact of the issue, including how an attacker might exploit the issue +* Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) +* Full paths of source file(s) related to the manifestation of the issue +* The location of the affected source code (tag/branch/commit or direct URL) +* Any special configuration required to reproduce the issue +* Step-by-step instructions to reproduce the issue +* Proof-of-concept or exploit code (if possible) +* Impact of the issue, including how an attacker might exploit the issue This information will help us triage your report more quickly. diff --git a/build/nuspec/README.md b/build/nuspec/README.md index 92ee4c6227..9ab06f932c 100644 --- a/build/nuspec/README.md +++ b/build/nuspec/README.md @@ -16,13 +16,13 @@ GitVersion works on Windows, Linux, and Mac. ## Quick Links -* [Documentation][docs] -* [Contributing][contribute] -* [Why GitVersion][why] -* [Usage][usage] -* [How it works][how] -* [FAQ][faq] -* [Who is using GitVersion][who] +* [Documentation][docs] +* [Contributing][contribute] +* [Why GitVersion][why] +* [Usage][usage] +* [How it works][how] +* [FAQ][faq] +* [Who is using GitVersion][who] ## GitVersion in action! @@ -30,8 +30,8 @@ GitVersion works on Windows, Linux, and Mac. You are seeing: -* Pull requests being built as pre-release builds -* A branch called `release-1.0.0` producing beta v1 packages +* Pull requests being built as pre-release builds +* A branch called `release-1.0.0` producing beta v1 packages ## Icon @@ -46,8 +46,6 @@ from The Noun Project. [gvt]: https://www.nuget.org/packages/GitVersion.MsBuild [gvt-badge]: https://img.shields.io/nuget/v/GitVersion.MsBuild.svg?logo=nuget [gitversiontask]: https://www.nuget.org/packages/GitVersionTask/ -[gvcl]: https://www.nuget.org/packages/GitVersion.CommandLine -[gvcl-badge]: https://img.shields.io/nuget/v/GitVersion.CommandLine.svg?logo=nuget [gvgt]: https://www.nuget.org/packages/GitVersion.Tool [gvgt-badge]: https://img.shields.io/nuget/v/GitVersion.Tool.svg?logo=nuget [contribute]: https://github.com/GitTools/GitVersion/blob/main/CONTRIBUTING.md diff --git a/docs/input/docs/learn/branching-strategies/contribute-examples.md b/docs/input/docs/learn/branching-strategies/contribute-examples.md index c162dfe85e..3651bc91c6 100644 --- a/docs/input/docs/learn/branching-strategies/contribute-examples.md +++ b/docs/input/docs/learn/branching-strategies/contribute-examples.md @@ -9,8 +9,8 @@ The examples are generated by GitVersion tests, there are a number of services which will then turn the sequence diagram text into an image to use in the docs. Here are some links which could be useful -* [PlantUML Sequence Diagrams](https://www.plantuml.com/sequence.html) -* [PlantText Online editor](https://www.planttext.com) +* [PlantUML Sequence Diagrams](https://www.plantuml.com/sequence.html) +* [PlantText Online editor](https://www.planttext.com) The tests are quite simple. Using the methods on the `fixture` itself will record that action in the sequence diagram. If you do not want the action diff --git a/docs/input/docs/learn/branching-strategies/gitflow/index.md b/docs/input/docs/learn/branching-strategies/gitflow/index.md index 4a0895e419..dbb5688c1b 100644 --- a/docs/input/docs/learn/branching-strategies/gitflow/index.md +++ b/docs/input/docs/learn/branching-strategies/gitflow/index.md @@ -10,20 +10,20 @@ SemVer compatible versions from this structure. ## Assumptions: -* Using [GitFlow branching model](https://nvie.com/git-model/) which always has a +* Using [GitFlow branching model](https://nvie.com/git-model/) which always has a main and a develop branch -* Following [Semantic Versioning](https://semver.org/) -* Planned releases (bumps in major or minor) are done on release branches +* Following [Semantic Versioning](https://semver.org/) +* Planned releases (bumps in major or minor) are done on release branches prefixed with release-. Eg: release-4.1 (or release-4.1.0) -* Hotfixes are prefixed with hotfix- Eg. hotfix-4.0.4 -* The original [GitFlow model](https://nvie.com/posts/a-successful-git-branching-model/) +* Hotfixes are prefixed with hotfix- Eg. hotfix-4.0.4 +* The original [GitFlow model](https://nvie.com/posts/a-successful-git-branching-model/) specifies branches with a "-" separator while the [git flow extensions](https://github.com/CJ-Systems/gitflow-cjs) default to a "/" separator. Either work with GitVersion. -* Tags are used on the main branch and reflects the SemVer of each stable +* Tags are used on the main branch and reflects the SemVer of each stable release eg 3.3.8 , 4.0.0, etc -* Tags can also be used to override versions while we transition repositories +* Tags can also be used to override versions while we transition repositories over to GitVersion -* Using a build server with multi-branch building enabled eg TeamCity 8 +* Using a build server with multi-branch building enabled eg TeamCity 8 ## How Branches are handled @@ -31,8 +31,8 @@ The descriptions of how commits and branches are versioned can be considered a type of pseudopod. With that in mind there are a few common "variables" that we will refer to: -* `targetBranch` => the branch we are targeting -* `targetCommit` => the commit we are targeting on `targetbranch` +* `targetBranch` => the branch we are targeting +* `targetCommit` => the commit we are targeting on `targetbranch` ### Main branch @@ -44,15 +44,15 @@ If we try to build from a commit that is no merge and no tag then assume `0.1.0` `mergeVersion` => the SemVer extracted from `targetCommit.Message` -* major: `mergeVersion.Major` -* minor: `mergeVersion.Minor` -* patch: `mergeVersion.Patch` -* pre-release: 0 (perhaps count ahead commits later) -* stability: final +* major: `mergeVersion.Major` +* minor: `mergeVersion.Minor` +* patch: `mergeVersion.Patch` +* pre-release: 0 (perhaps count ahead commits later) +* stability: final Optional Tags (only when transitioning existing repository): -* TagOnHeadCommit.Name={semver} => overrides the version to be {semver} +* TagOnHeadCommit.Name={semver} => overrides the version to be {semver} Long version: @@ -68,10 +68,10 @@ Long version: `main` that is older than the `targetCommitDate` `mainMergeVersion` => the SemVer extracted from `mainVersionCommit.Message` -* major: `mainMergeVersion.Major` -* minor: `mainMergeVersion.Minor + 1` (0 if the override above is used) -* patch: 0 -* pre-release: `alpha.{n}` where n = how many commits `develop` is in front of +* major: `mainMergeVersion.Major` +* minor: `mainMergeVersion.Minor + 1` (0 if the override above is used) +* patch: 0 +* pre-release: `alpha.{n}` where n = how many commits `develop` is in front of `mainVersionCommit.Date` ('0' padded to 4 characters) Long version: @@ -87,10 +87,10 @@ Named: `hotfix-{versionNumber}` eg `hotfix-1.2` `branchVersion` => the SemVer extracted from `targetBranch.Name` -* major: `mergeVersion.Major` -* minor: `mergeVersion.Minor` -* patch: `mergeVersion.Patch` -* pre-release: `beta{n}` where n = number of commits on branch ('0' padded to +* major: `mergeVersion.Major` +* minor: `mergeVersion.Minor` +* patch: `mergeVersion.Patch` +* pre-release: `beta{n}` where n = number of commits on branch ('0' padded to 4 characters) Long version: @@ -102,9 +102,9 @@ Long version: ### Release branches -* May branch off from: develop -* Must merge back into: develop and main -* Branch naming convention: `release-{n}` eg `release-1.2` +* May branch off from: develop +* Must merge back into: develop and main +* Branch naming convention: `release-{n}` eg `release-1.2` `releaseVersion` => the SemVer extracted from `targetBranch.Name` `releaseTag` => the first version tag placed on the branch. Note that at least @@ -112,10 +112,10 @@ one version tag is required on the branch. The recommended initial tag is `{releaseVersion}.0-alpha1`. So for a branch named `release-1.2` the recommended tag would be `1.2.0-alpha1` -* major: `mergeVersion.Major` -* minor: `mergeVersion.Minor` -* patch: 0 -* pre-release: `{releaseTag.preRelease}.{n}` where n = 1 + the number of commits +* major: `mergeVersion.Major` +* minor: `mergeVersion.Minor` +* patch: 0 +* pre-release: `{releaseTag.preRelease}.{n}` where n = 1 + the number of commits since `releaseTag`. So on a branch named `release-1.2` with a tag `1.2.0-alpha1` and 4 commits after @@ -139,10 +139,10 @@ Branch naming convention: anything except `main`, `develop`, `release-{n}`, or TODO: feature branches cannot start with a SemVer. to stop people from create branches named like "4.0.3" -* major: `mainMergeVersion.Major` -* minor: `mainMergeVersion.Minor + 1` (0 if the override above is used) -* patch: 0 -* pre-release: `alpha.feature-{n}` where n = First 8 characters of the commit +* major: `mainMergeVersion.Major` +* minor: `mainMergeVersion.Minor + 1` (0 if the override above is used) +* patch: 0 +* pre-release: `alpha.feature-{n}` where n = First 8 characters of the commit SHA of the first commit Long version: @@ -159,10 +159,10 @@ Must merge back into: `develop` Branch naming convention: anything except `main`, `develop`, `release-{n}`, or `hotfix-{n}`. Canonical branch name contains `/pull/`. -* major: `mainMergeVersion.Major` -* minor: `mainMergeVersion.Minor + 1` (0 if the override above is used) -* patch: 0 -* pre-release: `alpha.pull{n}` where n = the pull request number ('0' padded to +* major: `mainMergeVersion.Major` +* minor: `mainMergeVersion.Minor + 1` (0 if the override above is used) +* patch: 0 +* pre-release: `alpha.pull{n}` where n = the pull request number ('0' padded to 4 characters) ## Nightly Builds diff --git a/docs/input/docs/learn/branching-strategies/githubflow/index.md b/docs/input/docs/learn/branching-strategies/githubflow/index.md index d683b2d906..89ae283bfa 100644 --- a/docs/input/docs/learn/branching-strategies/githubflow/index.md +++ b/docs/input/docs/learn/branching-strategies/githubflow/index.md @@ -11,19 +11,19 @@ are much better off with a simpler workflow. GitHubFlow is in a nutshell: -1. Update main to latest [upstream](/docs/learn/git-setup#upstream) code -2. Create a feature branch `git checkout -b myFeatureBranch` -3. Do the feature/work -4. Push feature branch to [origin](/docs/learn/git-setup#origin) -5. Create pull request from origin/ -> upstream/main -6. Review, fix raised comments, merge your PR or even better, get someone else to. +1. Update main to latest [upstream](/docs/learn/git-setup#upstream) code +2. Create a feature branch `git checkout -b myFeatureBranch` +3. Do the feature/work +4. Push feature branch to [origin](/docs/learn/git-setup#origin) +5. Create pull request from origin/ -> upstream/main +6. Review, fix raised comments, merge your PR or even better, get someone else to. The main rule of GitHub Flow is that main should _always_ be deployable. GitHub Flow allows and encourages [continuous delivery](/docs/reference/modes/continuous-delivery). ## Resources -* [GitHubFlow guide by GitHub](https://docs.github.com/en/get-started/quickstart/github-flow#introduction) -* [GitHubFlow original blog post](https://scottchacon.com/2011/08/31/github-flow) -* [Phil Haack's (haacked) GitHubFlow aliases](https://haacked.com/archive/2014/07/28/github-flow-aliases/) -* [GitHubFlow vs GitFlow](https://lucamezzalira.com/2014/03/10/git-flow-vs-github-flow/) +* [GitHubFlow guide by GitHub](https://docs.github.com/en/get-started/quickstart/github-flow#introduction) +* [GitHubFlow original blog post](https://scottchacon.com/2011/08/31/github-flow) +* [Phil Haack's (haacked) GitHubFlow aliases](https://haacked.com/archive/2014/07/28/github-flow-aliases/) +* [GitHubFlow vs GitFlow](https://lucamezzalira.com/2014/03/10/git-flow-vs-github-flow/) diff --git a/docs/input/docs/learn/branching-strategies/overview.md b/docs/input/docs/learn/branching-strategies/overview.md index aae1372e90..b5053214b3 100644 --- a/docs/input/docs/learn/branching-strategies/overview.md +++ b/docs/input/docs/learn/branching-strategies/overview.md @@ -26,32 +26,32 @@ As mentioned above the GitVersion docs cover [GitHubFlow][githubflow] and GitHubFlow is a simple and powerful branching strategy. It is what GitHub uses and the branching strategy most open source projects use. -* [Mainline development][mainline] on `main`. -* Work on [feature branches][feature-branches], merge into `main` via a [pull +* [Mainline development][mainline] on `main`. +* Work on [feature branches][feature-branches], merge into `main` via a [pull request][pull-request]. -* Works well for [continuous delivery][continuous-delivery]. -* Does not have a way to manage/maintain old releases. -* Only allows working on a single release at a time. +* Works well for [continuous delivery][continuous-delivery]. +* Does not have a way to manage/maintain old releases. +* Only allows working on a single release at a time. ### Git Flow GitFlow is a more complex and complete branching strategy. It also gives much more control over when features and code is released. -* Development on `develop` branch. -* `main` only contains _released_ code. -* Supports maintaining old releases (like nServiceBus, they support the last 3 +* Development on `develop` branch. +* `main` only contains _released_ code. +* Supports maintaining old releases (like nServiceBus, they support the last 3 major versions with bug fixes and security updates). -* Supports development on multiple releases at one time. +* Supports development on multiple releases at one time. ## Choosing a branching strategy There are a few reasons you would pick GitFlow over GitHubFlow, they are: -1. You need to support multiple major versions at the same time. -2. You need to work on multiple releases at the same time. +1. You need to support multiple major versions at the same time. +2. You need to work on multiple releases at the same time. -* For example a new feature which will go in the next major version, while bug +* For example a new feature which will go in the next major version, while bug fixes/smaller features are still going into the current release But if you do not have a good reason to go with GitFlow, then start with diff --git a/docs/input/docs/learn/dynamic-repositories.md b/docs/input/docs/learn/dynamic-repositories.md index 0ba9bf49cb..848ac16391 100644 --- a/docs/input/docs/learn/dynamic-repositories.md +++ b/docs/input/docs/learn/dynamic-repositories.md @@ -31,11 +31,11 @@ will assume there is already a ".git" folder present, and it will use it. To tell GitVersion.exe to obtain the repository on the fly, you need to call `GitVersion.exe` with the following arguments: -* `/url [the url of your git repo]` -* `/u [authentication username]` -* `/p [authentication password]` -* `/b [branch name]` -* `/c [commit id]` +* `/url [the url of your git repo]` +* `/u [authentication username]` +* `/p [authentication password]` +* `/b [branch name]` +* `/c [commit id]` Please note that these arguments are described when calling `GitVersion.exe /?`. diff --git a/docs/input/docs/learn/how-it-works.md b/docs/input/docs/learn/how-it-works.md index 6c3ee2ae1a..36ba942451 100644 --- a/docs/input/docs/learn/how-it-works.md +++ b/docs/input/docs/learn/how-it-works.md @@ -16,12 +16,12 @@ it _much_ more predictable and easier to diagnose when odd things are happening. GitVersion has three distinct steps for calculating versions in v3. -1. If the current commit is tagged, the tag is used and build metadata +1. If the current commit is tagged, the tag is used and build metadata (excluding commit count) is added. The other two steps will not execute. -2. A set of strategies are evaluated to decide on the base version and some +2. A set of strategies are evaluated to decide on the base version and some metadata about that version. These strategies include HighestReachableTag, NextVersionInConfig, MergedBranchWithVersion, VersionInBranchName etc. -3. The highest base version is selected, using that base version as the new +3. The highest base version is selected, using that base version as the new version is calculated. Visually it looks something like this: @@ -39,30 +39,30 @@ simply to show what happens if the check is true. Currently we have the following strategies: -* `HighestTagBaseVersionStrategy` - Finds the highest reachable tag from the +* `HighestTagBaseVersionStrategy` - Finds the highest reachable tag from the current branch -* `VersionInBranchBaseVersionStrategy` - Extracts version information from the +* `VersionInBranchBaseVersionStrategy` - Extracts version information from the branch name (e.g., `release/3.0.0` will find `3.0.0`) -* `ConfigNextVersionBaseVersionStrategy` - Returns the version from the +* `ConfigNextVersionBaseVersionStrategy` - Returns the version from the GitVersion.yaml file -* `MergeMessageBaseVersionStrategy` - Finds version numbers from merge messages +* `MergeMessageBaseVersionStrategy` - Finds version numbers from merge messages (e.g., `Merge 'release/3.0.0' into 'main'` will return `3.0.0`) -* `FallbackBaseVersionStrategy` - Always returns 0.0.0 and will be used for - calculating the next version which is dependent on the increment strategy of - the effected branch (e.g. on main the next version is 0.0.1 or on develop it is 0.1.0) +* `FallbackBaseVersionStrategy` - Always returns 0.0.0 and will be used for + calculating the next version which is dependent on the increment strategy of + the effected branch (e.g. on main the next version is 0.0.1 or on develop it is 0.1.0) Each strategy needs to return an instance of `BaseVersion` which has the following properties: -* `Source` - Description of the source (e.g., `Merge message 'Merge 'release/3.0.0' into 'main'`) -* `ShouldIncrement` - Some strategies should have the version incremented, +* `Source` - Description of the source (e.g., `Merge message 'Merge 'release/3.0.0' into 'main'`) +* `ShouldIncrement` - Some strategies should have the version incremented, others do not (e.g., `ConfigNextVersionBaseVersionStrategy` returns false, `HighestTagBaseVersionStrategy` returns true) -* `SemanticVersion` - SemVer of the base version strategy -* `BaseVersionSource` - SHA hash of the source. Commits will be counted from +* `SemanticVersion` - SemVer of the base version strategy +* `BaseVersionSource` - SHA hash of the source. Commits will be counted from this hash. Can be null (e.g., `ConfigNextVersionBaseVersionStrategy` returns null). -* `BranchNameOverride` - When `useBranchName` or `{BranchName}` is used in the +* `BranchNameOverride` - When `useBranchName` or `{BranchName}` is used in the tag configuration, this allows the branch name to be changed by a base version. `VersionInBranchBaseVersionStrategy` uses this to strip out anything before the first `-` or `/.` so `foo` ends up being evaluated as `foo`. If in doubt, just diff --git a/docs/input/docs/learn/intro-to-semver.md b/docs/input/docs/learn/intro-to-semver.md index 179010169c..43a73646bf 100644 --- a/docs/input/docs/learn/intro-to-semver.md +++ b/docs/input/docs/learn/intro-to-semver.md @@ -16,12 +16,12 @@ Version Promiscuity is the opposite problem, **JsonLibrary** releases _v1.1.0_ w SemVer introduces conventions about breaking changes into our version numbers so we can safely upgrade dependencies without fear of unexpected, breaking changes while still allowing us to upgrade downstream libraries to get new features and bug fixes. The convention is quite simple: -* `{major}.{minor}.{patch}-{tag}+{buildmetadata}` -* `{major}` is only incremented if the release has breaking changes (includes bug fixes which have breaking behavioural changes -* `{minor}` is incremented if the release has new non-breaking features -* `{patch}` is incremented if the release only contains non-breaking bug fixes -* `{tag}` is optional and denotes a pre-release of the version preceding -* `{buildmetadata}` is optional and contains additional information about the version, but **does not affect** the semantic version preceding it. +* `{major}.{minor}.{patch}-{tag}+{buildmetadata}` +* `{major}` is only incremented if the release has breaking changes (includes bug fixes which have breaking behavioural changes +* `{minor}` is incremented if the release has new non-breaking features +* `{patch}` is incremented if the release only contains non-breaking bug fixes +* `{tag}` is optional and denotes a pre-release of the version preceding +* `{buildmetadata}` is optional and contains additional information about the version, but **does not affect** the semantic version preceding it. Only one number should be incremented per release, and all lower parts should be reset to 0 (if `{major}` is incremented, then `{minor}` and `{patch}` should become 0). diff --git a/docs/input/docs/learn/who.md b/docs/input/docs/learn/who.md index bbcaba18a8..ace607d739 100644 --- a/docs/input/docs/learn/who.md +++ b/docs/input/docs/learn/who.md @@ -8,19 +8,19 @@ Various people are actively using GitVersion, and taking advantage of the automatic generation of their version numbers. Here is a list of applications that we know about today. -* [Catel](https://github.com/catel/catel) -* [ChocolateyGUI](https://github.com/chocolatey/ChocolateyGUI) -* [GitLink](https://github.com/GitTools/GitLink) -* [OctopusDeploy](https://github.com/OctopusDeploy) -* [NUKE](https://nuke.build) -* [Orc.\* packages](https://github.com/wildgums?query=orc) -* [Orchestra](https://github.com/wildgums/orchestra) -* [Shouldly](https://github.com/shouldly/shouldly) -* [Akavache](https://github.com/akavache/akavache) -* [Splat](https://github.com/paulcbetts/splat) -* [ReactiveUI](https://github.com/reactiveui/reactiveui) -* [Uno Platform](https://platform.uno/) -* [Fluent Assertions](https://fluentassertions.com) +* [Catel](https://github.com/catel/catel) +* [ChocolateyGUI](https://github.com/chocolatey/ChocolateyGUI) +* [GitLink](https://github.com/GitTools/GitLink) +* [OctopusDeploy](https://github.com/OctopusDeploy) +* [NUKE](https://nuke.build) +* [Orc.\* packages](https://github.com/wildgums?query=orc) +* [Orchestra](https://github.com/wildgums/orchestra) +* [Shouldly](https://github.com/shouldly/shouldly) +* [Akavache](https://github.com/akavache/akavache) +* [Splat](https://github.com/paulcbetts/splat) +* [ReactiveUI](https://github.com/reactiveui/reactiveui) +* [Uno Platform](https://platform.uno/) +* [Fluent Assertions](https://fluentassertions.com) If you are using GitVersion in your projects, and you are not listed above, please feel free to add a link to your project. diff --git a/docs/input/docs/learn/why.md b/docs/input/docs/learn/why.md index 421db61eee..a87ef0cc3a 100644 --- a/docs/input/docs/learn/why.md +++ b/docs/input/docs/learn/why.md @@ -11,28 +11,28 @@ transportable between projects. It solves: -* Rebuilding tags always produces the same version -* Not having to rebuild to increment versions -* Not duplicating version information in multiple places (branch release/2.0.0 +* Rebuilding tags always produces the same version +* Not having to rebuild to increment versions +* Not duplicating version information in multiple places (branch release/2.0.0 already has the version in it, why do I need to change something else) -* Each branch calculates its SemVer and versions flow between branches when +* Each branch calculates its SemVer and versions flow between branches when they are merged -* Pull requests produce unique pre-release version numbers -* NuGet semver issues -* Build server integration -* Updating assembly info -* And a whole lot of edge cases you don't want to think about +* Pull requests produce unique pre-release version numbers +* NuGet semver issues +* Build server integration +* Updating assembly info +* And a whole lot of edge cases you don't want to think about ## Advantages vs other approaches ### Version.txt/Version in build script -* With version.txt/build script, after the release you need to do an additional commit to bump the version -* After tagging a release, the next build will still be the same version +* With version.txt/build script, after the release you need to do an additional commit to bump the version +* After tagging a release, the next build will still be the same version ### Build Server versioning -* Cannot have different version numbers on different branches -* Rebuilding will result in a different build number (if using an auto incrementing number in the version) -* Need to login to the build server to change version number -* Only build administrators can change the version number +* Cannot have different version numbers on different branches +* Rebuilding will result in a different build number (if using an auto incrementing number in the version) +* Need to login to the build server to change version number +* Only build administrators can change the version number diff --git a/docs/input/docs/reference/build-servers/appveyor.md b/docs/input/docs/reference/build-servers/appveyor.md index d23f0da61d..2232c49a15 100644 --- a/docs/input/docs/reference/build-servers/appveyor.md +++ b/docs/input/docs/reference/build-servers/appveyor.md @@ -8,8 +8,8 @@ RedirectFrom: docs/build-server-support/build-server/appveyor AppVeyor is the first build server which has a setup helper built into `GitVersion init`. -1. Run `GitVersion init` -2. Choose `Setup build scripts` (currently option 7, but that could change) -3. Choose `AppVeyor` -4. Follow the prompts to generate an AppVeyor.yml file which works nicely with +1. Run `GitVersion init` +2. Choose `Setup build scripts` (currently option 7, but that could change) +3. Choose `AppVeyor` +4. Follow the prompts to generate an AppVeyor.yml file which works nicely with GitVersion diff --git a/docs/input/docs/reference/build-servers/azure-devops.md b/docs/input/docs/reference/build-servers/azure-devops.md index 8439d978d6..3f548d18a4 100644 --- a/docs/input/docs/reference/build-servers/azure-devops.md +++ b/docs/input/docs/reference/build-servers/azure-devops.md @@ -17,4 +17,4 @@ without it, Azure DevOps Pipelines will perform a shallow clone, which will caus See [the Azure DevOps documentation](https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/steps-checkout?view=azure-pipelines#shallow-fetch) for more information. ::: -More information can be found at [gittools/actions](https://github.com/GitTools/actions/blob/main/docs/examples/azure/gitversion/index.md). \ No newline at end of file +More information can be found at [gittools/actions](https://github.com/GitTools/actions/blob/main/docs/examples/azure/gitversion/index.md). diff --git a/docs/input/docs/reference/build-servers/bamboo.md b/docs/input/docs/reference/build-servers/bamboo.md index 71e0ad3ae1..6d0d79a263 100644 --- a/docs/input/docs/reference/build-servers/bamboo.md +++ b/docs/input/docs/reference/build-servers/bamboo.md @@ -36,6 +36,6 @@ sed -i '1d;$ d;s/ //;s/"//g;s/,//;s/:/=/' gitversion.txt **Required Properties** -* **Path to properties file**: gitversion.txt -* **Namespace**: GitVersion -* **Scope of the Variables**: Result +* **Path to properties file**: gitversion.txt +* **Namespace**: GitVersion +* **Scope of the Variables**: Result diff --git a/docs/input/docs/reference/build-servers/buildkite.md b/docs/input/docs/reference/build-servers/buildkite.md index d06e9d4aad..5bae6a9729 100644 --- a/docs/input/docs/reference/build-servers/buildkite.md +++ b/docs/input/docs/reference/build-servers/buildkite.md @@ -10,8 +10,9 @@ If you use [Buildkite][buildkite] then you will have to use GitVersion from the ## Gotchas By default Buildkite calls `git fetch` with the flags `-v --prune` which can cause issues on new build agents since branches or tags might not be available locally on the build agent when GitVersion runs. This can be fixed by altering the [Buildkite agent configuration][configuration] either by: -* Setting the environment variable `BUILDKITE_GIT_FETCH_FLAGS` to `-v --tags` -* Setting configuration value `git-fetch-flags` to `-v --tags` in your agent configuration file + +* Setting the environment variable `BUILDKITE_GIT_FETCH_FLAGS` to `-v --tags` +* Setting configuration value `git-fetch-flags` to `-v --tags` in your agent configuration file If you are running GitVersion in a docker container make sure to propagate the `BUILDKITE`, `BUILDKITE_BRANCH`, and `BUILDKITE_PULL_REQUEST` environment variables (c.f. example below). diff --git a/docs/input/docs/reference/build-servers/continua.md b/docs/input/docs/reference/build-servers/continua.md index 18f035eb04..eefe6048df 100644 --- a/docs/input/docs/reference/build-servers/continua.md +++ b/docs/input/docs/reference/build-servers/continua.md @@ -13,29 +13,29 @@ This guide assumes a few variables are present in the configuration. Note that this example uses `Catel` as repository name, but it should be replaced by the name of the repository where GitVersion is running against. -* RepositoryBranchName => $Source.Catel.BranchName$ -* RepositoryCommitId => $Source.Catel.LatestChangeset.Id$ -* RepositoryName => Catel -* RepositoryName => $Source.Catel.Path$ -* RepositoryUrl => $Source.Catel.Url$ +* RepositoryBranchName => $Source.Catel.BranchName$ +* RepositoryCommitId => $Source.Catel.LatestChangeset.Id$ +* RepositoryName => Catel +* RepositoryName => $Source.Catel.Path$ +* RepositoryUrl => $Source.Catel.Url$ It also requires a few variables which will automatically be filled by GitVersion. The example below are just a few, any of the GitVersion variables written to the output can be used. -* GitVersion_FullSemVer -* GitVersion_MajorMinorPatch -* GitVersion_NuGetVersion +* GitVersion_FullSemVer +* GitVersion_MajorMinorPatch +* GitVersion_NuGetVersion You also need to add a property collector for the agents to detect the GitVersion tool on the agents: -* Namespace => GitVersion -* Run On => Agent -* Type => Path Finder Plugin -* Property Name => Path -* Executable => GitVersion.exe -* Search paths => your installation folder (e.g. `C:\Tools\GitVersion` or if you +* Namespace => GitVersion +* Run On => Agent +* Type => Path Finder Plugin +* Property Name => Path +* Executable => GitVersion.exe +* Search paths => your installation folder (e.g. `C:\Tools\GitVersion` or if you are using Chocolatey `C:\ProgramData\chocolatey\lib\GitVersion.Portable\tools`) ## Basic Usage @@ -43,17 +43,17 @@ GitVersion tool on the agents: To run GitLink inside [Continua CI](https://www.finalbuilder.com/continua-ci), follow the steps below: -* Add a new `Execute Program` step to a stage -* In the `Execute Program` tab, set the following values: - * Executable path: $Agent.GitVersion.Path$ - * Working directory: %RepositoryPath% -* In the `Arguments` tab, set the following values: - * Arguments: /url %RepositoryUrl% /b %RepositoryBranchName% /c %RepositoryCommitId% /output buildserver -* In the `Options` tab, set the following values: - * Wait for completion: checked - * Log output: checked - * Check program exit code: checked - * Exit code must be: equal to - * Exit code: 0 +* Add a new `Execute Program` step to a stage +* In the `Execute Program` tab, set the following values: + * Executable path: $Agent.GitVersion.Path$ + * Working directory: %RepositoryPath% +* In the `Arguments` tab, set the following values: + * Arguments: /url %RepositoryUrl% /b %RepositoryBranchName% /c %RepositoryCommitId% /output buildserver +* In the `Options` tab, set the following values: + * Wait for completion: checked + * Log output: checked + * Check program exit code: checked + * Exit code must be: equal to + * Exit code: 0 Now GitVersion will automatically run and fill the `GitVersion_` variables. diff --git a/docs/input/docs/reference/build-servers/github-actions.md b/docs/input/docs/reference/build-servers/github-actions.md index 0e92cff8e6..d19e4489a5 100644 --- a/docs/input/docs/reference/build-servers/github-actions.md +++ b/docs/input/docs/reference/build-servers/github-actions.md @@ -15,4 +15,4 @@ You must disable shallow fetch by setting `fetch-depth: 0` in your `checkout` st without it, GitHub Actions might perform a shallow clone, which will cause GitVersion to display an error message. ::: -More information can be found at [gittools/actions](https://github.com/GitTools/actions/blob/main/docs/examples/github/gitversion/index.md). \ No newline at end of file +More information can be found at [gittools/actions](https://github.com/GitTools/actions/blob/main/docs/examples/github/gitversion/index.md). diff --git a/docs/input/docs/reference/build-servers/gitlab.md b/docs/input/docs/reference/build-servers/gitlab.md index a3f9acde28..9a03ac25b8 100755 --- a/docs/input/docs/reference/build-servers/gitlab.md +++ b/docs/input/docs/reference/build-servers/gitlab.md @@ -13,16 +13,16 @@ A working example of integrating GitVersion with GitLab is maintained in the pro Here is a summary of what it demonstrated (many more details in the [Readme][readme]) -- Is a reusable working example known as a Guided Exploration ([Guided Exploration Manifesto][guided-exploration-manifesto]) - so job logs and package artifacts can be reviewed. The project can also be imported to your own GitLab group or instance as a starting point for your own work. -- IMPORTANT: It demonstrates how to override GitLab CI's default cloning behavior so that GitVersion can do a dynamic copy. Selectively clones GitVersion.yml so that these settings take effect. This best practice demonstrates the best way to do this while avoiding a double-cloning of the project (once by GitLab Runner and once by GitVersion). -- Implements GitVersion as a CI/CD Extension that can be reused across many projects using includes. -- Implements GitVersion as a single job that runs the GitVersion container and passes the version number downstream into both _pipeline_ and _job_ level variables, which means... -- It can be used with ANY coding language, framework or packaging engine. -- Generates example packaged artifacts: - - Two ways of building Sem Versioned NuGet packages (msbuild-ish and nuget.exe-ish) and uploads them and tests them from a [GitLab NuGet Repository][gitlab-nuget-repository]. - - A Sem Versioned [GitLab Generic Package][gitlab-generic-package] - - A Sem Versioned docker container and uploads to [GitLab Container Registry][gitlab-container-registry]. -- It creates a Sem Versioned [GitLab Release][gitlab-release-help] and Git tag using the [GitLab Release Cli][gitlab-release-cli] and links the generic package as evidence. +- Is a reusable working example known as a Guided Exploration ([Guided Exploration Manifesto][guided-exploration-manifesto]) - so job logs and package artifacts can be reviewed. The project can also be imported to your own GitLab group or instance as a starting point for your own work. +- IMPORTANT: It demonstrates how to override GitLab CI's default cloning behavior so that GitVersion can do a dynamic copy. Selectively clones GitVersion.yml so that these settings take effect. This best practice demonstrates the best way to do this while avoiding a double-cloning of the project (once by GitLab Runner and once by GitVersion). +- Implements GitVersion as a CI/CD Extension that can be reused across many projects using includes. +- Implements GitVersion as a single job that runs the GitVersion container and passes the version number downstream into both _pipeline_ and _job_ level variables, which means... +- It can be used with ANY coding language, framework or packaging engine. +- Generates example packaged artifacts: + - Two ways of building Sem Versioned NuGet packages (msbuild-ish and nuget.exe-ish) and uploads them and tests them from a [GitLab NuGet Repository][gitlab-nuget-repository]. + - A Sem Versioned [GitLab Generic Package][gitlab-generic-package] + - A Sem Versioned docker container and uploads to [GitLab Container Registry][gitlab-container-registry]. +- It creates a Sem Versioned [GitLab Release][gitlab-release-help] and Git tag using the [GitLab Release Cli][gitlab-release-cli] and links the generic package as evidence. [gitlab-generic-package]: https://docs.gitlab.com/ee/user/packages/generic_packages/ [gitlab-nuget-repository]: https://docs.gitlab.com/ee/user/packages/nuget_repository/ diff --git a/docs/input/docs/reference/build-servers/jenkins.md b/docs/input/docs/reference/build-servers/jenkins.md index 70f376e8f1..19669ee20f 100644 --- a/docs/input/docs/reference/build-servers/jenkins.md +++ b/docs/input/docs/reference/build-servers/jenkins.md @@ -9,13 +9,13 @@ RedirectFrom: docs/build-server-support/build-server/jenkins When setting up a Jenkins project for GitVersion, it is necessary to add a few _Behaviors_ to the SCM settings to ensure that GitVersion has enough information: -* Advanced clone behaviors - * Enable `Fetch tags` - * Enable `Honor refspec on intial clone` -* Check out to matching local branch -* Prune stale remote-tracking branches -* Specify ref specs - * Ref Spec: `+refs/heads/*:refs/remotes/@{remote}/*` +* Advanced clone behaviors + * Enable `Fetch tags` + * Enable `Honor refspec on intial clone` +* Check out to matching local branch +* Prune stale remote-tracking branches +* Specify ref specs + * Ref Spec: `+refs/heads/*:refs/remotes/@{remote}/*` ## Usage @@ -30,9 +30,9 @@ Jenkins plugins exist that provide this functionality. Of these plugins To inject the GitVersion variables as environment variables for a build job using [EnvInject][env-inject], do the following: -1. Add an **Execute Windows batch command** build step with _Command_: +1. Add an **Execute Windows batch command** build step with _Command_: `gitversion /output buildserver` -2. Add an **Inject environment variables** build step and use value +2. Add an **Inject environment variables** build step and use value 'gitversion.properties' for the _Properties File Path_ parameter This assumes GitVersion.exe is available on the command line. @@ -55,13 +55,13 @@ For pipeline projects, GitVersion variables can be accessed by reading the `gitv In a pipeline stage: -1. Run GitVersion with the flag for _buildserver_ output (this only works when run from Jenkins, specifically when the `JENKINS_URL` environment variable is defined): +1. Run GitVersion with the flag for _buildserver_ output (this only works when run from Jenkins, specifically when the `JENKINS_URL` environment variable is defined): ```groovy sh 'gitversion /output buildserver'` ``` -2. Add a script block to read the properties file, assign environment variables as needed: +2. Add a script block to read the properties file, assign environment variables as needed: ```groovy script { diff --git a/docs/input/docs/reference/build-servers/myget.md b/docs/input/docs/reference/build-servers/myget.md index fd9166aa52..c2d34846c2 100644 --- a/docs/input/docs/reference/build-servers/myget.md +++ b/docs/input/docs/reference/build-servers/myget.md @@ -8,18 +8,18 @@ RedirectFrom: docs/build-server-support/build-server/myget MyGet Build Services has built-in support for GitVersion and is encouraging you to leverage GitVersion + GitFlow to produce Semantically Versioned packages. -* Create a [custom build script](https://docs.myget.org/docs/reference/custom-build-scripts): +* Create a [custom build script](https://docs.myget.org/docs/reference/custom-build-scripts): we advise to run a tool like GitVersion in a _pre-build_ script, so that it can set additional environment variables for the actual build script. MyGet [by convention](https://docs.myget.org/docs/reference/build-services#Pre-\_and_post-build_steps) automatically picks up any of the following file names as pre-build script: - * `pre-build.(bat|cmd|ps1)` - * `pre-myget.(bat|cmd|ps1)` -* Run `GitVersion /output buildserver`: this will cause MyGet Build Services to + * `pre-build.(bat|cmd|ps1)` + * `pre-myget.(bat|cmd|ps1)` +* Run `GitVersion /output buildserver`: this will cause MyGet Build Services to set the current `%PackageVersion%` value to the NuGet-compatible SemVer generated by GitVersion and apply this [MyGet Environment Variable](https://docs.myget.org/docs/reference/build-services#Available_Environment_Variables) wherever it is used during the build process. -* Ensure the build script has been pushed to your source repository root. Done :) +* Ensure the build script has been pushed to your source repository root. Done :) :::{.alert .alert-info} **Note** diff --git a/docs/input/docs/reference/build-servers/octopus-deploy.md b/docs/input/docs/reference/build-servers/octopus-deploy.md index d802be9e62..bbc38962b4 100644 --- a/docs/input/docs/reference/build-servers/octopus-deploy.md +++ b/docs/input/docs/reference/build-servers/octopus-deploy.md @@ -35,15 +35,15 @@ depending on which build server you have this approach may or may not work for you. For instance in TFS Build vNext you cannot chain builds to publish artifacts built in one build in another. -1. Your CI build creates the stable NuGet package +1. Your CI build creates the stable NuGet package -* Do _not_ publish this package into the Octopus nuget feed + * Do _not_ publish this package into the Octopus nuget feed -2. When you want to push a package into the Octopus deployment pipeline you trigger the second build +2. When you want to push a package into the Octopus deployment pipeline you trigger the second build -* it will either take the package built from the first build in the chain (your CI build?) or rebuild -* It will publish that package into the Octopus deploy feed -* The build then is _tagged_ with the version, this will cause GitVersion to increment the version + * it will either take the package built from the first build in the chain (your CI build?) or rebuild + * It will publish that package into the Octopus deploy feed + * The build then is _tagged_ with the version, this will cause GitVersion to increment the version This means that CI builds are _not_ available to Octopus deploy, there will be a manual build in your _build server_ which pushes the package to Octopus deploy. @@ -52,14 +52,14 @@ manual build in your _build server_ which pushes the package to Octopus deploy. Another simple option is to tag a stable version to release, the basic idea is: -1. GitVersion is set to continuous deployment mode, so main will create `-ci.x` +1. GitVersion is set to continuous deployment mode, so main will create `-ci.x` pre-release builds -2. CI Builds only create NuGet packages for stable builds -3. You tag main with a stable version of the next version then push it -4. The CI build triggers, GitVersion will always respect tags so you will get a +2. CI Builds only create NuGet packages for stable builds +3. You tag main with a stable version of the next version then push it +4. The CI build triggers, GitVersion will always respect tags so you will get a stable version -5. The stable package will be pushed to Octopus -6. Because of the tag, then next build will be incremented and will be producing +5. The stable package will be pushed to Octopus +6. Because of the tag, then next build will be incremented and will be producing pre-release packages of the next build #### Script to create the release diff --git a/docs/input/docs/reference/build-servers/teamcity.md b/docs/input/docs/reference/build-servers/teamcity.md index da4e7aad01..371bd3106e 100644 --- a/docs/input/docs/reference/build-servers/teamcity.md +++ b/docs/input/docs/reference/build-servers/teamcity.md @@ -9,10 +9,10 @@ RedirectFrom: docs/build-server-support/build-server/teamcity In [TeamCity][teamcity] you can create a build step as follows: -* **Runner type:** Command Line -* **Run:** Executable with parameters -* **Command executable:** `GitVersion.exe` -* **Command parameters:** `/output buildserver /updateassemblyinfo true` +* **Runner type:** Command Line +* **Run:** Executable with parameters +* **Command executable:** `GitVersion.exe` +* **Command parameters:** `/output buildserver /updateassemblyinfo true` Then in your build parameters simply [add a placeholder](#nuget-in-teamcity) of the GitVersion variables you would like to use. @@ -61,23 +61,23 @@ See [dynamic repositories][dynamic-repo] for more info. ### Output -* We update the TC build number to the GitVersion number automatically -* We output the individual values of the GitVersion version variables as build +* We update the TC build number to the GitVersion number automatically +* We output the individual values of the GitVersion version variables as build parameters with format `GitVersion.*` (Eg: `GitVersion.Major`) if you need access to them in your build script. Being system variables they will be passed as msbuild/environmental variables to other build steps ### NuGet in TeamCity -* Add a dummy [parameter][parameter] to the project called `GitVersion.NuGetVersion`. If +* Add a dummy [parameter][parameter] to the project called `GitVersion.NuGetVersion`. If many of your projects uses git-flow and SemVer you can add the parameter to the "root-project" (TeamCity 8.x+). You need a dummy param because GitVersion creates the variables at runtime, and you cannot reference a parameter which is not available statically. GitVersion will overwrite the dummy value. -* Then setup you nuget pack build set the "version" to +* Then setup you nuget pack build set the "version" to `%GitVersion.NuGetVersion%`. -* If you do your pack in a build script then you can just use environmental +* If you do your pack in a build script then you can just use environmental variables because teamcity will pass them through automatically. ### When TeamCity -> GitHub can't use https @@ -101,7 +101,7 @@ Sorry ## Guides -* [Continuous Delivery Setup in TeamCity][cd] +* [Continuous Delivery Setup in TeamCity][cd] [cd]: https://jake.ginnivan.net/blog/2014/07/09/my-typical-teamcity-build-setup [dynamic-repo]: /docs/learn/dynamic-repositories diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index 7cf48b6975..25cdeb4bc9 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -31,12 +31,12 @@ found that is generally what is needed when using GitFlow. To see the effective configuration (defaults and overrides), you can run `gitversion /showConfig`. - ## Global configuration The following supported workflow configurations are available in GitVersion and can be referenced by the workflow property: -- GitFlow (GitFlow/v1) -- GitHubFlow (GitHubFlow/v1) + +- GitFlow (GitFlow/v1) +- GitHubFlow (GitHubFlow/v1) Example of using a `GitHubFlow` workflow with a different `tag-prefix`: @@ -342,6 +342,7 @@ The details of the available options are as follows: ### workflow The base template of the configuration to use. Possible values are `GitFlow/v1` or `GitHubFlow/v1`. Defaults to `GitFlow/v1` if not set. To create a configuration from scratch without using a base template, please specify an empty string. + ### next-version Allows you to bump the next version explicitly. Useful for bumping `main` or a @@ -527,9 +528,9 @@ merge-message-formats: The regular expression should contain the following capture groups: -* `SourceBranch` - Identifies the source branch of the merge -* `TargetBranch` - Identifies the target branch of the merge -* `PullRequestNumber` - Captures the pull-request number +- `SourceBranch` - Identifies the source branch of the merge +- `TargetBranch` - Identifies the target branch of the merge +- `PullRequestNumber` - Captures the pull-request number Custom merge message formats are evaluated _before_ any built in formats. Support for [Conventional Commits][conventional-commits] can be @@ -635,7 +636,7 @@ values, but here they are if you need to: ### regex This is the regex which is used to match the current branch to the correct -branch configuration. +branch configuration. [Named groups](https://learn.microsoft.com/en-us/dotnet/standard/base-types/grouping-constructs-in-regular-expressions#named-matched-subexpressions) can be used to dynamically label pre-releases based on the branch name, or parts of it. See [Label](#label) for more details and examples. @@ -657,16 +658,16 @@ Take this commit graph By looking at this graph, you cannot tell which of these scenarios happened: -* feature/foo branches off release/v1.0.0 - * Branch release/v1.0.0 from main - * Branch feature/foo from release/v1.0.0 - * Add a commit to both release/v1.0.0 and feature/foo - * release/v1.0.0 is the base for feature/foo -* release/v1.0.0 branches off feature/foo - * Branch feature/foo from main - * Branch release/v1.0.0 from feature/foo - * Add a commit to both release/v1.0.0 and feature/foo - * feature/foo is the base for release/v1.0.0 +- feature/foo branches off release/v1.0.0 + - Branch release/v1.0.0 from main + - Branch feature/foo from release/v1.0.0 + - Add a commit to both release/v1.0.0 and feature/foo + - release/v1.0.0 is the base for feature/foo +- release/v1.0.0 branches off feature/foo + - Branch feature/foo from main + - Branch release/v1.0.0 from feature/foo + - Add a commit to both release/v1.0.0 and feature/foo + - feature/foo is the base for release/v1.0.0 Or put more simply, you cannot tell which branch was created first, `release/v1.0.0` or `feature/foo`. @@ -726,7 +727,7 @@ Same as for the [global configuration, explained above](#mode). ### label The pre-release label to use for this branch. Use the value `{BranchName}` as a placeholder to -insert the value of the named group `BranchName` from the [regular expression](#regex). +insert the value of the named group `BranchName` from the [regular expression](#regex). For example: branch `feature/foo` would become a pre-release label of `alpha.foo` with `label: 'alpha.{BranchName}'` and `regex: '^features?[/-](?.+)'`. @@ -830,29 +831,29 @@ Can be `Strict` - using the [regex](https://regex101.com/r/Ly7O1x/3/) or `Loose` the old way of parsing. The default if not specified is `Strict` Example of invalid `Strict`, but valid `Loose` -``` +``` log 1.2-alpha4 01.02.03-rc03 1.2.3.4 ``` +### strategies + +Specifies which version strategy implementation (one ore more) will be used to determine the next version. Following values are supported and can be combined: + +- Fallback +- ConfiguredNextVersion +- MergeMessage +- TaggedCommit +- TrackReleaseBranches +- VersionInBranchName +- TrunkBased + [1145]: https://github.com/GitTools/GitVersion/issues/1145 [1366]: https://github.com/GitTools/GitVersion/issues/1366 [2506]: https://github.com/GitTools/GitVersion/pull/2506#issuecomment-754754037 [conventional-commits-config]: /docs/reference/version-increments#conventional-commit-messages [conventional-commits]: https://www.conventionalcommits.org/ -[installing]: /docs/usage/cli/installation [modes]: /docs/reference/modes [variables]: /docs/reference/variables [version-sources]: /docs/reference/version-sources - -### strategies - -Specifies which version strategy implementation (one ore more) will be used to determine the next version. Following values are supported and can be combined: -- Fallback -- ConfiguredNextVersion -- MergeMessage -- TaggedCommit -- TrackReleaseBranches -- VersionInBranchName -- TrunkBased diff --git a/docs/input/docs/reference/modes/continuous-delivery.md b/docs/input/docs/reference/modes/continuous-delivery.md index b8d306fb42..a1e824ca91 100644 --- a/docs/input/docs/reference/modes/continuous-delivery.md +++ b/docs/input/docs/reference/modes/continuous-delivery.md @@ -19,13 +19,13 @@ you have deployed into production. In essence continuous delivery means: -* Your code is automatically built and tested -* If any of the automated tests fail, the team's #1 priority is to fix the +* Your code is automatically built and tested +* If any of the automated tests fail, the team's #1 priority is to fix the build -* If the build is green, the application can be deployed at any time - * Ideally the business should make that decision - * The same artifacts which were built and tested should be deployed - * That means no rebuilding everything when you are deploying +* If the build is green, the application can be deployed at any time + * Ideally the business should make that decision + * The same artifacts which were built and tested should be deployed + * That means no rebuilding everything when you are deploying Continuous delivery does not work well with GitFlow. The reason is that you are required to _merge_ to main to do a release, triggering a rebuild and a new @@ -55,19 +55,19 @@ to deploy to production and it is a human choice to deploy. This means that GitVersion will build **the same semantic version** until that version is deployed. For instance: -* 1.1.0+5 -* 1.1.0+6 -* 1.1.0+7 <-- This is the artifact we release, tag the commit which created +* 1.1.0+5 +* 1.1.0+6 +* 1.1.0+7 <-- This is the artifact we release, tag the commit which created this version -* 1.1.1+0 +* 1.1.1+0 Tags are required in this mode to communicate when the release is done as it's an external manual process. ## Resources -* [Continuous Delivery on Wikipedia][wikipedia] -* [Continuous Delivery, the book][book] +* [Continuous Delivery on Wikipedia][wikipedia] +* [Continuous Delivery, the book][book] [book]: https://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912 [configuration]: /docs/reference/configuration diff --git a/docs/input/docs/reference/modes/mainline.md b/docs/input/docs/reference/modes/mainline.md index 10b8ccf22e..d88129e418 100644 --- a/docs/input/docs/reference/modes/mainline.md +++ b/docs/input/docs/reference/modes/mainline.md @@ -34,13 +34,15 @@ and the version number which will be deployed are often different. This mode is great if you do not want to tag each release because you simply deploy every commit to main. The behaviour of this mode is as follows: -1. Calculate a base version (likely a tag in this mode) -2. Walk all commits from the base version commit -3. When a merge commit is found: - * Calculate increments for each direct commit on main - * Calculate the increment for the branch -4. Calculate increments for each remaining direct commit -5. For feature branches then calculate increment for the commits so far on your +1. Calculate a base version (likely a tag in this mode) +2. Walk all commits from the base version commit +3. When a merge commit is found: + + * Calculate increments for each direct commit on main + * Calculate the increment for the branch + +4. Calculate increments for each remaining direct commit +5. For feature branches then calculate increment for the commits so far on your feature branch. If you _do not want_ GitVersion to treat a commit or a pull request as a release diff --git a/docs/input/docs/reference/requirements.md b/docs/input/docs/reference/requirements.md index 91a2785b80..fd205ea8aa 100644 --- a/docs/input/docs/reference/requirements.md +++ b/docs/input/docs/reference/requirements.md @@ -42,7 +42,6 @@ If it is ambigous which reference (branch or tag) is being built, which is often the case on build servers, the `Git_Branch` environment variable needs to be defined and set to the reference being built. -[git-switch]: https://git-scm.com/docs/git-switch [git-unshallow]: https://git-scm.com/docs/git-fetch#Documentation/git-fetch.txt---unshallow [gitflow]: /docs/learn/branching-strategies/gitflow [build-servers]: /docs/reference/build-servers diff --git a/docs/input/docs/reference/version-increments.md b/docs/input/docs/reference/version-increments.md index dc58676a0f..27cf1d6b33 100644 --- a/docs/input/docs/reference/version-increments.md +++ b/docs/input/docs/reference/version-increments.md @@ -127,6 +127,7 @@ from the branch name as a source. However, GitVersion can't use the [branch name as a version source for _other branches_][faq-branch-name-source]. ### Detached HEAD + If HEAD is in detached state tag will be `-no-branch-`. Example: `0.0.1--no-branch-.1+4` @@ -142,7 +143,6 @@ you perform a default `git push`. Instead, tags can be pushed separately with their own command. For more information, read the [git documentation on tagging][git-tagging]. - ### Incrementing per commit When using the continuous deployment `mode` (which will increment the SemVer @@ -175,4 +175,4 @@ For more information/background on why we have come to this conclusion, read [continuous-delivery]: /docs/reference/modes/continuous-delivery [conventional-commits]: https://www.conventionalcommits.org/ [faq-branch-name-source]: /docs/learn/faq#merged-branch-names-as-version-source -[git-tagging]: https://git-scm.com/book/en/v2/Git-Basics-Tagging \ No newline at end of file +[git-tagging]: https://git-scm.com/book/en/v2/Git-Basics-Tagging diff --git a/docs/input/docs/reference/version-sources.md b/docs/input/docs/reference/version-sources.md index e58b7c4beb..c12adfd217 100644 --- a/docs/input/docs/reference/version-sources.md +++ b/docs/input/docs/reference/version-sources.md @@ -11,12 +11,12 @@ version should be. The logic of GitVersion is something like this: -* Is the current commit tagged - * Yes: Use the tag as the version - * No: continue -* Calculate the base version (highest version from all the sources) -* Increment version if needed based on branch config -* Calculate the build metadata (everything after the +) and append to the +* Is the current commit tagged + * Yes: Use the tag as the version + * No: continue +* Calculate the base version (highest version from all the sources) +* Increment version if needed based on branch config +* Calculate the build metadata (everything after the +) and append to the calculated version ## Version Sources @@ -50,9 +50,9 @@ Will increment: false For the develop branch, i.e. marked with `is-develop: true` -* Returns the version number extracted from any child release-branches, i.e. +* Returns the version number extracted from any child release-branches, i.e. those marked with `is-release-branch: true` -* Returns the version number of any tags on the main branch +* Returns the version number of any tags on the main branch Will increment: true diff --git a/docs/input/docs/usage/cli/arguments.md b/docs/input/docs/usage/cli/arguments.md index 059d1c385d..2013651a22 100644 --- a/docs/input/docs/usage/cli/arguments.md +++ b/docs/input/docs/usage/cli/arguments.md @@ -111,24 +111,24 @@ Double quote character inside of the double quoted `value` has to be be escaped Following options are supported: -1. `assembly-file-versioning-format` -2. `assembly-file-versioning-scheme` -3. `assembly-informational-format` -4. `assembly-versioning-format` -5. `assembly-versioning-scheme` -7. `commit-date-format` -8. `commit-message-incrementing` -10. `label` -11. `increment` -13. `major-version-bump-message` -14. `minor-version-bump-message` -15. `mode` -16. `next-version` -17. `no-bump-message` -18. `patch-version-bump-message` -19. `tag-prefix` -20. `tag-pre-release-weight` -21. `update-build-number` +1. `assembly-file-versioning-format` +2. `assembly-file-versioning-scheme` +3. `assembly-informational-format` +4. `assembly-versioning-format` +5. `assembly-versioning-scheme` +6. `commit-date-format` +7. `commit-message-incrementing` +8. `label` +9. `increment` +10. `major-version-bump-message` +11. `minor-version-bump-message` +12. `mode` +13. `next-version` +14. `no-bump-message` +15. `patch-version-bump-message` +16. `tag-prefix` +17. `tag-pre-release-weight` +18. `update-build-number` Read more about [Configuration](/docs/reference/configuration). diff --git a/docs/input/docs/usage/cli/assembly-patch.md b/docs/input/docs/usage/cli/assembly-patch.md index 704044e0fd..ef1a7b2f07 100644 --- a/docs/input/docs/usage/cli/assembly-patch.md +++ b/docs/input/docs/usage/cli/assembly-patch.md @@ -10,10 +10,10 @@ Description: | `AssemblyInfo.cs` or `AssemblyInfo.vb` files in the git repo and update them. It will update the following assembly attributes: -* `AssemblyVersion` will be set to the `AssemblySemVer` variable. -* `AssemblyFileVersion` will be set to the `MajorMinorPatch` variable with an +* `AssemblyVersion` will be set to the `AssemblySemVer` variable. +* `AssemblyFileVersion` will be set to the `MajorMinorPatch` variable with an appended `.0`. -* `AssemblyInformationalVersion` will be set to the `InformationalVersion` +* `AssemblyInformationalVersion` will be set to the `InformationalVersion` variable. Note that contrary to when using the [MSBuild Task][msbuild-task] the @@ -29,10 +29,10 @@ already exist. Use the `/ensureassemblyinfo` switch alongside `/updateassemblyinfo `, if the filename specified does not exist it will be generated based on a known template that adds: -* `AssemblyVersion` will be set to the `AssemblySemVer` variable. -* `AssemblyFileVersion` will be set to the `MajorMinorPatch` variable with an +* `AssemblyVersion` will be set to the `AssemblySemVer` variable. +* `AssemblyFileVersion` will be set to the `MajorMinorPatch` variable with an appended `.0`. -* `AssemblyInformationalVersion` will be set to the `InformationalVersion` +* `AssemblyInformationalVersion` will be set to the `InformationalVersion` variable. This can be done for \*.cs, \*.vb and \*.fs files. diff --git a/docs/input/docs/usage/msbuild.md b/docs/input/docs/usage/msbuild.md index 23c158ac73..d76398b578 100644 --- a/docs/input/docs/usage/msbuild.md +++ b/docs/input/docs/usage/msbuild.md @@ -94,7 +94,7 @@ are set and how you can use them in MSBuild tasks. ## Configuration The [configuration file](/docs/reference/configuration), if any, is read from a file -the `GitVersion.yml` the root of the repository or the project directory. Since version 3, +the `GitVersion.yml` the root of the repository or the project directory. Since version 3, the path to the configuration file itself [cannot be configured](https://github.com/GitTools/GitVersion/issues/3009). ## How does it work? @@ -127,10 +127,10 @@ Default sample: Now, when you build: -* `AssemblyVersion` will be set to the `AssemblySemVer` variable. -* `AssemblyFileVersion` will be set to the `MajorMinorPatch` variable with `.0` +* `AssemblyVersion` will be set to the `AssemblySemVer` variable. +* `AssemblyFileVersion` will be set to the `MajorMinorPatch` variable with `.0` appended to it. -* `AssemblyInformationalVersion` will be set to the `InformationalVersion` variable. +* `AssemblyInformationalVersion` will be set to the `InformationalVersion` variable. #### Other injected Variables From fda06e267b95fba76e59fa9cdb2e1d105cfd08fd Mon Sep 17 00:00:00 2001 From: Wendelin Niesl Date: Fri, 24 May 2024 10:14:37 +0200 Subject: [PATCH 115/544] Fix typo in track-merge-* --- src/GitVersion.Configuration/Workflows/GitHubFlow/v1.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/GitVersion.Configuration/Workflows/GitHubFlow/v1.yml b/src/GitVersion.Configuration/Workflows/GitHubFlow/v1.yml index b6496b4d1d..4b3a4c9591 100644 --- a/src/GitVersion.Configuration/Workflows/GitHubFlow/v1.yml +++ b/src/GitVersion.Configuration/Workflows/GitHubFlow/v1.yml @@ -24,8 +24,8 @@ branches: increment: Patch prevent-increment: of-merged-branch: true - tracks-merge-target: false - tracks-merge-message: true + track-merge-target: false + track-merge-message: true regex: ^master$|^main$ source-branches: [] is-source-branch-for: [] From 371f8394a67e6b6fb25eccc95d5c1bbc63c4e85b Mon Sep 17 00:00:00 2001 From: Wendelin Niesl Date: Fri, 24 May 2024 10:17:18 +0200 Subject: [PATCH 116/544] Update configuration.md --- docs/input/docs/reference/configuration.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index 25cdeb4bc9..2ff06ffe35 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -245,8 +245,8 @@ branches: increment: Patch prevent-increment: of-merged-branch: true - tracks-merge-target: false - tracks-merge-message: true + track-merge-target: false + track-merge-message: true regex: ^master$|^main$ source-branches: [] is-source-branch-for: [] From 57d134df7f6f57896de4ae9c0dbdeece4f597f31 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Fri, 24 May 2024 10:40:29 +0200 Subject: [PATCH 117/544] run Generate Schemas --- schemas/6.0/GitVersion.configuration.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schemas/6.0/GitVersion.configuration.json b/schemas/6.0/GitVersion.configuration.json index 3f8e0f3290..2665b5d251 100644 --- a/schemas/6.0/GitVersion.configuration.json +++ b/schemas/6.0/GitVersion.configuration.json @@ -337,7 +337,7 @@ ] }, "nullableOfBoolean3": { - "description": "This branch related property controls the behvior whether to use the tagged (value set to true) or the incremented (value set to false) semantic version. Defaults to true.", + "description": "This branch related property controls the behavior whether to use the tagged (value set to true) or the incremented (value set to false) semantic version. Defaults to true.", "type": [ "boolean", "null" From 7b06726b8ff6403e9d742812aafed445dda9ddee Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 27 May 2024 22:50:45 +0200 Subject: [PATCH 118/544] #3917 - update winget action --- .github/workflows/winget.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/winget.yml b/.github/workflows/winget.yml index 7fd925f7be..fb983eb46e 100644 --- a/.github/workflows/winget.yml +++ b/.github/workflows/winget.yml @@ -29,9 +29,9 @@ jobs: } $url = "https://github.com/GitTools/GitVersion/releases/download/{0}/gitversion-win-{1}-{0}.zip" - $urls = @(($url -f $version, "x64"), ($url -f $version, "arm64")) -Join "," + $urls = @(($url -f $version, "x64"), ($url -f $version, "arm64")) -Join " " - $run_args = "update --id GitTools.GitVersion --version $version --urls $urls --token ${{ secrets.RELEASE_GITHUB_TOKEN }} --submit" + $run_args = "update --identifier GitTools.GitVersion --version $version --urls $urls --token ${{ secrets.RELEASE_GITHUB_TOKEN }} --submit" "version=$version" >> $env:GITHUB_OUTPUT "run_args=$run_args" >> $env:GITHUB_OUTPUT From c37b1e7c3e1a5dafd2b665935466fdb7f00b05e2 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Tue, 28 May 2024 15:20:29 +0200 Subject: [PATCH 119/544] Documenting the git flow workflow and create sequence diagrams --- ...ntationSamplesForGitFlow_DevelopBranch.png | Bin 0 -> 40311 bytes ...lesForGitFlow_FeatureFromDevelopBranch.png | Bin 0 -> 39096 bytes ...amplesForGitFlow_FeatureFromMainBranch.png | Bin 0 -> 27925 bytes ...entationSamplesForGitFlow_HotfixBranch.png | Bin 0 -> 29418 bytes ...ntationSamplesForGitFlow_ReleaseBranch.png | Bin 0 -> 30157 bytes ...ntationSamplesForGitFlow_SupportBranch.png | Bin 0 -> 43004 bytes ...amplesForGitFlow_VersionedHotfixBranch.png | Bin 0 -> 29961 bytes ...mplesForGitFlow_VersionedReleaseBranch.png | Bin 0 -> 30189 bytes .../branching-strategies/gitflow/examples.md | 102 ++++++++++-------- docs/input/docs/reference/configuration.md | 1 + .../input/docs/workflows}/GitFlow/v1.yml | 1 + .../input/docs/workflows}/GitHubFlow/v1.yml | 0 .../input/docs/workflows}/TrunkBased/v1.yml | 0 ...riteOutEffectiveConfiguration.approved.txt | 1 + .../ConfigurationProviderTests.cs | 2 +- .../Builders/GitFlowConfigurationBuilder.cs | 1 + .../GitVersion.Configuration.csproj | 26 +++-- .../DocumentationSamplesForGitFlow.cs | 85 +++++++++++++++ 18 files changed, 166 insertions(+), 53 deletions(-) create mode 100644 docs/input/docs/img/DocumentationSamplesForGitFlow_DevelopBranch.png create mode 100644 docs/input/docs/img/DocumentationSamplesForGitFlow_FeatureFromDevelopBranch.png create mode 100644 docs/input/docs/img/DocumentationSamplesForGitFlow_FeatureFromMainBranch.png create mode 100644 docs/input/docs/img/DocumentationSamplesForGitFlow_HotfixBranch.png create mode 100644 docs/input/docs/img/DocumentationSamplesForGitFlow_ReleaseBranch.png create mode 100644 docs/input/docs/img/DocumentationSamplesForGitFlow_SupportBranch.png create mode 100644 docs/input/docs/img/DocumentationSamplesForGitFlow_VersionedHotfixBranch.png create mode 100644 docs/input/docs/img/DocumentationSamplesForGitFlow_VersionedReleaseBranch.png rename {src/GitVersion.Configuration/Workflows => docs/input/docs/workflows}/GitFlow/v1.yml (99%) rename {src/GitVersion.Configuration/Workflows => docs/input/docs/workflows}/GitHubFlow/v1.yml (100%) rename {src/GitVersion.Configuration/Workflows => docs/input/docs/workflows}/TrunkBased/v1.yml (100%) diff --git a/docs/input/docs/img/DocumentationSamplesForGitFlow_DevelopBranch.png b/docs/input/docs/img/DocumentationSamplesForGitFlow_DevelopBranch.png new file mode 100644 index 0000000000000000000000000000000000000000..834d55c82fd210623d15f128e814793f1453ccc1 GIT binary patch literal 40311 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⁡y!;Jtt=OKoTp3{{o{?G=zGlUWGedH$of}i1i|p8;Q}J2~HUpi~1)4HR0%A5-RJ3a()yGqNCK=2=W1Ow^v{hYm8U+P)#Tc93*c>*&c++ zs(nN$`FewrsVsO34vqCmpezG{#Mb}gA*u7Q6$meW77z>J>fn^I%S$kWgf12K0Qwsq zLK=;#k9;7vdzX_(-{4s0lp77B+_X76=BW-c<>?I`&^`>^5b>=ryk69s1F8%sKWoE9 z7BfI@TmdV6)}G@R_yd3&-gx0kqRLMW_67fgec5S3ly*SwKSx~oFe8Fzuu1^J84(XW zf#M?K0roSFV$Gi#F{{wC)_Z=YXL7LM$g|ztQv6$$!Y>o}J}M`=zDZja9UL34p0TO8 zV+w9bSNE@?FF8VINUz5_)JCtq%TNr~HRhlEEig8c*4Umm9uyevabFFZL!roZ?u8nr zcM>n#LA-6~c&V)_JaV_<#yw?ro$s>A>Tcql_2&sWg{gYR-S{e@@fA z@CNZQi$H1T>5OVmzh!UiMtXN7>l7#+a$&$!ZkIR^Ort<4{dZ@}>FJTd zLcME4lrl_p3y#n>ejSMGHb zA||`LyOw#wJXRr!>slg>+uKq|VihXpKqTXuD16>~8LN=kzx|35^XU0q1T(u(oVJO> zI#2y^73ary6C;BlXLqPf$=26(NxdOK{Lr_3%(TvS-`GqqAb-%B)lqb)KcA zduGMR;LZMBjr=xR;o5MDcK??mkM$8{KSxGrqZekzI*)k#E*YC{%}F2gQMq=XjZU8z zqoQzm^v5<^7eH=MA-;KGjB{9&6Q_E03hHNuJ-p7%shJah)~Yo(rcO6L+Nv`(wR`F- zmr=zPCEYi*_*uPShrIB{QxgXq9AcZo9SpL5s84^F+Gv1-q{NGlr{r7J>rqN>*4_!_ zS1pRMr9&AhrmQrx@WmflbnZlc?1nk1b++b)74?zDq>yTow#NM4U&hZphx6AE0_;<7 zB8v9CjDNTG$&J*ltW{#ng0$K4qj|Q?AZ)S%dHbH}OGzOP zM)&V4EL+@J>=s%u_SPR~hORDfhC=l1+uS!E>yH?&-e&cq%tt|(WoI0DYQSFZO@e7_ zme3ow?sPXFL*IWck_oo#96 zzeVHc)Ymr0L{}V-z(dR3_Scvn7~)Q!OjUrgQY)4`Ey}#~v8el#$i87$R4V`OUY_Ex zBCYDj;s&A0{cDAj90xuvan-%V{ZJ?A$%NmS!CwW=*GK)!uf$du*t#Gp7&GXJJPtXu z4yUV%0H3(L-_Wt{?&C|B9)0|?LElDUv`LWsGI6v)UtgPe2w|_`rMWc!VA&N8J=0GcRO@zmkP{cWHq*QU4-316H9Orq6ju3r zV2|m4yKU0zq4%})>5m-wbuxFkrFLmg8zcyXt+U;@r)YO9+2T=u>+cUeAHRj|ymT~g zo=&Rc`O(%bl#+Xu`@3B~#6LW%{8rTOoO-bL_)rD;v5bx3K((`cv$fMoT8%=6F~7!X zeu*OE(W%q6Ck)s()N404M(i=0X!Pl&3YCVwKL!CdU`q#YcILrc+3v25h-U`7E3&s8 zxcfdO@N#(h@)XFS?_Lg3ftUk*Eky&eZD#gRi?XG}3eNY`OPZDY){8YtY#3LXFxMsp z2Hr5w%BN>bp?u)P^yehU)^#lh>UJd(Ls2`PfJ_%_K~je{tIH;j{w`36wY#O&+(@e~ z5Z_pOhW+@yqum=QCGXm^%GS@5`X$KA(PqE-^{;pO<>d-kVXD_}CsM3-H9nfkQucpg z{bpCC@aA-V!?tD7Hw2s=WyHidX{al7fT~(m_;CC6G;M>6DTb#|sq$j$*;J1ZNUg=v zR;^qq{P-a0y&9IBm(0psZaH831cl+{m)_tQ*1?X1;MXka1{-R;4+nRCvOP zYbbV^kVJ-F)s^Q~5K}wLbt4iU36?=LwY#r&F00yQp8^Q-$Ii zjb;MuKI$kb`4_1hb*vDS=jd2hUt0P*y_9(+@1SpFh};g96jPZKYDxL@?QYZ^ZD~!a z-Kl!N#tqUt8b2NH%b`Xu<52w;**-z~kTNSz;j z%ANXK?X|5nRseXesoQoF+ zXgos?grz=d-3u$E@BIqZK=JX_ExN<|wUom7;+I?xMH$tOE4|J?3#2?H(<-O)TLt$W zb~^IetzG6V1Dy~1h=jNUp}ZG4CxmR_+WAxsj(~Tg!^%0& zh7XLT={3r7T@O8xwh7K3=R|pU4)_LTzxl!|$pHK>2H#68!ME?bD?`*I3-%sd6T49G zwhWgo@~Qvoa7#LRlG6q@!MAha?FMde?BxrCS%kVgs6IizL&DekpbQR?txvV@^l637 z`|EberoGM@`~D$AWWnZB`35NQSNjt!l%jZ|-MJw4tykHHn3d=_SztfNA1OLnIvbs! zqs3&cnzVp|VNb_+R6NzW?bwf^JQbMHw literal 0 HcmV?d00001 diff --git a/docs/input/docs/img/DocumentationSamplesForGitFlow_FeatureFromMainBranch.png b/docs/input/docs/img/DocumentationSamplesForGitFlow_FeatureFromMainBranch.png new file mode 100644 index 0000000000000000000000000000000000000000..ab22724ec96ce420cc32e7bc9ac7dd246f77472f GIT binary patch literal 27925 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

srWP9?Y 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 Ct>Cl( literal 0 HcmV?d00001 diff --git a/docs/input/docs/img/DocumentationSamplesForGitFlow_VersionedHotfixBranch.png b/docs/input/docs/img/DocumentationSamplesForGitFlow_VersionedHotfixBranch.png new file mode 100644 index 0000000000000000000000000000000000000000..9795f0e49156c23ff8945678bcc96d7de1b3a24d GIT binary patch literal 29961 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.x` (i.e `support/1.x`), to support minors use `support/..x` or `support/..0`. (i.e `support/1.3.x` or `support/1.3.0`) -### Hotfix +![GitFlow](/docs/img/DocumentationSamplesForGitFlow\_SupportBranch.png) -Depending on what you name your support branch, you may or may not need a hotfix +__Notice:__ Depending on what you name your support branch, you may or may not need a hotfix branch. Naming it `support/1.x` will automatically bump the patch, if you name it `support/1.3.0` then the version in branch name rule will kick in and the patch _will not_ automatically bump, meaning you have to use hotfix branches. -![GitFlow](/docs/img/b035b8ca99bd34239518\_support-hotfix.png) - -### Minor Release - -![GitFlow](/docs/img/2167fb1c4a5cf84edfd8\_support-minor.png) ## To Contribute @@ -89,5 +102,4 @@ See [contributing examples](/docs/learn/branching-strategies/contribute-examples ### Source -See `DocumentationSamples.GitFlowExample`. To update, modify then run test. -Update +See `DocumentationSamplesForGitFlow.cs`. To update, modify then run test. \ No newline at end of file diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index 2ff06ffe35..57df2661aa 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -70,6 +70,7 @@ strategies: - VersionInBranchName branches: develop: + mode: ContinuousDelivery label: alpha increment: Minor prevent-increment: diff --git a/src/GitVersion.Configuration/Workflows/GitFlow/v1.yml b/docs/input/docs/workflows/GitFlow/v1.yml similarity index 99% rename from src/GitVersion.Configuration/Workflows/GitFlow/v1.yml rename to docs/input/docs/workflows/GitFlow/v1.yml index 78406ad6a1..897bb5e169 100644 --- a/src/GitVersion.Configuration/Workflows/GitFlow/v1.yml +++ b/docs/input/docs/workflows/GitFlow/v1.yml @@ -20,6 +20,7 @@ strategies: - VersionInBranchName branches: develop: + mode: ContinuousDelivery label: alpha increment: Minor prevent-increment: diff --git a/src/GitVersion.Configuration/Workflows/GitHubFlow/v1.yml b/docs/input/docs/workflows/GitHubFlow/v1.yml similarity index 100% rename from src/GitVersion.Configuration/Workflows/GitHubFlow/v1.yml rename to docs/input/docs/workflows/GitHubFlow/v1.yml diff --git a/src/GitVersion.Configuration/Workflows/TrunkBased/v1.yml b/docs/input/docs/workflows/TrunkBased/v1.yml similarity index 100% rename from src/GitVersion.Configuration/Workflows/TrunkBased/v1.yml rename to docs/input/docs/workflows/TrunkBased/v1.yml diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt index 78406ad6a1..897bb5e169 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt @@ -20,6 +20,7 @@ strategies: - VersionInBranchName branches: develop: + mode: ContinuousDelivery label: alpha increment: Minor prevent-increment: diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs index 754eb114fe..a07d47d8c9 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs @@ -50,7 +50,7 @@ public void OverwritesDefaultsWithProvidedConfig() developConfiguration.Increment.ShouldBe(IncrementStrategy.Major); developConfiguration.Increment.ShouldNotBe(defaultConfiguration.Branches["develop"].Increment); developConfiguration.DeploymentMode.ShouldBe(DeploymentMode.ContinuousDelivery); - developConfiguration.DeploymentMode.ShouldNotBe(defaultConfiguration.Branches["develop"].DeploymentMode); + developConfiguration.DeploymentMode.ShouldNotBe(defaultConfiguration.Branches["feature"].DeploymentMode); developConfiguration.Label.ShouldBe("dev"); } diff --git a/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs index 2cba13d408..e29e124530 100644 --- a/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs +++ b/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs @@ -44,6 +44,7 @@ private GitFlowConfigurationBuilder() WithBranch(DevelopBranch.Name).WithConfiguration(new BranchConfiguration { Increment = IncrementStrategy.Minor, + DeploymentMode = DeploymentMode.ContinuousDelivery, RegularExpression = DevelopBranch.RegexPattern, SourceBranches = [this.MainBranch.Name], Label = "alpha", diff --git a/src/GitVersion.Configuration/GitVersion.Configuration.csproj b/src/GitVersion.Configuration/GitVersion.Configuration.csproj index 9047c953a2..17d9bbd4c4 100644 --- a/src/GitVersion.Configuration/GitVersion.Configuration.csproj +++ b/src/GitVersion.Configuration/GitVersion.Configuration.csproj @@ -9,16 +9,10 @@ - + - - - - - - @@ -34,4 +28,22 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs index b72cb67ccf..0666031706 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs @@ -148,6 +148,91 @@ public void FeatureFromMainBranchWithMainline(bool withPullRequestIntoMain) fixture.AssertFullSemver("2.0.1-1", configuration); } + [TestCase(false)] + [TestCase(true)] + public void FeatureFromDevelopBranch(bool withPullRequestIntoDevelop) + { + var configuration = GitFlowConfigurationBuilder.New.Build(); + + using var fixture = new EmptyRepositoryFixture(); + + fixture.SequenceDiagram.Participant("main"); + fixture.SequenceDiagram.Participant("develop"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.Repository.MakeACommit(); + fixture.ApplyTag("1.2.0"); + fixture.AssertFullSemver("1.2.0", configuration); + + // Branch from main to develop + fixture.BranchTo("develop", "develop"); + fixture.SequenceDiagram.Activate("develop"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.3.0-alpha.0", configuration); + + // Branch from develop to feature + const string branchName = "feature/foo"; + fixture.BranchTo(branchName, "feature"); + fixture.SequenceDiagram.Activate("feature"); + fixture.SequenceDiagram.Deactivate("develop"); + fixture.AssertFullSemver("1.3.0-foo.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.3.0-foo.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit("+semver: minor"); + fixture.AssertFullSemver("1.3.0-1", configuration); + fixture.ApplyTag("1.3.0"); + fixture.AssertFullSemver("1.3.0", configuration); + + // Merge main to develop branch + fixture.MergeTo("develop"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.SequenceDiagram.Activate("develop"); + fixture.AssertFullSemver("1.4.0-alpha.1", configuration); + + // Merge develop to feature branch + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("develop"); + fixture.AssertFullSemver("1.4.0-foo.1+3", configuration); + + // Bump to major version increment + fixture.MakeACommit("+semver: major"); + fixture.AssertFullSemver("2.0.0-foo.1+4", configuration); + + // Create pre-release on feature branch + fixture.ApplyTag("2.1.0-foo.1"); + fixture.AssertFullSemver("2.1.0-foo.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.1.0-foo.2+1", configuration); + fixture.Checkout("develop"); + + if (withPullRequestIntoDevelop) + { + // Create a PullRequest into develop + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("2.1.0-PullRequest2.6", configuration); + fixture.Checkout("develop"); + fixture.Remove("pull/2/merge"); + } + + // Merge feature into develop branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Feature branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("2.1.0-alpha.6", configuration); + + // Commit on develop branch + fixture.SequenceDiagram.Activate("develop"); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.1.0-alpha.7", configuration); + } + [TestCase(false)] [TestCase(true)] public void HotfixBranch(bool withPullRequestIntoMain) From b0c65f7f6030bcc674f0bd88a219e1e500822679 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Wed, 29 May 2024 11:04:40 +0200 Subject: [PATCH 120/544] Update sequence diagrams --- ...ntationSamplesForGitFlow_DevelopBranch.png | Bin 40311 -> 43483 bytes ...lesForGitFlow_FeatureFromDevelopBranch.png | Bin 39096 -> 38792 bytes ...entationSamplesForGitFlow_HotfixBranch.png | Bin 29418 -> 30951 bytes ...ntationSamplesForGitFlow_ReleaseBranch.png | Bin 30157 -> 31720 bytes ...ntationSamplesForGitFlow_SupportBranch.png | Bin 43004 -> 46516 bytes ...amplesForGitFlow_VersionedHotfixBranch.png | Bin 29961 -> 31561 bytes ...mplesForGitFlow_VersionedReleaseBranch.png | Bin 30189 -> 31798 bytes .../DocumentationSamplesForGitFlow.cs | 116 +++++++++++++++++- 8 files changed, 111 insertions(+), 5 deletions(-) diff --git a/docs/input/docs/img/DocumentationSamplesForGitFlow_DevelopBranch.png b/docs/input/docs/img/DocumentationSamplesForGitFlow_DevelopBranch.png index 834d55c82fd210623d15f128e814793f1453ccc1..124c10cca2fee0635bd87cb9edbf2536b6d0e495 100644 GIT binary patch literal 43483 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 JX0P7W{{tjWdjbFe literal 40311 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

cDHLyP_5)=B$*=z{KRdvFbRo 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%0Dq1`$V@MK~QCwsB2a~}f(gXzkv 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 diff --git a/docs/input/docs/img/DocumentationSamplesForGitFlow_HotfixBranch.png b/docs/input/docs/img/DocumentationSamplesForGitFlow_HotfixBranch.png index 166377d902939dd80ce801119ea0f85dfa155073..1a0109bf9a7d5c075a971a6a2e08b1d56a8c844f 100644 GIT binary patch delta 9135 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 delta 7561 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≫*DJ=VMX5!>VgG6CDsoHPo4HtGam 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 delta 8270 zcmai4cT`hLw+|v0MFAB7=~qE|QL5Bjr6?fML2Br|2m(RcK?OmIC>;WVQk5=EYC!2# zdMBs|0-*_n5|X@$-fyk%t@YM=`R62aX6EeK<+p!(pZwgX=wG9F$xI`1>I4i1o3R*j zd39M9f;k)9_j%xE?cw9=?gpa(clx4$iJ=5^8t+|JAxKdV~*x8AWC6@2c&j)&(^A_cKh*$^~ zWWIi>IlP6Qa5*9BqDx$TUrWSFSMa4#=R|=U&}mIcx$zeZSI*0e(waNkpd-Ayv3TSCD($=L73QhNNwK|)QlOM6=NEBLOo(?_n^41c%80(m~c!SF+* z`Im1;tdp(H!%Z#nkDKO63$(XtiT>s6dpP(s6Ry@>?=`)sCr#gTwV7>%1_JlX+0v9) z2xV=uF6`bcff&rsd`5oUlraAS|0a*JfBHa2x`Ew``G(~)vt3%GfRdNVN)gJHqu!}= zKK_Z&v3td}H(b@c`ZP|yKeLPKT%Nrhmh>zdIXi7{m}0b45&F$!N;t3YugiJ4trrvT zmfPf)JVoDgvsVbnqBdyl5W&6~pQ32Ty<8m1;Pu$xwb%oG+30M2<&#T!$cq+E$E6N>W>tyb1T?cO2Q&f;D$F zebHFrr$s4>nzkN{{(Yy*!p>Xyd3lGkyo!o*$AQp8X12q43)i};o|$S_NAa{PSFSAe zqa0_6VvSo*4DR&Q%IO!}bBE^YtKE1+MMY&~jDtTBySU>dorigNcvRkB_w_ANbaCec zA6{OyfU_SO42z83)u*`H>|}n9>?k_&GOVd+B&6>uvE1_mkclvZG%agPcM#eva}m4w4@4B#--Ip6cSsSn?%>Oi=5=Y%a9C%#Y917M3z9mqUgPq88-z;tSIbI+uB9!mRpM3-F zgGuFR?uBS=uy~RShF9+YY=*$nPjV@oZ$4NQ1e*aFR;($=SBPM-@v*7VsMMT=i)(Xz zor9UV7MMxObzJ54ZPeZTwzjtT_zPEOO3Z4P`qCIUIXBkUP|3+gMn?Ii#9>Xb@UXDa zclx&-JZC>%57_ zS1Y8t;lZy(^)aGp(Nkps(#C3YtG?&)50`KV>si4B8#TqVr6swv^v2ZtuDxdoIo`f4 zh3>Yi_xj$UeL+C1wn6Sj&1GqSm*xq@nQzbd1!Zg?UG!o~HBM1H_ROh;C|p@7XYx&a zXIoo_JaS-T)zlp-8EbtLxyzULUFIvSg!4qrXq0!Um`uWmJRnWbA_q@Hmy}Y39 zy|oE?PKDI;bQcNI?#js6GBNmQw*ow|@a{dvCvBUs+q50kY?5rbs(|`3LfS;6U|KAAVDFZFn^Wp$q@mC2<;y z$i#^W3C%P<+NpM($nXp6jN?jyvmeG%}WfU2t~_+T=ITypTbVN&(w$r z3;TR}+}$jSXbvJCA6hmAXl2}Z^=mNCPb!5O?1_zRu)wS!<`3vO&SXj4M2Xo1 z*giWu`^y)dxsx)dV90kEZ#5CT+t0yc>;#Cq0N zaB*^Sa&U;O#zjUxNIz;#dS!JDI_Xn#P<%+qMVvlUj&7JnxMOdtscEdq|CBD|>RTsq zRU%<*n?G%c#a#HO46oI#NE%EQ!7970t*tjs)k04E) zVHUNsw^zM=TT?0A&!}#(hSQB0FSfqOoV0#Q>%gyEQ%$j`f^p^oO?FnKKV-n-_XkWyA`>EsL%8 z0-=Q;M1ANkNXKt2TD+8|)pb8}@La$V# z3rGi9dhw3=j;}fJ3r{KE!Psd$gDc=TzB=>x22#Ha{vDtSkwB8}?^rRC9tD7&ID-0X zCrFSCW?)!(T^sC0Uh$}q0G6Kw%OUp~bV^D}LiLY6ML9>rST%FW`lPu>@cy5(U^k!R z3QoYV(B=?s|A+;S&KD3+L?8T8#%{{~z5&LKd5K4aSABg2a=scZ#A*<{D=P(^XStLz zPMny;D6fmHOv9rZo3wg%N%L}wfdjc)TjvlMUT0@|QYAJ_HKgQhLG!`Fn}`k1@nYu$ zUL|^^NxT@OSS*Y=Y!y0v8rhArwS{slgWc1JYQitJw1pg0Rl+nj7rXhm(A%5(tG}2L z>C6`{7!=&&$Rudgq)do3uay=)qitefV2HZsrk_lDu%r2I{nIDYlT?SjxIGD1j)MLK zacyY{r}eyJweEv$bkg_JXWc{@#9c?0R*U5>PuO86I~QlUxj!2fXIMO+4%da^-cyln zS6fBeH-2Gfr|@V{aUB|NjdyMe@D){TSnC-Z>r_|UtKNm z6C6oFi@1%w&kOge5>G8aBjiQhAKJ@FN*=`3Ni^4QJ%98UH`^;kC?w=pu>Dcn@=V^N zB2hRpBu*FzR=T zy*7N{qkCFGV8>44 z=_}jt(eOI*U>P3zjH@xvrJNMU#b7xHhhg|T{ zvw6|kcQp%I9cB zo9z2bW`ijhep&tcHQ@ioJHYlqi)+FkTjpy+dchlFgw&WAzN8=O>d3(isjpe~d>Vrr@fK!T zrVdN`t5@Sitbi}nHcw(=*Uv??1hC=S&KhvGPggJJw#N#UF=kvqD8kCNIN)ckg#F2Vmr%DGc)e%#~C#Q8|&1w?y zYqax7$Fs1L&l8Q8`iBOKeKVxBdlaVnva6Zj@pQzpabB79BbxzmIx_m@}r4V;tb)bmoz>y@Ysn z#eh?H2X&D24VbTnhPH{W^bHw2y^<0#Kc6>CU@ouEZ!@H9PG6dmXdM zY{-XK6)Dw!F_rHA{L)kDDYbI;iaYY3?@>f;0qH-dGVF*1em#aO>&YW0vgl7tP%%M^_XL(U9Pw)6~S?aRQ(Xt;v#y(DgT=g}kCeR@3Q zKYNo|@;=wY>a%asm&14@v^$2Q>R~sYOE}jK2^jDWEVw{3XT+16)qK3jX^_ zU;W=#1CXfdD?ok+vlrfgB%Pf=2OD!E0iJ#J>QyPoWwZ-}fxcwl4BX$S9?&;1NPPWz z{y>^rE#{>OY8-dO!ciGWkm>l%6)3Xh)-i9CBW7o36#?^~ZwlO6XazW3IgpT)#K^|h zK#&%{{&4ATFxvRY7$p7}Rw@HC7xsy2RYjmE$v{MKm!IAk_~S;X|>xpU4YJJmQ)!O<^cxQA})bQ|dkVnGn*B-@@R#Gkfqz2xMOIch@5Qdq z5%hpBZatyVvDFTlJ%iQeLK0dN7j=~_uBFp{zD zd{MGnmh>0-FlDKPqD(;NHApnDg_Hhk332Y1Au>PI0g9vgvkG`P^&c(>ya&VqMN8&a zus!MUt^XrkPT((-n1?e&14^G^G8g?_<#KqEP%@ql4i3-4!_{9i3K{XAA=i*0$NnZ4 zE?weh5HE5G_|cQJy}dm@Kkwz`1)RzPqyitGs%|?C=l+GBI9O1;Hzhz|)*JgIHQxZZ#ntK2pqwGY5gn9=CaNFDJT3R9^ zB8CnP$W6;3w<>_${&bCdz9RVBs;Zecygu1jtEjXAJ0&?EN{Nf>jqQTsDsg3PqO7+V z8f956uG$q!r^W04)6*K#&7g?bv-B~H$9@GqXpQ=tpoW%BK&yk zbCvVRty{OAJbk+J>sO*v_>UhyzIVi)X^g#FsQsATj&xNsS<-zvaTyM)W&>fGOrRiZ zovS5Beg#~}O8;F6{I-1I$;Q1B7W{;8n<5ossF;#s={hhOSytd4;EBNK&TH7pY4LM^S?d(9;pi3LH z4E!>VD&SO%EeWWLqITfc{@R4tjT`rw)PQE&+hq+1WY2@N$aS62JhP3hZDw}J?*QXn zALRE0?x;9KWQIh|y9Ne4W@_A1L@nfeS99;k3JVt(7Di^Dgz>eQVbUwm;$AyT{ZF1e z0f^Gk*2crf7ZDKwN+l}BY}^dFItvR6Q&CaTp@4ykD6Sl>YMgD+;8&oXwWI`^AX}%% zWtwHswkkEDM2y^_*?db@*MgJ(S~TJD6NpAqfULm(<=|v(0ZBK`{)q$%g)yRj5vszr z)9A>U1H@-fZ*Lt0+&w!03%Bn{WY}ma)XjNzmgN>Glqgy%v0|Ndf%_hyfTD+SIzopj zG{7no*p5Od#h82yOlOSxZYxESroe$pAD#a&E^7j({)&xLb^G zp`^z)Yk?LK_1R10?il50D#5tSQe+j;;8)U*C>qAq`ZKyU3%r8`1q0Bsf*!Cp?u}KF z-l|5QIB{aU3{iG<)+J~IBqQoqN`C;c&>FA(T0!>44gcO`5jjr8U|-+p(NgF1-VrWK zG0+cy$kC$XLd)ad&PzLq>5cmI>DHMzW=6)m|L#9dn7Q57!~kKFc_9$1`2Ed6GXxp^ zaf_WzpfyKki?C2ma*Q!Tw&YG9IrebW$Y+2Xy9+UlW=;JnN$i)@SzJ<{Q&OFGFu1p}~Qm;KDoE2O=ZC(U@)+%5{IdMu$VLID?<9mGv2P`izFu01RO;^>emDKtz zE-GN4df(i>o;*zL=Er#ViPF!6qdaN%)wS;<2ShyAOT2Y3$*61qjo%35d7704B0i22 z9>Roga4<+^03*LwsMYWXjoVOj)8J64AI zr=~LKFe^5ZYQGX~o*4&My07Q$)t7o2gmB&d{J^SPnI-5#EH-P1VSB~UijRIlpFAOX z@1I}3j_+&NTOA&5c11EvwG9I5R8(A`WjI4CSQ6W%u1=9W*S$OA zxtaJ$Kxi0;yroj@#!_$n*$ArB_iWVt^1;5VsI1vU7LTG1eROp2UD;cvKjnT{)cLrT zi26rwUUozkB4oJ_jRywqm^^^vd!_X9^Ri9*dQ_`q^-veDt>J6kXE>z>hjI#ngHhIG zu{Y6Z?acMzyoifDzBT3LHxv{;{VT3oEUUWon!*t({)3zcG&|z=RKt<`EipUWN+9D( zbcq>qd$CjY{M9B&UtC^_rRLqc?=uMflr0K-n{cOJi)VMPGQF{Bvpss_VacB>YErpG z8oV=5`qsWx5lb2~hDOp1d2yTYp;}L9rClg^Ibd(q1cTmLE@KTEjv}}=7AGeYRWsek z`^x6sSI0{rp*c&`zA;~%ky{Lhyzcl>zvpnWNFZ_RtG=2apE}JjZar&~R*(?ehpIJT zTKZA)qYgcCWp!r|t>>uvaaBJ(Y8s;e8}C}oe1Cq%Bn`Lc z?zj8Xd9MKcDzT-HhP~wB=%nKau`oZ@3cvM7fS_O8BWlum^6Om86ZfV)^avoo3JD7S zMV0|gJYsTwCt{I~JU*DpxjhI)D#{}_TwdvuEpR8xYJHlv^F@-z+{?_ST#JU24XCJ? z7$*5k73gs_rNhNkfB|Nn>pJsCf1NxjfC&r>4@dv%afn{NGl^#9)(F1+zH!fRZH|JH zlk>)da>-=v%=*MEl828E8%N;%lPyPko}^V{B&xP`ESF2rv{LPs1vD1yDA}RVr#~G3!N7(@n6~UTc4JIlQ`BgOo0}aY1C6h z67wxhi|=?8cN7v zuVhE+p$`(FwMM6*tkEo$S5N<<-QIB(&4fF*qtHs#spWJqllE_}7J0noY=Uw?R>Cp~ zWuNAAWo^Rq94BXm|2EC@2Mugr%bE^c#f-&@O4B;xvOuS2lV#ZdH^Yysu6Glbfw7_gnZ4PJ7v)=yd$=r`D&ZKSb#)34 zUhW__X4P+c(``1JT?;vGV{QCinzb~DNKHvGHZoGHI;XqAXlxnA4GX0PFAPEcCl~xM g7Fc1)G1q;Hmycre-`)cM4S=bu-cu>PW%cBL0LhgYT>t<8 diff --git a/docs/input/docs/img/DocumentationSamplesForGitFlow_SupportBranch.png b/docs/input/docs/img/DocumentationSamplesForGitFlow_SupportBranch.png index f39f064813bbcb2bd4be87e1641b777cbf10dc26..e38e6cc065181366dc5e082acecb8a09cbbcd96b 100644 GIT binary patch delta 26320 zcmb@uc|4Tw_dh;LNek7877~@IB&4zq5-DLyMcFA)2-(+LmJpH3&JZHWzDD+~Qr0Xf zOURO)u`lyG_YA$3&-?xPejne*@AXHoG0S~l_jR4?oacF-=ed?@*JTc^d&<0Jqu8c( z7z{?&Uhj!NhcI&c?zI~hrbasVEi8?VFf{OqO?Z~Fnn@cUlT&R1oTy-c5JKeSQouvK5{>!rnSiWk;dCd3s%x%+1&UKPU5=d4#~ zPD;O~`|7THmf=Fz`DiU?a*5c%19c2;G+Q^Gmkmk3P51dyB4VBKvhc~~%+GuZJ_+-l z!p(EWGhtGF!adRK8*2qIyP_7vds1%iXf>7Y!M8pL3^5gX^xA&E)4rEp>Cf^u*qyv@ zUUj_MQ}o_|2d`P}7Ln7QUD+yK@(*R?mYz?1w-W!PxaGqicnRaxnrMsJn&acJ{7gB`l0Rq zLiZuI*udwKORt{k2~oWPwe)n~r^XMP=xQUzRD(y=Vt2{E3pUbl+;D<~OEw&R@J#dE z67P`HZMCYFJiZ4WD>=K|#VwMKSV)Ui<*S%15FX{oHKp6ApKzY!*%TuZM#H+Hr$$vN zRazE<(;gS!Tvb2EfQYRGuS*)Wi{MS%a3r|*p8C${xTi+3msd1Qd>J;0T{w2((ZO+i zm4*1C)lO#uNm3|gPh4r31kXO#j~~ddoeWxnhmI2iJGPqm%ezl{-jo_Rp)?%1ENb#_ zKruR^wDN1%N%v|$xttlN_32yUwDR{JEyG}(F&CxJUbAT%Zr^evBWK;PBEoKOy`JTI z#E}*DBPrU>k~B2yOE+;$bd_2LlzK3^8Zy0Bx3WZ%XFcNPzVaHe96Q^{)24d$+hF|Y zy{8LeqI;o4?WnN=3FUxpF&Xp1 z;`WPJTv#-Cxb(wn^vC>o86zXB&}A`?uV1h2*cOOaGqfuW{_*3-U}JnnNIjNBi?NF~ z?^Yql#va0Qdoq2ftrfJnCb@9pZhqbJ#jzr!tN5WTyW=(a z&l@9~9B12Al$EV|Kll?Qmaieb7p$zZ^=g~DiF{9{A_nR0*44O7@ek4)a@BwO^r^VG zI7uxh)Mk50ZLLX5vPPwHYuYW3%=eCqGj(;B?+SBrc1Kuu_y^98d}m>0{V|xa^CAb) zXTG+%Ldb3%iMH#vF6X5Up8l2K9Wj~tYZ)k~`@ zLXf*Rj~fui@87?_G4i^MOoiu;gYOFpER~0TXZ)I@9iVq6O0tv6Cx2D1U$-vX=$md$ z=CNm`Wo2cp)(LOkJPWiQZslN)+{DO8?s8=$wOCtPHWeOe<~@4!8(dmLqy6D}Iv;$$ zVk8fq#%^5{uI>_^L+k40%i9qqrbE`wC6-E8uX1y9`>_hA+s}?BT#XMELO2f}mJva^ zOX%3c1@wI_mKzBY5#iy-3oCw>d34(JJW0D%CD*dJuy7CQv>$!f?}se)=tnxvbl8vK zm&VK5YQKf+Um`dYF$46ZYlPjRA(D&iM=f4A-HWi)bewL=&COj|Ui3yHG{LywmBRa? zgNF{?hLtK>`o$}==fl{T&CECbgPfc{+S_m4x^?|n04trQrskye&5Sz=Ha2rG??)e> zecRcjZ@5C1&{;rUqNWSW=Zh{Mi4{yS3Wuq~M&Tq07!3X_Ius0QpYRex`6~Jaq>ELE z{W-h|(~`=(D2lEcI@zl~fU!pe8Ef9Y9b1vpw$7;#y#XxiY-@xIv5O8f^KgnEt_J2< zhlNXEw5?$Wuw&r=ZDBKGWYT;;Qe^ba+aYAd?x%auG49Uywo_d2JrZqxV=y3ZYD<7=CABs3_1im6e#Bk5a;0GYtt6oiHVmFdNR{Bj zDmR8`aPQiEg-YLM+fCnlrDQwXZe1HGL1rh`*cE)L=Dl(F>LDFdNA7Y^Q{Fv2$;4?{geMt_5bue4@KT zM@Oey|EyTyU_e%+&&=2_k=mC91e5BdW%gc6ox@DVU$D|CF*S};)L5wh;5;G+j zAcjnSIQTu=SRfuJZS^83sG6nv)2F_gh)eL`m4)SxVl&X$lboF`pPT3*$GhIRk!O+M z;Ha$J{OVFrtT#P9z5UGaJF}k3>7f>u<2T0Vdi<&r6~cw!5xkR_agBDH5}k;gWV$n84At!bA6kNc}sfB3My^OBg+#fx4+ zK`M9d+&Op7)xzv^F#kg5;Uh-|z6f@HH8>T0CQdP;?Ji-rz1LPvlWyC4WJ`;}_MA?q zp^=g0*&=d#IB`2SIN601WI6E$GxAu^Y#SK8MHcSO8}Y}F_i{2HJJzvBfUBvoksA>b zy50Broqmmavn{Qy0%}FY283`COF7l%`Ps$F%JZ()ckkZaQFOaH(M$Jf;Psv_%riCMd5K%n-QbY#%eTw0S(o@tf(=Z@Vz$cboFBPT5QO*TdtAl3|@(-rJg zW=RiLV}yPrOn#}OvuTWTN5*1Jgy^qG<+O7~hKS+wz_75eEV6HN4-IsmIndVmUZo1_b2)9^ze|P7ysP#e~dPs|8M% z*F@OUG5R);neAuyGe6InIo)RXSay4Rs`VJh1Z`icFh*Y|UI#4grCyi(>}EhfmrRgw!^6c52n^ z@Hgn_=ve5N9FVXb+&gior>6%ZJua}*wm%{^HWmVU9agac`|H=P$%^SAErOzA+FM*X ziCm5?Y9cd(!M=-%y0N%-MIcuM#k#8jva)b-7_W~Z>LrmT+u!H#eoP0Jw7qvpX@O8MNr`6Neg0j z$*l8*>c)72R?hthhhLupxXsPY2kCKxUbPZr-udX@(qBl}z&(QJyZPnW*`Xi5-t{|4 z*pY-H5al|}t74_da!Y4ck$a8I-ICg|QBjfHckeEm80@T`6xp^7L7tDDG>!7B>HH8* z_Y#K*8=|);6y%@uV`!g?JlFf{S3qE($O!lFq5Q_`Al|Vb?;69&$w_K<(PJqsFu%c^2dP+)X+O7WHunxzZHfaL5^f22g=6e#8 zZ>}S9atrf=jpUdqHp}Ky8MsH=E;&t91oV;IYKp8q_00FXq1d-L!8)GvsEey>h1PF? zP7Xa!1h?)_=4;1Je)Dda4-OM7I@+{qas71oxsb85;y!LfF7SC^E`eGBq zyiShMw~36%<-{4Yb@P|>6$I?Np9sEjaBxsbR##K8{@I!~6?VqhalGWp#xc%yoTn`6 z!b}Qr#O%4N$HS(;XfVa!&>?UhJXq0r$*m<SgC8C3xQH3jg#8trg@~Sb40d?c@t^ z5>?gJi0IM5{x;m1-^WoCG}9XK*kxTWtS5VK%kt?j!}Jq}qh;mE>o;!QEmWuf^>x~= zT_*cPYkOvkw07;>Y1bdITv`^8@;*IJs|Xn+orTN+lix@VVgeY@Sse;Hk913y^eI@UwZh(>VQjrm5H?Bha0LMKj)7C&5%Z^!!k*P9eA zo6RQQ{nFC=vFJy^Vk0bWA_OllFOAFrYZT4wtC$b&nsZZ_?|n|#xNYwtJ?U%Lu1QHr z>FRbTrWD$NnQ97&>lkWrt0X`1^_>_W-z_#*c=(d0ki&RmB&jC7G#YdD&8yFZ|xZpWML(c{`rC`X`h`q0r6Jw&INsJe$ zz{+l&w)MS0u+N~NpnYNo&ce@0w8QKBZ@Cat4^{^TJl%v27&EMxlx{INMaS^<3jH0Y z2w`*E`eEq-19|M7zNJ3{;AhmI zm}=^;fM=hWZn%W-E&senL7&5li%tge=8sq&5-}@YC@OV+3H!-#!s!a%-G}H)yLIxa z+6EMC+Zu856p1$FB>aK2A3b-DFn+A;o0&LQaAt8G0NLW$4UZlHSWXqygYRqV0i68= z@4x@F_Q~6_`C#pab?`$>bN6!e>Pr&s>hJM1YrlkxV$IuhrLTefba zpyf|>2=%(7FJOo^0W`%lI35<3p#O&K@WR6H3JWz=N1Bt=!1*}X*yN_9m_W{CXqf0Q z3mA->X)^>(v$TQ&$C_|qCnqPlR}ZFtH+3sFTI*AuMTo7Y$}MI_`uzFI`KkU2Rzyol zsTKFYhm3 zzD&w6GBVz^{qU4Szb4#2uxPH^8#(K`@uRhgk?H8_9 z&fSXeT0Lf>>)ZOolRm95x8x+A3L%@8qChlKIg%pcjwMt^`h6WFNh@kc5$js*_$_SwkD_4 z8{DZSjtmX$+p#0bM&r7BdLkj!1RQb~SHUQIz$ujJf&AN(P9#dIS8Qv~2^q$_ckj~D_)njPw8~xa z^ycf=ua}gRbT`#}_<*MF7P*`!58UWK;y&X~->9!rhoD@7&|Sidz`$cnkDZ;JA-l}V z$`bxA=^4BGl)+P*lCdK4%7+gh`ib_6#|_D4vekoI+Q^?v$oev9T1iuOamW7sP9`2D zu5@J6T-~Wa>oM}H51vWOviBkd&JxDgW8z`Aqz(}!Blp=62DH?X6S`7M!leD~4tQ`V zNb$RIrz@ro>-sJyHu?MeKRDs$;Zapy{#IReQjt{T9cJ%WFKw=CGCdw!s|FG!Bx<_j;{@i+~HdL7i|$B~JNJ$O43*uF7` z^=IUzy3?m6BA@^2^-}|Suv~VWM~_~7r3A^;H5HZq-d@j}>PQ4|Fe$28zkB>7#BIjA zmgc8q)Ph$|=zht}%#_`4Tkb-9%3N*~5fmh7F>v|&AicTf5p#x2roDoO&2NE2Yed-! zyV4aqDJ1N}hKa?TLCdfAvcP%7cj|Q(I*N;nZ!F69@5WHs*)>s>yw zd-@9debQ_oiFTY2?niG|dcsa>X@$oL*&>+c66`!RHMMQ!Uh@F{Uuvn15ET>_o`(ro8Hn+F#K_)(Cd8}=LJr_o z*)RN{cO<7XkTEgXrrxLEa`%aD6COM6lP4!b^ocv>!MZT`pX&H4H*X?)cJI!$98$(I za?Z`qgS$^`M8<;aN?-!LgjZY{#h)hod3xIPM_BhBWCusm@W8-ez?V%l_SeYw9P2i0 z<$hV8$&6a@eEZq^=9-y`TCZ!x7vDxlbMo^~v=ptJMy<{bJ1q_SDfpn^{T~K)S&-dW zjQ)5xnbIdh=0px?F@1r3f92}cTi+&t237RDy`%G0X6CiLLWI21mhiK$k4p;yGywdd z1?7H+N+C4@I0&dG(`rN&%NrWP`(pg32fLlEZ9Qt(;5CnH6^b1=pbh*(pS%s{Q86*G zJd#HFai_U)oq3I|cZd=keLW~?*M*e0>I#dAsf#PWRIizxe8tQ{fyCkr!I`i9$b1I*3sUf^rBEP zIpZSA5TcA5N=TyoA^3e1BBIV3L5ap$AHe}(H?HLm$7^!vq{aD!Fv>D+$QekV%fq_SXIBT9wIzg|#DLb&3%+6EMBM&Wj^ zU!y7!@aB?el!7bdG4|h@q`Z1tu_!Z7gDJXhin_x8;90JkB<+KXWqhvv9aaV)!YIC882U+ z%@exwdH3C{UEIpCadD8r|7^=LY>ZQ||D6!uo3F2@r;%rIG4F=Dx|mL>+aF07ZiFPh2dP~uDRtcx~si}M% z9A}f1XWIncCMII9ms}9mS6VWq?T)|5QB{7dN0t|jz0O}oHmItpA%Z3yVphX9(xxAI zc+4uw_xAS#Ln?UYOk7;t3H98k{tpxZn2N|A&GeHG7SBgF4^8VQ%`Tv0iN)7U*Y8pR~OmERTZ`BR`eOH;wir;X-bM8 zFza-jl{t@`fBfXkp+m8Px7O8l=zO}EmPNiWV$RhX(Z*0y6^rYNT{LI}N6W;@>cFcl z@Tdd3z|s=w9lRZ3D3ImQs`V3q?e2&43z#LUCOMJnWwV~^wq@S+^74WrPfydivFEiR zb3fo8VG{;)78d?)K!* z$4{R=b#tSAw$5=UR!I^CZ{R&r+lg~JwH;=;0Kg++CABKtEE?D^>bO#?81=stG7}Q+ zw&z)jkR`b48u=#*n!o#B*sNBzC^HBf*(f^IFSsrwlTxYE*577_tQ&YBKR{4Dv;q7O z46!aNm`~^~ia+oG#GI4Y3)hCueZB08TmDEvb2c=KMqO~Ph|>e~XRfp|?4aY^l4loN zl5S4}eu!%`T!K<=DXG~@qP6?NowD?h7q=98Qt$Ek7@fsC;=DzVbAIn347E@uwG~a*ISN93qMYq_MwzimT=~IXlk6_z)Y88*ab7CG8VYZ^E9 zsf-p$JSfKa_4bxyah=bT$uoV(3C;Hhjvv1vW;`($r?P^KHoxn{ldsw2mbO@H-ybbP z8ts(woMvUoTDslK`}dFX^ZO&VjsYu|Zkukn)mhP1ZNORGyI~^qbC{sQQac?ZgIYnK zHU5fB_Kef!nyTAiQZ5Q#Y3!xsKlfC{pIV-!nK*4_H2Lf>!NSf#N_C|wM_<-&zvhHW z0JSiIJXx{c!MM^%p7NU8xuurJQK?Xz+i;1jz95|!{FJY^2cMGDE;KzmRK;>U7|PC2 zHVPA(__>88QHJ)oMquQ#$&`la+M@BV=NO*|Sv!sW>T`WizFTcRV3)VjRd%D?)Un@L zF%T0RekX)9OrJeVqt>bJc+PymV%g(rym%ZL*||r(q}6)xcl8lovDqJFe@)Io-x?q# zv|dn6+ z{zy_*Ny$U9?R~$Ju?N3NjEpA=z0*3|DyH`d7ECrZ)!uiSjZ{ftYl^h6Jn@*mqicfR zl_e%7faQepzA!_X=Jy#>S@vVog660pwN@W_@G@%zF~2+iVCt-E6|OgE04A^z;Ebpt z@N?C~BgaB{$z|kRGe#zs+Mwjw+1cm)!mjuUg`tmga{~p7*`B|0I&Vh4VES&=^J2yN zB7vPJLc%}r%%|3y8+5as3>PC$jZF9No6*xJtHt9dq&}MLw=;0NakGDk-jzG$n8xuH zm+moyv(Iw+;~ue^*s$tfKbb=Hb##FIjLa)D7LLNAR4V^uoo_ZR|K$SnlF5ybLDj;P8H%;z+|JY4G{V z`()|D2Nj>9fBZlM=T>|@Jugd0u=67m`|MlFYBcof>pwXyk8a(vWhLhKJ4O3$_D-Tk zrU6mPEG4+F<*j1}=~HLB2yVamho>d$H`;97$6OTiyS8Eadxxs1g@KQUhdpdp_Ay%x z^5K)YE@@-B!+K(7lLfuK(i2IybU6i$on*)!`g8FOG~7OQ@FwKqvzt8uftA#4c}?GfMSpKr6xR-c$VFD84tVnmAB-bt!KlfqiEB z8>`iXUdg2rG{{gdfMQ0f;SP9>+MI+xR=pwx1ygU+Dm_w!;I=v$agLYYCPDJmnlH9H%GW>c-_Bwk2@h&ybWLGIt6Fdgs=Ytj3yN%( z8mHN<7D5dWq5K&{`!Ml*&U*+Z7b#x&VaEWyEBoI2!>;eMihLYHv(pwsi(CeqKF>3m zVA*%vM^@s)!=^Yr={|qh%{_W#|G4|JP8-|yfDqvohcfZO?qL3dBFo%{h>*S6#1cKW z($l+}o5%QCd`j>%yFty`^VZ?Sza-IOmTg zg0Nt}%yveb!O8f^^;Xla^_Jq{8e+!t$kRtQD-ngd%}A8+>J&X39fTpjGX4)k9!qwT z&Ml!_i*KTS7!jav^-E(g9kq_?Icx&H52o?*W!Q$dNUoN3Z3A*G_f_9}{9*_1d9x#b8XWHt7 z&Y4x7OHEbOKD965go!gVJAP^`yf8P{q!qA_ZfucuYMY$Lc8|3Vwxc6JVG}jVliW%e zw+YUi?GPDz$v1~C?)SmXBJ8gBjZT}3SA1`kb+aBsD69K<*h^6hJAb#9h_7g|j@s?N zi`#o)I=^ut2*N)#6h~EoiH0qUXy#nH=APl`L`StQ6fLL-I{fPI*Ss%ola|JHdb-4Y zi#}?8s2ec?WU8gHqIx~=#>-s616`vxGvYF{9Z`m#8s8Bx>j~Rm8o<#}-=LT|yrd%#Oo6esTgQCt z_;InjjFXd-aq=NjN>Q>v=>w$>6mu7zgQ#z5dHNy^7Z2qfNy3dLY&YQ}tY$Ug8KOcp0Jw3gn zM~@PT#Fdp5&}JkjB{gaFXSHbVgF=~xb^GDwkDorZ<(Nbcj_Gxa?sXup{hT$DuO55x z;>BYDZ{p(4%l{S@7LJkiYu3`A8~+K~kp<95fVxBoS#hXmhC+OtJ>n8eq2p4=h;>{K zN`OTpiQLO-Yj1B4CGv3z3R(mIy!G(gs`+5bQ$_LGOTAJ$eE4w4jh}Td&&|)zZ}ii- z&{@&aqVo0p?c2QqwPIIQR9c!cxNXAN^ET|;3G)oeWCro|+qYY{ZvByGndn8gV`*v0 zYNSoC+e~~B8O{KCT6uZ77I~p%t%_k9O+3QO%fg>#)^olw(Q#og9%$zPKb>Hq>B%xi z3DV?bG>%#*anAUMF6#v^s>_OLY!Y7>hyjkpgNS*~43@CY_Xl?JG;mqK%mOLRH5w2a zs(SOLZSM!fzdhfY5FygkI*+|o<(u^SwUEPHs!b+nVzicjtB`0HX!~!W6&w7+`=F&D zd*Em zj;&aGf3;Sn!1U(@s_WXbx}m^mTW^*P+Lu6v1mDzbbp3;d|0QR-D8JM&Ju)(4-uHP&3wOY$ zrbLyn$du3&|NYG~MdS5r{BoLirrrojw1DV~WIC$WWpm(}E z57Nr!*>Vs#RJgK>T752e-9$q}19|8zQ?`9$ENCqc451nOmqO-LM5kF5TLUsZIywr& zZ%98Mla`K~8Exm*jn2z!Bi-XPAli=#H&*ejmIN1^u)qX26$%08{7IQ!DhPBLk*u`SWKv#R8;MRYjiZSN>U`x zxH)`*+FNO9X=YK(ipX;=1(1cjJ|A=U-aXY+ZJK_UUxa0c)8a@Zc?lr-{+BOb+S=Nx zASs%9Fhy%yAb*U0%h#qRuQy#A=uoC23YT~MUv;JTUDTZ<9R&J>zt@c>T-KvC2-s<0 zE!tT37yyXiYat}t|Mn`Zz?AIn;6-bxBw8Wy`fat_xL3p!)x|hSl!%v@X zH`4=t^upu)Pw1T_sT-6;%NmdCUB45h!}afN-FN0Ki>?d%_BCHoHApYcxOH{i+bDbl z$l-wF-mzmx11mcl8yh=2GWtVU6Hnrxj0pj|ocW4vDE$&9Xbm3#TbG)e3b*!WftUg; zgnQU)hg`5Mp)+R!W6_ySHN^%nsNB}mJACNSQzm$3h;;X`#$YBn_ca)o$-$IqFa@%D zVKa61P%z+}1vObT=%U#| z+jwg4w)Hg55QDX=HgDNNm`Qm5UaX##8UQhP9pMRD(4xtru@$ui2W2j3W@$ z)zlJ;Y7A2f&ghnV=8xuGdiy*e;ILFlIPt*II#FP10FD6P&@e%d#rwZ_5v!DN5BU1T zMDqs^&in08DykX(iIk}%sZLK+v9pWWn650%NAr9hrhf+B8<^>%c2ZCwA`l3TLm=I? zwzhV~>wE^SL_8s~W;YG`d_ppW*Vo=qgxIVi7Dpr`I=lF{HqNo!hZuvWi68L#4>D>B z&mD!c2nY)D4sJzq&0+?d#Ft5pP}&U@e*_RThzgG&5A-75D0Hxulq?S9QTu#!y+0G| zTN14iof^wpSbv&w^vID-n>Ry&`J`FO*RNmUh6iPRhdT=Fe}7E~mskr|i7S9OzF6@gHN3%EJFf*gD@eaE-axybJNLY17Y9-- z@{eG-9KH2P#I$rIx!)D2=O%+wMp5v6fPa;~_R+Nx>>RwjCf(&;hk)mIzUU20e;h|F zhKabi8Akh@8K!I%A(CjLo=`$b=`%1C3T0OhkP#&xL0XUEL~t+|5<;~=bQ5^p9{{5O zk`LnilY=B_sA$T`J&uo$FDfGUetd3dXgJ*>Y}Q@wvq#{)=;v_ZtLm9XY`4yygG)LK z^q>QWAFcHiBqS%-eEbNN&&(AO5WWImYFk7V*Xj-ZsZwT)xFA&6kv~jtOvkt%i0rRL zPT-k9DH1>z3|0z8 zTB0T_4s<)rg`%DA{NyhPuK*7C&or8^pf#H)ocy#jpu5YLFJHeNu%d9{#EFJd5CT6b zur3R?q(lY4>^~{cEwdDAec+!9L_pkoZjl_wr_Y8$GmMZ8p_KuB6^;eZg;0SzNYm{l zRzm~k54eX6gQC}217zSmDC&0J@KzXH@-_wRpco{^T;0JB1xty=B;uaJIi3D|lOqPlXwPyy?%slq?9<3azC_+C0<< z)1I1PW%hqnHbVYe-ROTQ8&QBN-QfQ(B_m|DW<=RNyZ6FX|6eOalx@m)ilG79r_Q7U zOfPV8nmx3CW;*ru_#FrvnEl*XQNg`&;c-Ph zUNN{Es2f3_4Wq7LZvnFa%nS*4NihOiZ80 z;wK*w2TE%e`o4ti+O-RU#8!Ix9V+L~pMS;#4~3u0?(-)+U-~Q)Q=n!_KOt9M4t$< zii>MwqlZ%AZtVKk$h1RVq)h76;JrAz`Cl&@1-h1rtC3 z&{lkWj%#Ud{+(hDL1vG@9UJRlVe`0LgVgl^O+;8aKr;-I*SfN@gQrfBUIl5M%mDhK z4r{s}4PvcYghPi9CtQ0I8XEfh_irf6L#i^Al5zXvv*6(1Sy4}S=&1<(u%Qv3X5O!u zhGp5q@d)XKT-%}7Uv}$^8$V!mP$BEP0(!$_H(}ct_KOV+4kjSWzyd&T7B`Q#dwIFE zx4jf?d9;l8+xeF54C~Q(3mc^mkP86pgA{oBgof?~C54Tx?ad!p5dF`Vx^Dp>MaRGz z91=1Q4JH)VUuI{R7sDEh`&3;mBM+%!eOFR5 zYh<19#jA@irIqFu78+1BDH~-9^!}#IsEixGFNSb}xaT$s{MPY3WMeyb3&CH3wk#&5 zYuB&qMQ=rzc{PoOm)RDkfrWRP&F|E^eftAQmCd@P(HMc^@m5Dd?!cAACJ{YTSd z)KeG)?tHFWA>%TK&i0%6Y$ypAHg|Azgp`Zjewd#k!$QHYZynakgI!=P(?FlwS&hA_bzLe0YTjqsv9(q?AfUeKkXV6+H&dJ8f!%vyx=|F}MYbzlLTI8}6#r zpQPf{H8iq#Vf)!YWexNi%cJ>Ykce~D4&2!v3C%R16H`uXsw`yd2Y(G2>=w#WyWPxL zSX_)0cT~0i0^%w7Pw>>K+xq&|0(NVmE3YKPsp9c2kT16R#c6FcY(bJw&#W*k1Emag z_F8Jj#5bh8g9apOlb;I!2M!DjI4v)DodmQuIsLD2#>BnbXCqsu!_*VSJwFN^^P{4Q zp6_XUf5A^EoZe zfuhUol~RJwlP4qf!RS2^8jNovwvF!4ArO-mY{$y)g7Dlzjgw9fxFhK{LNbn_kV{^X zKiWW|2nhe_Q@%T&gW>hvP{u7=M9sQs_Z?o_`+2Duh2Swj?-&nCXFwyMRy=g_VR5+&U`VSns|ThwTQ)RVWBY zlm1p|NX{u`5Xj3Y85PVoh!Z?OBKmJE`X5|L+$H?PTT8$Q`V&afGw`TS&X;Z6OkI`X zT-;j5|NiLJI5eVSjH#=xagZoUVdK#Z;Xedo&~&YZ*1uA$3)H!M`-2pN>5eW@2kq%RHD?>3e^j~SFQKTXEgmvj(m?&f5cIAc;^OLC zX3*6cYlsu(Wh9~L&$q*Lj$r;SW@v%(LEF;Jo^9qN1_*kuEF#?$ndclc2l z5x6)dAEs;@>dt~|QtC5k;l!EB03m1)L{)d_dl(ofTmn>4 z(U|ZmsZ)n_+wit(QD!yYgP~ATexPI=2|xby(dxPb9eqh9J10j1dS$vpi;E@G4xIRe zC5N6i?C$OcX{he4TadjA8ntfUwd>dDC^0--T}!L8sVP=M5828|fvHdy(wHgV!ux)_ z?i^!;1XB3!oh@is8v>&FD*f2Wooto9Z27l8?tF&<2EF_fw7x=p1|*%J?Af+$TSEo^ ztx5~a)4ni?XbTEBzB*{~@dx_q>pN%?0MV$NDsv75lpDl3-aj1^(NevLH_$yA8c&GD zv(!xnJXjPC${Wzb=fz#&l51evEohaNm@>ju3IkeK|8`N`xdx!RTRAW0R z_vHLkIhH_cwSCKEkt69c;q8sIQi#6DG%OCVR4u?XQj;9YdjDTS{(%C8OcQ=dzDH|O zpbD4w^BoOD4k{fC^3Xp-6L>JH`NdaKof!2iXoC+*R9d6*(!VU)>1$hC9>fKx5TJcO zR31{JFe@$&>S=;hdEQ6!_0O4k(Jr3Ue7AxbX+y&y^IE*%?GM|{o+~8`zYFf7qebFY z>y-I!8Z*)g3SXe0vX_IV`P#GR=$DB<`B_iXdLSbPO1bPHeTxvaMr&uT8@Fvn zwr$&G3}mUv8vB-7M117*l{D08Gt6Lro z5`UPC;a&e7i6X0n#=ocxX4QuE=@}V3g-yZG9(4EA-pVcb$7|tx3)-8INe9^qr}W>7 zucZ&VZAZW7_{ILUO5pV;aDT7feuo;Y-D>KHr_mpzN2oL`bQ+);8W;f7?WjZ?Wzre! zN`J{#a?SnE6m73s1{7b70=f2o3OCUow|&M$*&kM>4yEO^krW* zep@&)Kw(xozO$xv>d?`;ClHztimxPD5e!6a#-o7jD+xpECv|mokUZb$#8v{)XTDmV zU3El~S~G5Pub>b2q)p@ND>0f*^Lhg8pFW$!``ulmu8Ir)!M%a#^n|$h3Up(y5wKA> zA8L?5p!({Xb6!TqxGnP{`K3>UApLVdkP>)u4) z=lEMzWSGXWT1@{7q(N3d4IrooqSigog<50C@HATr>ed5if4r~>gfJ8*6QlFIYZr^y zT49%3oe)Y3g6XE1+W&=i0O(;BWS~dk>;GB70yKgMn&FK*F7ppIxf9=EWt01Z)wr}o;F?g248g}UrA zsKP<#67WstJ(W)Yi}Kz`?SiU9P%`h|I_laRuuy*8efr*ulCb@@z5Z~?eLZM6M<>d?2a<7ndv>Q;|^7o5rycuLV6J1rlY>h>OKpL>ZQ8kcd4AN77rwt`7 z&>z4_4f6{Na^y`9s@SYAwB+aKLmG0aI$}jYI(`Rqs%!4RLbJn0lP7+DDM?AEB^0Re z8?#{Z9}AxdblHnVSochLfq(!`vdL04?j9A{tzJd-(O^5HYtiLjbx&fo_v6RCQ#eRf z^V>id0A1Icwrpu!@r~nlL#tO9t2(T%%Pcfv$B+DJ_$GW_I2IsRs2NlLnTY@1(jtg( za_T~Vm+l602A%=^hbw6wCWZ6Rx=D#iW5iTR4ULG`n>9_T=|*(*2`-6V{>eZ_( zC)7V|VW4FB1dE&h5>E39r(s|d;<&-g;VHBG$`V+rk5S``dcD1ptqVwo%p#4Z?-fy zv0)1{)XZNu{T8>qZ~6eVndm;zDD_1sEF>H>Qub&YR!~M-nxrm2z8*}4YH-e!AA@-R z(W6Jlm^Qys+Ou!p_Za>X#!ai09p@gBn}Z}L^wBTKKLHX-)AOH2&N(r@RxTqZ zG7b)67g6)addr zFo~=d#Q)D|vRLQ6cGim*Ox`BD;P8+)ATioRF$z)T8#ipy3BP{*f>TTUsXCmfzp6$g z@wKN1SdS`;3jEf>oa_+&Gvp7ppvZ@UGf~5XdihI=>Img>;V`IkKr{}V{sZ6M!Dp0P z(+$!GvF{mj{;$F7b>;p~t=QGD$J#sR=0&_9CkJ>jde>?J6Y<+`Z1e^4Ffo9(TyR7b z+KK`)YyNc<+W)};WM5|-qi5eD);vi5p;&1F>d?%>KxQss1stE{I?pW z{0|La=U3x}7ov$C!bD~J?zlr6C^dWtX~2O=$p?6c*zKV$6d06EREUCqs0q-vAJSY3 z59ji{iG}4t-PJXJ{kMwaS~?B;H!Q9E-nVbx{&VdSHlhNP;$t*uJ|Eo0j(|+3nfmaQ z{5h4GDjcywa}&z8qP)E-PB2<){Wgj=wOZY>6rs||+NeNQUw;XDog5o8Jq>-T^a8S^~a;(!4w)JNBQdHk=WMUEt zCk{nMMk*z!7uaRxHj&ySJl zL+zjs7s!@F93lYGCMeM2h>h8LoKzG zX+-Ze9D{?3lI9KMM)1?8QOb$-Q@auuzYCI2Rh%o<3OVUG=7II z$G@Wrq013gus~OIJ>->!y!SBuee0_cW{3O5wm#z0D zU@ECtZFlZ8@HcQi3oDeGOifdB!A>X~Q!pH%1^II6*CaTa0utZ96~=Qj0vQk$aNN&g zP*#Ux?WtD!?G&FZvP@f{qIoXAD;BcWU^TBV8q~ATC{KVPq4rfW}*(h%U$@@|nYC$JG?*B<@g| zR;Y$i#h!y8?OOh;crzmum~fOx1pRWA8IWk5zLes|ObddA`Yz+9O|9vA-f2gFe4fIIIEJ5~-U$P@ zadCmJ*C^EC>} zDz}c15h=~8@}A)N5el!Ror2e~rj|_B0wX{K)nNqcC;w7jLY_f6X=BX{Q03+tWkgjB zSP;a%w^QiKBxcGWAO%}hKch&JLLh-%YQvdwsHB);r-o+HyV1=5|3L}`d*h#0?zSf< zFW2I``S%Qc0-VkSC&^vDTn9!|wD6mI+46p8p~j6H1K)q5t=B9(_N)Mt#;CHmfe|7A zeaJ+bAV;wUAp0J9|K7)E>#`-3UL=4)(ik|v+?=9i@~sC}+K!IOGyj*$i~R3@YcQ=< zIsQxKrFuWz8nK*h@4(5yp##cu=+4eXpqAjWVatAG$!u@|*fDx6m-_Fgfq~6;32;Q) zEzpaCoCHuYYKWd-UtX)H@aL0}v1G1#)URIike&0McLY#r(0*nmw zN5;nBWRJTer{O#{IOVFNuI_0B62W7A?yqVL@kW}i47k~um_hapH}kEM(q^qc3v170M9XEsislH4*>Izz;F3=jS>hY?~wW#s$fVO9GXfMmHSP_0iq>PjT03 zAzeqm{cmL3nq5)JHXIIz$|qLH-$kdoj=T}WcpN&STe?g5*;9=0fp0&bN^jfFU_Ipl zrO8*Z&JVm#BA2s{{3>|HbK}{jlft<>dvs52mfpb1v3vd5y4(%Y3A;=?N#a`}2*c1}c0ygt`cB5^EHB|)&!L_}b0xns<+y-}dCfwy+sIK2z)jZEj4 z^vaP?FF$(h7{H3>3Ro`rT(grUN;Gq{sRlIXZk>%ZxOWdx%{A45UhW?uFJ9cv_;&xb zeCjofIL+B@EkL5rmGfr5!5xCA8PNIl0)bFOPyIQ@+0wzKbNzY;I9xe$)2W-F68t_g z1E?H|d(ee_wAw*eR~Nc*%hu1)Vld)A&!rbSE!&+tR|Z;NF2(R*XcKSUA_wEZU=Z=2 zgmh(siVvIUnWIPPUtt{974xV=l}2!qc}jkr?fIU4wD@XQ#Wcm^il~h?Nd5x3^ISb2fb= zI_zE-trop&;!Zp)XLNobt$D5}?L9+l(1+Kxh4Sw3mKjQk}0LRRbb&JyP zdcGbC~={z>VHrcv^7q1KRuF-0Xius zsh*Av0&>4vfjrYQLm!0>1VdXuxPANfHD%>9r%!*(E3_DF08wRL_EE@j2?U9H?`uTI znVazaL0WpsluMc}x&^`^8bWY%=JW~zbS5a`k6I?kM~b%>E%(}UfuayRvkzw%cDsuy zp6lGL(~;0f@%h6C(*mvDsDy-z36~Cwh_n?g50v5JFp7S($WbagO@!N6&F`IqTJJuBh4bNgw?6L(ToEP{+WAU zU&FyQ|6f^G9uL*}#+AzDTCS!`QlT)i6eA)TvNT!eX316dCD8}jX=WTWl_6qmH;lPT zYQF7B|JD%+A}{)XEuDaUZ&d^EH_z_V6l9HiqO1z${IdOAzkmgC+&-0U=%T4n+*ip_N zd!DGQNaHodlQ#C^nGS z>?W8Hb0thU@*Y+X3d`a|kXLLx&Y2W|bbtmc0kRrhF9Y0VtVhB81e7W&IoEQ5qS^vO z6gJz~xAKt{6yCYzSWcc7RC2A%K=e7r2mf5^YH6M(Xs9ida^5`6mg}+ItxNz3MiF%> z;Jug_^aM=bihBebLyi7%CklMQ-8|A<)(L>)27K(2GYu1iR{1$)kF6tS)4rCL26Ps0 zdOTp`rIxO|{B!|0T>qCXJT11Ugd?q?VNs}a6oo*16uuxe36q(ESw1o~Kk96^p2Ix0 zc?2We{x*UY25*mBJ*Ccw)8Xa#iE~+mdmgI-5iZxjpUnvA-7sGH6H11%#c$z zA4-h)*9}74M(r5e0Da?OXO74AyV5-QhQ`=54hJ#QysGBW>;0BaK_lVDhqE77Lr|UZ)j$z+yX)+g<@LgU65Q z&g^W7cZOFbj_2qmc6Vd)E}D0D(CMCFMi6R*8_?mInLDB5xcUS__4F5-f5yA#g%MrW zQ$q)=JZF^_7BmU^+EiNUw6U)wI_plob}^P-#h;waJL~Vgz$@S%q8>H`rxf4hb_NQRea3uDm^_UdML}cQ>Buw*vES8weunpSEb2PSWivA z`tVqmf{g4|#N<7@a&-TIWlSGDFU&G$JMZaq4WJkVb|mH6+rOe_X=|@5^>{cOOMHsp zLvm`jav$uxbZa#oW|~=81ZgEg9lSuE%%RLH=(WPDnwpQZTZC8Z9St9LW*KS8eg(IDJfo_{?X?E z$Nt029x}Gc7hb~<^9B8%rumbTTCeQHX?0Ex(5veyeP?cGMagMLaCua@6`j#k%it{-0-@{BzQSh8ms{MrHM}}`a+UDQIsv4U^z_h^@N|-8uy=`H zmfA_sgYIrfxw_DgxC{+Ds#8&Q>thlmNM&TQv^|G;s-Ww=>J9T3-4F%Uo=BSdD%{1! z7s%#IxojeHVXBcWITgy+QfvH1+ZwVS55R-hqR`06ij>jN_=;zZX#roBF|7tv-OH~f z^^g?bIZ>UFnsrXe<$s%;i>vJWJja0&DW`kM^$PNH!m~C`Mn?E0HqZ*M7wi?lo-o3? zG2RzkdKeqA+E}}`meEUEI{N_zbbQP2)SEkg&d%%22Mh*^1w+0Xg`>`Pao%hUBSJu_ zd&h9LlS6G#L)0EyTMY+2SGn&t{|g;1aG2wUK4oky7bv~-xm`N}I{W`te>zhc>jX;r z(!y-YE;ne^oj9q(k0h%Gf{L$^GEMB7$pb-syJ6ds6}w3o8*kO}2CSynx-_~y zw!C+*)z96K7*5{87c5T)TPLDMj|+tNETHx3kO+j;{7Vt?PnXE6!H=Ll`9(F*frsOz zaL?&BmB3oeLca*EU->z%=@drGmL6J0^9%6tzU^82dFbN%lX9d7S{rz3!g5O{QVo=2 zB_^(<0tUy*6wKufoEkXSeec5u8B-j4RkWzcaWOw^T(^i7iMl$ZT#|)Qe+3lSqe4>( z2Hp|}>bKW2@37vYI0{deZ$Xw2quh|mJZlEQaKwxi!*>XWS{6PLRSfK&1D*~ zVJ0CFR#^$r;5{+3Uxh=;mb^p?;%>n)i(&=o2kb8K-<_HwU238%d=)N~93g1nn!uCK zmvJH(1dgf6V>~)4IZricZaFja?tGuKm_#`(45+&~Rzpl^iZ5N+UeR=HWTUP*;4Bzs zB`+`9nstW!?z1yEV&hnc_Uj}q%A+&74fG*Z^q1w4Fz=|=yl*cN{aM|AYpH} z{!d`U=<_S?e~V+LVdeczX7!pgl8dE!Vw&I=EJD97Puc`5 zdXW4AAg+NyUfOhRzQ01Z2O5HDLqqlPTD_SX?F>UBX)v4(4js=ZP=TKLdBBH0@vALS zQVN8QhQ~i#%D3=j?>lTFfI#2q`{$gZ;+>Y*KQ>t6g-gZeS#TXZW66=X&ilZLprcyDC zZe3YbakdI!D!Pz73$0Ex0!WsnK0hqnE{dK6e68bBuu<<1%Y|#Ca=fdpW-C57f^r*v7QjQ<(rK>tfs8Pn;7l&rJ zg4h@SS7{`jzaV)F(|Se)jhF%#6BE$K&rjq1{1Kn#5YXBlM^*2cV-p`Iqw*u#7s|x)2H2YYSR1ri(2k$tDzBsOuYG` zs_j)~BLqak&a5nNj|u9Q-LkVaG~@-SCR-N+CNY}LLwq+r4fFynG1!k7g$QtSqj=N+(|giN+lA@#GPL(E-c8Xb`vB3B8rnZ2vE)i vd%1^HfY7)&O_qlTU`X&kApptq=*P00QQLF#aaMP6+~X$3mPW+}E;0WF$ZXQ+ delta 22888 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 diff --git a/docs/input/docs/img/DocumentationSamplesForGitFlow_VersionedHotfixBranch.png b/docs/input/docs/img/DocumentationSamplesForGitFlow_VersionedHotfixBranch.png index 9795f0e49156c23ff8945678bcc96d7de1b3a24d..f9a695b7da1469f59fbd5ba791da1b9457ea9290 100644 GIT binary patch delta 9725 zcma)ic|4Ts|NfwIR5&R6(n*wL-?E<;AzO}+bu1yoShB>7M+s%$cd2A4TPemmW69Wx zvS%ALB)hSW!OZU-eLkP_S-yY#{(2_QJkRUC-}m*tuIqhGPv+@5x9AeMjt2ck4}-y4 z)pg;Ce<(xzt~YPp^SW#AdC$+|E{qP`3Ct-oH9(C1`FrE8c}(9Gb}hwfrgNLmqmJ(X ze)wd#=ysc+op^A1`Ec>x?#JcJ$D1X}c`w@eJ5L6$J2NipeM%{h8h3p4gRhY7C@!3F zLzZ<4dXvX=r~1*k$6=pwk6!B6UYe<#WUl|=am6bk0y_Qf)t27t&r=mo5{i(Y9z{f_ z4jiM@bC_t|qbofW;Pqi8jy*$MwD07FlnZW&QkASn<4s~vN&N)mGi$Bh3eV4R;W25xWjy?DC~VwkMNLdY+$hX(VKdELbHTMRd2po#v#_4 z2C=uNZhd!wGz;qPUKwI;IW?Z_HsmJ)f9qJO z=gbl(>dMk1F`{QIflnPIR8(c_vTSK=l*Cv@hU3%zy<|V&^^C_*UxKpa8Tf+w4&?kkBb+hiJ-^d9V2EKI{cyty>ViG?si90`m&YSlQS6&ZlLBfK?ocLpusOWY@tjjZ zM|(_vAgQ76CbSeg6487`L|#hz!HWBd{BP)eIwU(^`O9-R?jSbgUvZGp6z$PXp7Z@} z{U7+gOFT5KEsVP9Y<+>lfx3vl?xMv>DA{f-g$=Qi%)V(mdee|)21~1(8 zdVX5J`!xgEV?m^Ia(b8a+72BvZeR1xE>Sub*6FiMt;|LlP3g5*D*^{=ypU$H&b6X{;~~VvJ#(s+DXZg%arqj>z4n4hcJC6X~e~ z_#!K}5P`uC>Bax_E1q^6dyfY{1ZRxO-E<_g;edP>na~|@7~7OcP?eio|3e6j_|WJzCdV^&0;I&DN8jc zz=?4wV9KuP$@4;+^Mk_IV$O++*N5x}>FVnK^;c5o+WKs-`7Uv#VcoE#KCH1o=f2|SPVRXSddj~lOj}Qv(?<(ETHO-{P{ex9F8?a zc}XS;s185bV9pQjZrp=$<4t1_3dO9)jzvdBu}?%sMyl#>Pq}q4*o`#$mMzBELoO^- z`eV|VdR{p5yzuGMXS#-lA1=#KG>?-v;2wUF_IPz1BjbjW-QE#1o9@TsVGkc}zzTof z*X!v1%LiP)58cgpO|q6q!;H41RGj+!m2ovbBi8uzdu(Yd3$ zylV~@xJurDI318NMr*$jy5TS5!7bd``%%P14O}~kJ8$|DPMZuk$Pt;u$Rjj2#(K?D z22;dM&5uWGYlYvxe}B-uf}DoX_xb4Zb>8HoK#_gB5@zLKBZ$B{LfqI<+wO{rRB6n+ zn0T<^;9{b|^$)Kt=1<%iF8A;=sCBpGCP3M{1=?h=jgTubcxeuMWF!yXI%qo4HCfc) zg&Pd4gPNY$ff_2s&uu=)Rhc-=Ba*N!+cf=R&%g+ps+~=L#W=n(-sjp+X(gFFwLnX& zslB|yh~<$BFnI|*zaWOJ3WGlFfMi*(|)5utg6cs8}?EgN@XY~lu7Au z)CFDHV?Hjg7Lt>-k$&GCo!)B4F9+j;XUN-Usk7ORaxR8JtIfNE4vx6JvCMZuj|+Xd zoR9O5Xj@RHUnpOR+$y=aPifPO9LVGG4NtGgNYA+VZ0#dP+*~vFBINxsM>#ol^U@^& z_ylHocfPW6%|=XYn-_jM`S3^7b(BZW>4f5c;S5o-E9+f;U9CeB_R>STK-^I9%)gaH7rjZjeq$RQ|oW-099pNwCOar zq3XAIhzRj~HDxYmhBUixe_Ngq?lM|3GpcbPmb|WU=FHDIg=3T;N~p4N)&;v|llfqt z!I%{JaW;U&n0Vq6H(}vk*_jyAwWLI?C0zQM=F$rk`yIlMpn^{VdqvqrgAO8*a3PHb zEEWo$DJs6d{v)loc{QhuMeT74Gc*fCAazq);)ja$z@5Dr(&1T2rwMMrJxhjevT=CMlVIY_RhZbCu! zI}m(l8W#_@t|h;E%einN>Y)LSB+8Ya-`bnA-;~2V6FK{-#UKdv3`hS%qix*j#B)89 zKRfjZP0;O_3ft4JN9<`klfekYYC@FbRScH&OQoeeUF4=F*x*&sSgOt76B6m?_V&KT z8ls{0ZNSRN0zOZklA^l8U%Ekv=U48qUa2N+R0;H&4X5Olk1GM7o5fjdSR6V;dXn|2vH7oC8#!0M0}1<$d1-GW>#!LVOWhXI z$Wubp$xB`Ru&|!@-kQ{&cYZo!qF(#G=aTQ32eD#hFTc_@OH@4=2Wk+sS?9MBT*3Vd zpHa2l=ZGPfFH7zG%*g2AvbFZy8=TI1S)_StSlg0m%|;qHt{D6|Lb95gJ+M{Wd5?%R z<~(Z;oK!qfmm3cy+XLrR|A6Rmk^2_@Yv8zh4?kLmx#k2n-fY!hl!gNu0UjLA(s(S5 zA=_!D=Kvu>1ow=}k#YH!h|Y0q%#W=q>!v_KCExZhvXO7XnWCzC-08IAHSEc9BLDty*1>+c7e*6V2P>xHt^Yp*NrhHO>dMmmqIhZy|S22 zv1kb+;k)<2zMx%8i5o8L&c1E$KmK8jr#|{H&EIV)`S2RSs!=q}aSvyG^uPyOWgZmT zkKAR@Gvn?FFF8D~-*UH{R*_EzH>@j^)2gfw#p2LG1_S+OyTln)%ZWx}znCM^s+k5@ zRzh~puNO>4$|$E-)S}8bi{+T!)k3sYD=J;`Zu~)8wLC9=UcuNXxGRN;LRp%LE4`(R zb?WAf#R5FY(C`qzKuES$6i~H2GwEV0K!b$_4pAv4EWG)>;EGG{l94{Ybg)0~KX9`r znr&9r!@@EYusHJVd8BAD^_b*8A;pdhILTcLwfzDm4P!>MDFD0=pc6n9OT@u-l2S62 zlcS%B(rS<;dy!?4P8iKCRGj(enFrvTFaYj&A{~tOFe?}Yz!m1DNRyan&h+5k-#%fg z90zxHKP@cG*Dy%WA*x?oUjBmun&1vpLzI(~Gpb=QDKa#;e*H4g`)BsjJ`0Ap^!0Hx zLa49Enf`a(z(>RxsXj(9yNCfx01G9mcaU_1VA2?xFJSl+1uRc&Z2ZQnOxP67GXQ(i zbOeWg?`nb#*&luH%E8T@k&|=5K|#{Q(lRS8ZKyo0Gx==y3tf|7XrJSl;x<`i6g&<# zBtJw#?QYprxeZP>2D1vN$UEYWzr}iI=H%o6D;MCFsPE}n?o^}{SmK8C)z4M&>wBp? zZV5IYyEG^!DLFKE54RA!wV0WgS1~QpUt%s*&x@D6NKat66_IGQfRhpv>+I;@RttPX zEUfkzTgGD{c&8q2co;2%+uq(z$ES95bkzFJ3TlS%6HMgj9-rZNLl&5;pE~udxVR&* z1dZPQlCPcGaQpV#MB}})dB{ot4p;HLA4=F}5-5v+06|DC&^sRxYG8n6-0Yo4EYp{3C(Z*T81%c{PG zO+tITrq@*H+j>1cJrffXl)J8;o*YsL|9Qo7vdUb;u&6)$(Ifp#S*;LPX$?q$1D5l- zgurQsw8VoQ988%sw9!D-MEbmOFjy*ZJU&A+oHWurfL(wBg;4EG-k4*a9JK?>utP53 z(8@uLm}V-#%fBWOG-h^xZ{{DCF6sK6AJ##B73k#ixN-Zi20hoa|F#WVJ zToE4~y-p-PiH+S~ZDj?cAOFdd1^sjE?Cf3L-3wOw&`wE9*h3%+KzgxvzPxyTCGx2T ziVP;A{z3y2vo1u_V>V$-snf_Cdu3(i*ZJDXLftt%pB1!kL@3V)BZGXa-vQXXS4P@A;IL3J^Nn2P>6VBRH4Q(`V; z-F#QuM&@j#jrRoA7Lu{C@n#fp$$roIQS91&<#Cty;Uh)JUO_3?+oEmzUR#8#h8iFqM^cb>wf6Ld($2=-UH= zf~q`FThz&rkdTcfn7ld|za2-H$2g5mK$HYI&LEO zK!=_Xe3f>FU`_3`9spJNCr)bE{x2>HC3-mSy?*`r;lqdS!%#VJKCCc z3-a-~n@<1+1d9>yKq?fQTT6ZT@ZsX0+rPl9&6k%s0D}>NqlmqEntAEzTtY%nJ0uXW zv4V%QdEdEn$JJGgRRlJ|bj>r@5h>zJz{R$-w4|h@{QUWoP59cQ@bEuStJ7IbpHpHh zUPSDH!S~y@Z#qJOsvOTcd9j8acmNJCY%X))7-@+^YXa07!R${~LW8<_TNyR`&DC=CjUK;Bv-{6-T9Sxg@lq*pg?-n`u~I5xKX^Gp79TiMDHI|9^=*&g@p zWvq(fRXDG#%yS^4_hO*csb<&y!p-H0v1*x++;7&cSDtL_@9)z9{zf8Z+)@d18YLto zRKG>&mWp~TNC-PStbZ!WD~rg%!GZP|^PlcWoTv{ddij!ji%_!M)6=84T^{!qFTqEB za`q{=deHmP5;^CO+%eEE34qu8dstgrmzb4p1nrZE1Xliwc8kk>eSHH1H}RI>dK}-b zv{64SB~!Gxv2l-SX{^dU0CbJ4&oOYs%8e?XAQn6zTNs5ls%zYkJ4gutuhR&X78!Db zkbyQ+hZ38=(xQL|Sxi^ipF+3yoT^1-WhR+FftVmEYF7*^1&YIH--aDL54#ik z50ruidjQVj;5~om5P&28fQWxuaVeLkp?;FXAa%N=_&P1B0NTx>8nF zRyYs~Q!Z$GBB0C)t!N7Y8$d-*2I+O`IZrh`;0DMHCFXJvwts#h08-ke?5<#Ueq?9L zxoD84!n(+%rKQIC*KCTNzyYV(fB?Dbc4rds1$+p%;qqLv_}b<$e0OKZo~EeaU~o#) zqgC#JF0R{N-UU&s2m}=2Sg@Ex1PCF_ZrS%oyz zkR&e%g0#k8C;F+_7#PGRRg{-kFFNeJy7k7c`Prqg$G^V(2SLew=%bg+>C@lCxom5E zX1d}vDS?~wrh~Pkj!09o$LM<*TO&QKt^dZx}6J&Qf&_%d~g|g@P#lhOY zGs)Ii$c>kdsudP7D_aZ;v zs`@SuFK?amCtknCKx9{n7==QasPnU`^(idd zAw54{W8S>mF<#x7q=9*kZwz4?JVKK%K5i@>zh;PaLvQ|Z7&o?)S5sJ+@E?(7ye!Oa zPt<*Hu*95^kr8-p;`2zsx{!SpaN`ybs{jRBF97WVRO%%{Q001hkfW=g1|S3C!2HYV ze4rT)28CqR+k6L%Z2oU?DovzeS*65y0aeBOYttkW>HBvF2igIDJ`^i;X+MIQ511k0 z>^lD?H%%Zyv}Eo;pnw6pa{02#FuQ<&2Th%5HxAT^YgpWO;@(_e8(kf35o$aKs^k0@ z1Ffu3;J-wQgQFkl%G8vd)(18=wv#7Ms-=L&%1$AsevIW)I(qCFhq29GtQa3qCO}ev|C@dQUw;{=bbLqY?ucCx9OKjy_(1b~ z{}g(NNO$6&4(&e-8g`Cbv&cJ!PpQ1w>ZGV)&Mh08PYg!^%9nAyA3v&nyIE+MdtUQ6 zm<{g!CXAMJLn=Q2e*O=Xn<(tp3{kYn3b>VY&>0+h-WGhP=7J}Pj8 zLOLza|95^ks`%gY!}H*Mj-_7{iGa%xZ)f0_S$CvS1>@!j9~8v2mLoehl(ElZ@&)CpTHn5K#+3d2d}@oY9{fF0cfbA zT!`?Og-zzkqd-6m|0N(ab)oU~f4vvx0T*V2bHAJp!<3jH`J4I%uu{N?%_~QxtV_?s5OP9L*)w{mJH*t!>ZxJa<%d zbh;$!b)r%u(@UrBr{~X|1D^3n{8iN3CrXQnef=&q13MS5d2UKm`i(SAtdVPbJBXa@ zu5PR~204=|ZeFan<-9Od)}3CV?)w9q8`5v{$I{pJ=Q?>sFEBNamBvpi{|O$3LOea6 zMq8&xb73tSgB1KaCvQ7RJY(k-eX?=?{CxC6V5>w@Z^=Cfe`did)+&C&ADK8IOfvB%vuG98> zLX<#Kb|g^bjZ}I8l|z#O`2F_yyk?T5JMx&4duNiVO})SSmlp-lo=x3`s~?x|IV(-- z-d}g`#yfQnagWdVsRwP4zejg>Iq2vNPt>yxDJS>!y<59sQKn@XWslV6g_mz-DeyTu zIB1>d8?}1t&=}5Ve}Syx^j?$CO*i&?(izP^-o7Pb$)@7Uz1o7A6+Nn_wG-ME&K3K< zbN-Z~pqF0G!orez7J|pU^IsBeO_mS%9sJH?{cIaAB_@TH_OQHG@4vLW$@ffBRCKc7 zM6#7Qv*fGBvqn#;6Dx%;U+T+Z!uv*(wyG8bNvp499C2sQQh5pWrNmDYrObS`X)33( zySgw**ras)k>siYFXK)jHBx2@9<%S!iKUP|U-9{P75r)c4ccX6Gsd~BQFbE>GE52X zVi81vyL*y0m#aO*leBesZ`srx!tSlPGs|JNTw33}yyo4wHLChuaz~u4ld_-3BB-V& zCugPJ5=s{~{oIt3x=~d2B6xqh`M4j8O4c#U~5@y1H&-m4g9)SXDEv%LAfh%C{Rln@*ZE@>XP0%B7 z{2gz&yw`tFsn^z)29n=<(W-5aD20eGl9U5iKNK5p`~UQc?n^*SHq;U&)B=`Y<9Htv zb3Kv1N+qaZ%~#U%L7m;a;75S>fyC>sqO-Hq&Npuc5&|ZbZ_LVbUbuDoThicHbp+e?kGD<$S&#p5u@qSLy)k1FCEkKQr(`P!^ue^srY(U zXPQFUTW(x{1wrqw{Uxr^yjT?xg{Tr!@rgv?qW5ajelb$_B^X^RaR}gx?(ZBHq0W~e z?Dq=Y_CWIBF}mT>3JukbmIw=K25&_<5wNQ*B{p@BbY>O@bgAE?$5K<}Tqw3Jhg;*V zs^-6f_LdUg?edxVa_cyu{&IyOHiRLi0Sh&K$v-(?h@K=jJ(L9K_q*UaRFPWrL}unIA12jM1c~)EENFFu{Zd+KUX@9#+(7S=0A7}$i6%#e@`LC)hNI_r4V&hZA*W-mWeK&r(KG8XHoEy6B z!)1&FJ-#%CPwP*^CJp-}fRXyi==bkI)pvKqYpafNNw$&<21(bokxOHl636j9DI4vY zm@|XVfRn^gd(7^u%881awa~ZPNhm5(VwJYKY$Nh!7RJhZc5@>Xtkp|#4md=d1G1eP zj#4#QUJ;_K#?*j#=rDcQm;2=~ z!gwCVpZ60gNF&!=+Wm=nHCl0vil%Uve#59NTU$XtCW7ik3EPGkngYfF1^jB|2?6~yF)Dk%O2sM5mf6%}-n>bu zyN$Shodvt`7hUQNT@eu{DeT@+BQ2D-0HQ{#5}6}Kl9SCER#)a<_p{wo(uSIh8f`DMF@{}1!JoRa_m delta 8125 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 diff --git a/docs/input/docs/img/DocumentationSamplesForGitFlow_VersionedReleaseBranch.png b/docs/input/docs/img/DocumentationSamplesForGitFlow_VersionedReleaseBranch.png index 44dbc62eac7f7e002051fcda714ffaf25d006c9c..c9d0ca996ec946597b65b2eaf2044996685e450f 100644 GIT binary patch delta 9949 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 delta 8342 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 Ziul{LnT6V>trPr&$x10o7Th;{_CM(sX%7GZ diff --git a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs index 0666031706..1931cec402 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs @@ -75,6 +75,8 @@ public void FeatureFromMainBranch(bool withPullRequestIntoMain) fixture.SequenceDiagram.Activate("main"); fixture.MakeACommit(); fixture.AssertFullSemver("2.0.0-6", configuration); + fixture.ApplyTag("2.0.0"); + fixture.AssertFullSemver("2.0.0", configuration); } [TestCase(false)] @@ -233,6 +235,94 @@ public void FeatureFromDevelopBranch(bool withPullRequestIntoDevelop) fixture.AssertFullSemver("2.1.0-alpha.7", configuration); } + [TestCase(false)] + [TestCase(true)] + public void FeatureFromDevelopBranchWithMainline(bool withPullRequestIntoDevelop) + { + var configuration = GitFlowConfigurationBuilder.New + .WithNextVersion("1.2.0") + .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) + .WithBranch("feature", _ => _.WithIncrement(IncrementStrategy.Minor)) + .Build(); + + using var fixture = new EmptyRepositoryFixture(); + + fixture.SequenceDiagram.Participant("main"); + fixture.SequenceDiagram.Participant("develop"); + + // GitFlow setup + fixture.SequenceDiagram.Activate("main"); + fixture.Repository.MakeACommit(); + fixture.ApplyTag("1.2.0"); + fixture.AssertFullSemver("1.2.0", configuration); + + // Branch from main to develop + fixture.BranchTo("develop", "develop"); + fixture.SequenceDiagram.Activate("develop"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.AssertFullSemver("1.3.0-alpha.0", configuration); + + // Branch from develop to feature + const string branchName = "feature/foo"; + fixture.BranchTo(branchName, "feature"); + fixture.SequenceDiagram.Activate("feature"); + fixture.SequenceDiagram.Deactivate("develop"); + fixture.AssertFullSemver("1.3.0-foo.1+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("1.3.0-foo.1+1", configuration); + + // Create hotfix on main branch + fixture.Checkout("main"); + fixture.SequenceDiagram.Activate("main"); + fixture.MakeACommit("+semver: minor"); + fixture.AssertFullSemver("1.3.0-1", configuration); + + // Merge main to develop branch + fixture.MergeTo("develop"); + fixture.SequenceDiagram.Deactivate("main"); + fixture.SequenceDiagram.Activate("develop"); + fixture.AssertFullSemver("1.4.0-alpha.1", configuration); + + // Merge develop to feature branch + fixture.Checkout("main"); + fixture.MergeTo(branchName); + fixture.SequenceDiagram.Deactivate("develop"); + fixture.AssertFullSemver("1.4.0-foo.1+2", configuration); + + // Bump to major version increment + fixture.MakeACommit("+semver: major"); + fixture.AssertFullSemver("2.0.0-foo.1+3", configuration); + + // Create pre-release on feature branch + fixture.ApplyTag("2.1.0-foo.1"); + fixture.AssertFullSemver("2.1.0-foo.2+0", configuration); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.1.0-foo.2+1", configuration); + fixture.Checkout("develop"); + + if (withPullRequestIntoDevelop) + { + // Create a PullRequest into develop + fixture.BranchTo("pull/2/merge", "pull"); + fixture.SequenceDiagram.Activate("pull/2/merge"); + fixture.MergeNoFF(branchName); + fixture.AssertFullSemver("2.1.0-PullRequest2.6", configuration); + fixture.Checkout("develop"); + fixture.Remove("pull/2/merge"); + } + + // Merge feature into develop branch + fixture.MergeNoFF(branchName); + fixture.Remove(branchName); + fixture.SequenceDiagram.NoteOver("Feature branches should\r\nbe deleted once merged", branchName); + fixture.AssertFullSemver("2.1.0-alpha.6", configuration); + + // Commit on develop branch + fixture.SequenceDiagram.Activate("develop"); + fixture.MakeACommit(); + fixture.AssertFullSemver("2.1.0-alpha.7", configuration); + } + [TestCase(false)] [TestCase(true)] public void HotfixBranch(bool withPullRequestIntoMain) @@ -301,6 +391,8 @@ public void HotfixBranch(bool withPullRequestIntoMain) fixture.SequenceDiagram.Activate("main"); fixture.MakeACommit(); fixture.AssertFullSemver("2.0.0-6", configuration); + fixture.ApplyTag("2.0.0"); + fixture.AssertFullSemver("2.0.0", configuration); } [TestCase(false)] @@ -442,6 +534,8 @@ public void VersionedHotfixBranch(bool withPullRequestIntoMain) fixture.SequenceDiagram.Activate("main"); fixture.MakeACommit(); fixture.AssertFullSemver("3.0.1-6", configuration); + fixture.ApplyTag("3.0.1"); + fixture.AssertFullSemver("3.0.1", configuration); } [TestCase(false)] @@ -583,6 +677,8 @@ public void ReleaseBranch(bool withPullRequestIntoMain) fixture.SequenceDiagram.Activate("main"); fixture.MakeACommit(); fixture.AssertFullSemver("2.0.1-6", configuration); + fixture.ApplyTag("2.0.1"); + fixture.AssertFullSemver("2.0.1", configuration); } [TestCase(false)] @@ -724,6 +820,8 @@ public void VersionedReleaseBranch(bool withPullRequestIntoMain) fixture.SequenceDiagram.Activate("main"); fixture.MakeACommit(); fixture.AssertFullSemver("3.0.1-6", configuration); + fixture.ApplyTag("3.0.1"); + fixture.AssertFullSemver("3.0.1", configuration); } [TestCase(false)] @@ -852,13 +950,15 @@ public void DevelopBranch(bool withPullRequestIntoMain) // Create hotfix on main branch fixture.MakeACommit(); fixture.AssertFullSemver("1.3.1-1", configuration); + fixture.ApplyTag("1.3.1"); + fixture.AssertFullSemver("1.3.1", configuration); // Merge main to release branch fixture.MergeTo(branchName); fixture.SequenceDiagram.Deactivate("main"); - fixture.AssertFullSemver("1.4.0-alpha.3", configuration); + fixture.AssertFullSemver("1.4.0-alpha.2", configuration); fixture.MakeACommit("+semver: major"); - fixture.AssertFullSemver("2.0.0-alpha.4", configuration); + fixture.AssertFullSemver("2.0.0-alpha.3", configuration); // Create pre-release on release branch fixture.ApplyTag("2.1.0-alpha.1"); @@ -873,7 +973,7 @@ public void DevelopBranch(bool withPullRequestIntoMain) fixture.BranchTo("pull/2/merge", "pull"); fixture.SequenceDiagram.Activate("pull/2/merge"); fixture.MergeNoFF(branchName); - fixture.AssertFullSemver("2.1.0-PullRequest2.6", configuration); + fixture.AssertFullSemver("2.1.0-PullRequest2.5", configuration); fixture.Checkout("main"); fixture.Remove("pull/2/merge"); } @@ -881,12 +981,14 @@ public void DevelopBranch(bool withPullRequestIntoMain) // Merge develop into main branch fixture.MergeNoFF(branchName); fixture.SequenceDiagram.Deactivate(branchName); - fixture.AssertFullSemver("2.1.0-6", configuration); + fixture.AssertFullSemver("2.1.0-5", configuration); // Commit on main branch fixture.SequenceDiagram.Activate("main"); fixture.MakeACommit(); - fixture.AssertFullSemver("2.1.0-7", configuration); + fixture.AssertFullSemver("2.1.0-6", configuration); + fixture.ApplyTag("2.1.0"); + fixture.AssertFullSemver("2.1.0", configuration); } [TestCase(false)] @@ -1057,10 +1159,14 @@ public void SupportBranch(bool withPullRequestIntoSupport) fixture.Checkout("support/1.x"); fixture.MakeACommit(); fixture.AssertFullSemver("1.2.4-1", configuration); + fixture.ApplyTag("1.2.4"); + fixture.AssertFullSemver("1.2.4", configuration); fixture.Checkout("main"); fixture.MergeNoFF("support/1.x"); fixture.AssertFullSemver("2.0.2-2", configuration); + fixture.ApplyTag("2.0.2"); + fixture.AssertFullSemver("2.0.2", configuration); } [TestCase(false)] From 7551cad7e40ce970cfff074b57f463d99f014a3c Mon Sep 17 00:00:00 2001 From: HHobeck Date: Fri, 31 May 2024 14:42:44 +0200 Subject: [PATCH 121/544] Integrate code review remarks from asbjornu. --- .../branching-strategies/gitflow/examples.md | 91 ++++++++++++------- 1 file changed, 58 insertions(+), 33 deletions(-) diff --git a/docs/input/docs/learn/branching-strategies/gitflow/examples.md b/docs/input/docs/learn/branching-strategies/gitflow/examples.md index 9b5493a20e..971be376ae 100644 --- a/docs/input/docs/learn/branching-strategies/gitflow/examples.md +++ b/docs/input/docs/learn/branching-strategies/gitflow/examples.md @@ -6,53 +6,69 @@ RedirectFrom: - docs/git-branching-strategies/gitflow-examples --- -These examples are illustrating the usage of the supported `GitFlow` workflow in GitVersion. -To enable this workflow, the build-in template [GitFlow/v1](/docs/workflows/GitFlow/v1.json) needs to be referenced in the configuration as following: +These examples are illustrating the usage of the supported `GitFlow` workflow +in GitVersion. To enable this workflow, the builtin template +[GitFlow/v1](/docs/workflows/GitFlow/v1.json) needs to be referenced in the +configuration as follows: ```yaml workflow: GitFlow/v1 mode: ContinuousDelivery ``` -Where -the [continuous deployment](/docs/reference/modes/continuous-deployment) mode for no branches, -the [continuous delivery](/docs/reference/modes/continuous-delivery) mode for `main`, `support` and `develop` branches and -the [manual deployment](/docs/reference/modes/manual-deployment) mode for `release`, `feature`, `hotfix` and `unknown` branches -are specified. - -This configuration allows you to publish CI (Continuous Integration) builds from `main`, `support` and `develop` branches to an artifact repository. -All other branches are manually published. Read more about this at [version increments](/docs/reference/version-increments). - -__Notice:__ The _continuous delivery_ mode has been used for the `main` and the `support` branch in this examples (specified as a fallback on the root configuration layer) -to illustrate how the version increments are applying. In production context the _continuous deployment_ mode might be a better option when e.g. -the releasing process is automated or the commits are tagged by the pipeline automatically. +Where +the [continuous deployment][continuous-deployment] mode for no branches, +the [continuous delivery][continuous-delivery] mode for +`main`, `support` and `develop` branches and +the [manual deployment][manual-deployment] mode +for `release`, `feature`, `hotfix` and `unknown` branches are specified. + +This configuration allows you to publish CI (Continuous Integration) builds +from `main`, `support` and `develop` branches to an artifact repository. +All other branches are manually published. Read more about this at +[version increments](/docs/reference/version-increments). + +:::{.alert .alert-info} +The _continuous delivery_ mode has been used for the `main` and the +`support` branch in this examples (specified as a fallback on the root +configuration layer) to illustrate how the version increments are applied. +In production context the _continuous deployment_ mode might be a better +option when e.g. the release process is automated or the commits are tagged +by the pipeline automatically. +::: ## Feature Branches -Feature branches can be used in the `GitFlow` workflow to implement a feature in an isolated environement. Feature branches will take the feature branch name and use that -as the pre-release label. Will be created from `develop`, `release`, `main`, `support` or `hotfix` branches. +Feature branches can be used in the `GitFlow` workflow to implement a +feature in an isolated environment. Feature branches will take the feature +branch name and use that as the pre-release label. Feature branches will be +created from a `develop`, `release`, `main`, `support` or `hotfix` branch. ### Create feature branch from main ![GitFlow](/docs/img/DocumentationSamplesForGitFlow\_FeatureFromMainBranch.png) -__Notice:__ After the feature branch is merged, the version on `main` is -`2.0.0-5`. This is due to `main` running in _continuous delivery_ -mode. If you configured `main` to use _continuous deployment_ the version would -be `2.0.0`. +:::{.alert .alert-info} +After the feature branch is merged, the version on `main` is `2.0.0-5`. +This is due to `main` running in _continuous delivery_ mode. If `main` was +configured to use _continuous deployment_ the version would be `2.0.0`. +::: ### Create feature branch from develop ![GitFlow](/docs/img/DocumentationSamplesForGitFlow\_FeatureFromDevelopBranch.png) -__Notice:__ After the feature branch is merged, the version on `develop` is +:::{.alert .alert-info} +After the feature branch is merged, the version on `develop` is `1.3.0-alpha.3`. This is due to `develop` running in _continuous delivery_ -mode. If you configure `develop` to use _manual deployment_ the version would -still be `1.3.0-alpha.1` and you would have to use pre-release tags to increment the -`alpha.1`. +mode. If `develop` was configured to use _manual deployment_ the version +would still be `1.3.0-alpha.1` and you would have to use pre-release tags +to increment the pre-release label `alpha.1`. +::: ## Hotfix Branches -Hotfix branches are used when you need to do a _patch_ release in the `GitFlow` workflow and are always created from `main` branch. +Hotfix branches are used when you need to do a _patch_ release in the +`GitFlow` workflow and are always created from `main` branch. ### Create hotfix branch @@ -64,9 +80,11 @@ Hotfix branches are used when you need to do a _patch_ release in the `GitFlow` ## Release Branches -Release branches are used for major and minor releases to stabilize a RC (Release Candidate) or to integrate -features (in parallel) targeting different iterations. Release branches are taken from `main` (or from `develop`) -and will be merged back afterwards. Finally the `main` branch is tagged with the released version. +Release branches are used for major and minor releases to stabilize a RC +(Release Candidate) or to integrate features (in parallel) targeting different +iterations. Release branches are taken from `main` (or from `develop`) and will +be merged back afterwards. Finally the `main` branch is tagged with the +released version. ### Create release branch @@ -91,10 +109,13 @@ support minors use `support/..x` or `support/..0`. ![GitFlow](/docs/img/DocumentationSamplesForGitFlow\_SupportBranch.png) -__Notice:__ Depending on what you name your support branch, you may or may not need a hotfix -branch. Naming it `support/1.x` will automatically bump the patch, if you name -it `support/1.3.0` then the version in branch name rule will kick in and the -patch _will not_ automatically bump, meaning you have to use hotfix branches. +:::{.alert .alert-info} +Depending on what you name your support branch, you may or may not need a +hotfix branch. Naming it `support/1.x` will automatically bump the patch, +if you name it `support/1.3.0` then the version in branch name rule will +kick in and the patch _will not_ automatically bump, meaning you have to +use hotfix branches. +::: ## To Contribute @@ -102,4 +123,8 @@ See [contributing examples](/docs/learn/branching-strategies/contribute-examples ### Source -See `DocumentationSamplesForGitFlow.cs`. To update, modify then run test. \ No newline at end of file +See `DocumentationSamplesForGitFlow.cs`. To update, modify then run test. + +[continuous-deployment]: /docs/reference/modes/continuous-deployment +[continuous-delivery]: /docs/reference/modes/continuous-delivery +[manual-deployment]: /docs/reference/modes/manual-deployment From e09ad6ecea8ea9d72ec7fc3eca348b357037875a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 31 May 2024 22:45:57 +0000 Subject: [PATCH 122/544] (deps): Bump YamlDotNet from 15.1.4 to 15.1.6 in /src Bumps [YamlDotNet](https://github.com/aaubry/YamlDotNet) from 15.1.4 to 15.1.6. - [Release notes](https://github.com/aaubry/YamlDotNet/releases) - [Commits](https://github.com/aaubry/YamlDotNet/compare/v15.1.4...v15.1.6) --- updated-dependencies: - dependency-name: YamlDotNet dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 7d0d83aa4b..83b91ef8ec 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -35,7 +35,7 @@ - + \ No newline at end of file From f34936071be45368ee794ee28f85dba1a73839d0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 15:29:17 +0000 Subject: [PATCH 123/544] (deps): Bump the analyzers group across 2 directories with 2 updates Bumps the analyzers group with 2 updates in the /new-cli directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Bumps the analyzers group with 2 updates in the /src directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Updates `Roslynator.Analyzers` from 4.12.3 to 4.12.4 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.3...v4.12.4) Updates `Roslynator.Formatting.Analyzers` from 4.12.3 to 4.12.4 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.3...v4.12.4) Updates `Roslynator.Analyzers` from 4.12.3 to 4.12.4 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.3...v4.12.4) Updates `Roslynator.Formatting.Analyzers` from 4.12.3 to 4.12.4 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.3...v4.12.4) --- updated-dependencies: - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 4 ++-- src/Directory.Packages.props | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index a5d3819823..9f5c2567a3 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -12,8 +12,8 @@ - - + + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 83b91ef8ec..12312065a9 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -13,8 +13,8 @@ - - + + From 51672d7494d4a95e8ef6d78125489df45289c97f Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 6 Jun 2024 13:17:16 +0200 Subject: [PATCH 124/544] include root in dependabot --- .github/dependabot.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index d30a25bc3f..ecc644fda4 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -23,6 +23,7 @@ updates: - "/build" - "/new-cli" - "/src" + - "/" schedule: interval: daily open-pull-requests-limit: 10 From a6b7e30851865f8044cc8474cd3d52fa6f1dd660 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 10 Jun 2024 10:28:37 +0200 Subject: [PATCH 125/544] #4060 - removed the `init` from the help --- docs/input/docs/usage/cli/arguments.md | 3 --- src/GitVersion.App/ArgumentParserExtensions.cs | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/input/docs/usage/cli/arguments.md b/docs/input/docs/usage/cli/arguments.md index 2013651a22..c47e115ba7 100644 --- a/docs/input/docs/usage/cli/arguments.md +++ b/docs/input/docs/usage/cli/arguments.md @@ -23,7 +23,6 @@ GitVersion [path] path The directory containing .git. If not defined current directory is used. (Must be first argument) - init Configuration utility for gitversion /version Displays the version of GitVersion /diag Runs GitVersion with additional diagnostic information (requires git.exe to be installed) @@ -94,8 +93,6 @@ GitVersion [path] Use this switch to override /nofetch Disables 'git fetch' during version calculation. Might cause GitVersion to not calculate your version as expected. - -gitversion init Configuration utility for gitversion ``` ## Override config diff --git a/src/GitVersion.App/ArgumentParserExtensions.cs b/src/GitVersion.App/ArgumentParserExtensions.cs index ecc930d5f0..8370c70d28 100644 --- a/src/GitVersion.App/ArgumentParserExtensions.cs +++ b/src/GitVersion.App/ArgumentParserExtensions.cs @@ -65,7 +65,7 @@ public static bool IsSwitch(this string? value, string switchName) public static bool ArgumentRequiresValue(this string argument, int argumentIndex) { - var booleanArguments = new[] { "init", "updateassemblyinfo", "ensureassemblyinfo", "nofetch", "nonormalize", "nocache" }; + var booleanArguments = new[] { "updateassemblyinfo", "ensureassemblyinfo", "nofetch", "nonormalize", "nocache" }; var argumentMightRequireValue = !booleanArguments.Contains(argument[1..], StringComparer.OrdinalIgnoreCase); From b7fe9e6413f4ed1fe549b3245c464ad6f68fb53b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Jun 2024 15:28:15 +0000 Subject: [PATCH 126/544] (deps): Bump Microsoft.CodeAnalysis.CSharp Bumps the microsoft group with 1 update in the /src directory: [Microsoft.CodeAnalysis.CSharp](https://github.com/dotnet/roslyn). Updates `Microsoft.CodeAnalysis.CSharp` from 4.9.2 to 4.10.0 - [Release notes](https://github.com/dotnet/roslyn/releases) - [Changelog](https://github.com/dotnet/roslyn/blob/main/docs/Breaking%20API%20Changes.md) - [Commits](https://github.com/dotnet/roslyn/commits) --- updated-dependencies: - dependency-name: Microsoft.CodeAnalysis.CSharp dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 12312065a9..9641429f10 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -6,8 +6,8 @@ - - + + From dfaa44201cba205acbade932578fb36d183ab64f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 16:10:50 +0000 Subject: [PATCH 127/544] (deps): Bump YamlDotNet from 15.1.6 to 15.3.0 in /src Bumps [YamlDotNet](https://github.com/aaubry/YamlDotNet) from 15.1.6 to 15.3.0. - [Release notes](https://github.com/aaubry/YamlDotNet/releases) - [Commits](https://github.com/aaubry/YamlDotNet/compare/v15.1.6...v15.3.0) --- updated-dependencies: - dependency-name: YamlDotNet dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 9641429f10..6e73a7c73b 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -35,7 +35,7 @@ - + \ No newline at end of file From 5469df6bc1cb6ce85b08ae0667e3ee17eea305dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 20:26:34 +0000 Subject: [PATCH 128/544] (docs deps): Bump braces from 3.0.2 to 3.0.3 Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3. - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) --- updated-dependencies: - dependency-name: braces dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 50589ade20..95d92488d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -913,12 +913,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -2049,9 +2049,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -16794,12 +16794,12 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "buffer-from": { @@ -17674,9 +17674,9 @@ } }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "requires": { "to-regex-range": "^5.0.1" From bc00146c003f0c4eefed2152c8076ff7d6e02e0b Mon Sep 17 00:00:00 2001 From: HHobeck Date: Mon, 10 Jun 2024 14:34:33 +0200 Subject: [PATCH 129/544] Documenting the git hub flow workflow --- ...amplesForGitFlow_FeatureFromMainBranch.png | Bin 27925 -> 29459 bytes ...tionSamplesForGitHubFlow_FeatureBranch.png | Bin 0 -> 29459 bytes ...tionSamplesForGitHubFlow_ReleaseBranch.png | Bin 0 -> 30967 bytes ...esForGitHubFlow_VersionedReleaseBranch.png | Bin 0 -> 31447 bytes .../branching-strategies/gitflow/examples.md | 9 ++ .../githubflow/examples.md | 79 ++++++++++++++++-- .../DocumentationSamplesForGitHubFlow.cs | 6 ++ 7 files changed, 87 insertions(+), 7 deletions(-) create mode 100644 docs/input/docs/img/DocumentationSamplesForGitHubFlow_FeatureBranch.png create mode 100644 docs/input/docs/img/DocumentationSamplesForGitHubFlow_ReleaseBranch.png create mode 100644 docs/input/docs/img/DocumentationSamplesForGitHubFlow_VersionedReleaseBranch.png diff --git a/docs/input/docs/img/DocumentationSamplesForGitFlow_FeatureFromMainBranch.png b/docs/input/docs/img/DocumentationSamplesForGitFlow_FeatureFromMainBranch.png index ab22724ec96ce420cc32e7bc9ac7dd246f77472f..af6daf6711df53bd02d91f7e22d4de8560497d23 100644 GIT binary patch delta 7466 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 EFE~<2=l}o! delta 5937 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 E0@!>mz5oCK diff --git a/docs/input/docs/img/DocumentationSamplesForGitHubFlow_FeatureBranch.png b/docs/input/docs/img/DocumentationSamplesForGitHubFlow_FeatureBranch.png new file mode 100644 index 0000000000000000000000000000000000000000..af6daf6711df53bd02d91f7e22d4de8560497d23 GIT binary patch literal 29459 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 Date: Mon, 10 Jun 2024 15:11:47 +0200 Subject: [PATCH 130/544] change documentation --- .../docs/learn/branching-strategies/githubflow/examples.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/input/docs/learn/branching-strategies/githubflow/examples.md b/docs/input/docs/learn/branching-strategies/githubflow/examples.md index b723d88614..0f79be951a 100644 --- a/docs/input/docs/learn/branching-strategies/githubflow/examples.md +++ b/docs/input/docs/learn/branching-strategies/githubflow/examples.md @@ -54,8 +54,9 @@ configured to use _continuous deployment_ the version would be `2.0.0`. ## Release Branches -Release branches are used for major and minor releases to stabilize a RC -(Release Candidate) or to integrate features (in parallel) targeting different +Release branches are used for major, minor and patch releases to stabilize a RC +(Release Candidate) or to integrate features/hotfixes (in parallel) targeting +different iterations. Release branches are taken from `main` and will be merged back afterwards. Finally the `main` branch is tagged with the released version. From 337f06850fc840d477223cf12bfa7972d9538fbd Mon Sep 17 00:00:00 2001 From: HHobeck Date: Tue, 11 Jun 2024 14:35:23 +0200 Subject: [PATCH 131/544] Update documentation in docs/input/docs/reference/modes/* --- .../reference/modes/continuous-delivery.md | 76 ++++------------- .../reference/modes/continuous-deployment.md | 39 +++------ docs/input/docs/reference/modes/mainline.md | 82 ------------------- .../docs/reference/modes/manual-deployment.md | 38 +++++++++ 4 files changed, 67 insertions(+), 168 deletions(-) delete mode 100644 docs/input/docs/reference/modes/mainline.md create mode 100644 docs/input/docs/reference/modes/manual-deployment.md diff --git a/docs/input/docs/reference/modes/continuous-delivery.md b/docs/input/docs/reference/modes/continuous-delivery.md index a1e824ca91..31d6ae2319 100644 --- a/docs/input/docs/reference/modes/continuous-delivery.md +++ b/docs/input/docs/reference/modes/continuous-delivery.md @@ -2,75 +2,33 @@ Order: 20 Title: Continuous Delivery Description: | - Continuous Delivery is the default versioning mode. In this mode, - GitVersion calculates the next version and will use that until that is - released. + Sometimes you just want the version to keep changing and deploy continuously + to an testing system. In this case, Continuous Delivery is a good mode to + operate GitVersion by. RedirectFrom: docs/reference/versioning-modes/continuous-delivery --- -Continuous Delivery is the practice of having a deployment pipeline and is the -default mode in GitVersion. Each stage of the pipeline gets the code going -through the pipeline closer to production. +Continuous Delivery is the process of checking into a branch, running all the +tests and if everything goes green it is automatically pushed to a testing system. -The topic itself is rather large, here we will just focus on the building and -creation of _releasable_ artifacts. This is only a part of continuous delivery -as a whole, with the hard part being the ability to measure the impacts of what -you have deployed into production. +A good case for Continuous Delivery is when using Octopus deploy, as you +cannot publish the same version of a package into the same feed. -In essence continuous delivery means: - -* Your code is automatically built and tested -* If any of the automated tests fail, the team's #1 priority is to fix the - build -* If the build is green, the application can be deployed at any time - * Ideally the business should make that decision - * The same artifacts which were built and tested should be deployed - * That means no rebuilding everything when you are deploying - -Continuous delivery does not work well with GitFlow. The reason is that you are -required to _merge_ to main to do a release, triggering a rebuild and a new -set of artifacts to go through your pipeline. Depending on how long your -pipeline is, this could be a while. - -GitHubFlow is a better fit for Continuous delivery, the [mainline -development][mainline] model means that every merged feature branch will be -built as a _stable_ version and if the build/builds go green then you are free -to deploy to production at any time. - -## Usage - -By default, GitVersion is set up to do Continuous Delivery on all branches but -`develop`, which is set up with [Continuous Deployment][continuous-deployment]. -To change the mode to Continuous Delivery, change your -[configuration][configuration] to: - -```yaml -mode: ContinuousDelivery -``` +For this mode we follow the logic in [this blog post by Xavier Decoster][blog] +on the issues of incrementing automatically. ## How Continuous Delivery affects GitVersion -The thing about continuous delivery is that there will be _multiple_ candidates -to deploy to production and it is a human choice to deploy. This means that -GitVersion will build **the same semantic version** until that version is -deployed. For instance: - -* 1.1.0+5 -* 1.1.0+6 -* 1.1.0+7 <-- This is the artifact we release, tag the commit which created - this version -* 1.1.1+0 - -Tags are required in this mode to communicate when the release is done as it's -an external manual process. +Continuous delivery is good when you deploy continuously to an testing system. -## Resources +* 1.1.0-3 +* 1.1.0-2 (tag: 1.1.0-2) <-- This is the version which has been deployed on testing +* 1.1.0-1 +* 1.1.1-0 -* [Continuous Delivery on Wikipedia][wikipedia] -* [Continuous Delivery, the book][book] +Tags are not required but optional in this mode to communicate when the release +is done as it's an automated process. -[book]: https://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912 [configuration]: /docs/reference/configuration -[continuous-deployment]: /docs/reference/modes/continuous-deployment -[mainline]: /docs/reference/modes/mainline +[blog]: https://www.xavierdecoster.com/semantic-versioning-auto-incremented-nuget-package-versions [wikipedia]: https://en.wikipedia.org/wiki/Continuous_delivery diff --git a/docs/input/docs/reference/modes/continuous-deployment.md b/docs/input/docs/reference/modes/continuous-deployment.md index 999256d779..0c2d285aab 100644 --- a/docs/input/docs/reference/modes/continuous-deployment.md +++ b/docs/input/docs/reference/modes/continuous-deployment.md @@ -3,42 +3,27 @@ Order: 30 Title: Continuous Deployment Description: | Sometimes you just want the version to keep changing and deploy continuously. - In this case, Continuous Deployment is a good mode to operate GitVersion by. RedirectFrom: docs/reference/versioning-modes/continuous-deployment --- -Continuous Deployment is the process of checking into main, running all the -tests and if everything goes green it is automatically pushed to production. - -A good case for Continuous Deployment is when using Octopus deploy, as you -cannot publish the same version of a package into the same feed. +Continuous Deployment is the process of checking into main and automatically +deploying to production. For this mode we follow the logic in [this blog post by Xavier Decoster][blog] on the issues of incrementing automatically. -As such we force a pre-release tag on all branches, this is fine for -applications but can cause problems for libraries. As such this mode may or may -not work for you, which leads us into a new mode in v4 of GitVersion: -[Mainline Development][mainline]. - -### Usage +## How Continuous Deployment affects GitVersion -By default GitVersion is set up to do Continuous Deployment versioning on the -`develop` branch, but for all other branches, [Continuous -Delivery][continuous-delivery] is the default mode. From version 3 of GitVersion -this behavior is [configurable][configuration]. +The thing about continuous deployment is that there will be only one version +to deploy on production. This means that GitVersion will build +**the same semantic version** for every commit until it has been tagged. For instance: -The default behavior for v3 and how v1 & 2 worked was that the version only -incremented after a tag, which signified a release. In v3 you can simply switch -the default mode in the [configuration][configuration] from `ContinuousDelivery` -to `ContinuousDeployment` and the version will then increment each commit, -giving you the features of GitVersion with continuous deployment: +* 1.2.0 +* 1.1.0 (tag: 1.1.0) <-- This is the version which has been deployed on production +* 1.1.0 +* 1.1.1 -```yaml -mode: ContinuousDeployment -``` +Tags are required in this mode to communicate when the deployement happens on production. -[blog]: https://www.xavierdecoster.com/semantic-versioning-auto-incremented-nuget-package-versions [configuration]: /docs/reference/configuration -[continuous-delivery]: /docs/reference/modes/continuous-delivery -[mainline]: /docs/reference/modes/mainline +[blog]: https://www.xavierdecoster.com/semantic-versioning-auto-incremented-nuget-package-versions diff --git a/docs/input/docs/reference/modes/mainline.md b/docs/input/docs/reference/modes/mainline.md deleted file mode 100644 index d88129e418..0000000000 --- a/docs/input/docs/reference/modes/mainline.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -Order: 40 -Title: Mainline Development -Description: | - Mainline Development versioning mode works like the Continuous Delivery, - except that it tells GitVersion to *infer* releases from merges and commits - to `main`. -RedirectFrom: docs/reference/versioning-modes/mainline-development ---- - -:::{.alert .alert-danger} - **`Mainline` mode was deprecated in version 6 of GitVersion.** See [the following pull request](https://github.com/GitTools/GitVersion/pull/3844) for details. -::: - -Mainline Development is enabled when using [GitHubFlow][githubflow] or any other -strategy where you develop on `main`. The main rule of mainline development is -that **main is always in a state that it could be deployed to production**. This -means that pull requests should not be merged until they are ready to go out. - -To properly achieve mainline development you need confidence in your test suite -as if it goes green against a PR then you are confident that you can merge and -release that pull request. Another property of mainline development is normally -that you fix going forward, not revert. When an issue is discovered with a -release, add a test or some sort of check to make sure it won't happen again, -fix the issue, then do a release with the fix. - -Like all things, it is an approach and will work for some people and not for -others. GitVersion is unique in the fact that it works very well with mainline -development and the version numbers it generates are _predictive_ and indicate -what the next version to be released is. Most other approaches require bumping -the version number before the release which means that the version being built -and the version number which will be deployed are often different. - -This mode is great if you do not want to tag each release because you simply -deploy every commit to main. The behaviour of this mode is as follows: - -1. Calculate a base version (likely a tag in this mode) -2. Walk all commits from the base version commit -3. When a merge commit is found: - - * Calculate increments for each direct commit on main - * Calculate the increment for the branch - -4. Calculate increments for each remaining direct commit -5. For feature branches then calculate increment for the commits so far on your - feature branch. - -If you _do not want_ GitVersion to treat a commit or a pull request as a release -and increment the version you can use `+semver: none` or `+semver: skip` in a -commit message to skip incrementing for that commit. - -Here is an example of what mainline development looks like: - -![Mainline mode][mainline-img] - -:::{.alert .alert-warning} -**Warning** - -This approach can slow down over time, we recommend to tag -intermittently (maybe for minor or major releases) because then GitVersion -will start the version calculation from that point. Much like a snapshot in an -event sourced system. We will probably add in warnings to tag when things are -slowing down. -::: - -## Usage - -By default GitVersion is set up to do [Continuous Delivery][continuous-delivery] -versioning on all branches but `develop` (which does [Continuous -Deployment][continuous-deployment] by default). To change the [versioning -mode][modes] to Mainline Development, just change the [configuration][configuration] as such: - -```yaml -mode: Mainline -``` - -[configuration]: /docs/reference/configuration -[continuous-delivery]: /docs/reference/modes/continuous-delivery -[continuous-deployment]: /docs/reference/modes/continuous-deployment -[githubflow]: /docs/learn/branching-strategies/githubflow -[mainline-img]: /docs/img/mainline-mode.png -[modes]: /docs/reference/modes diff --git a/docs/input/docs/reference/modes/manual-deployment.md b/docs/input/docs/reference/modes/manual-deployment.md new file mode 100644 index 0000000000..357c65eedd --- /dev/null +++ b/docs/input/docs/reference/modes/manual-deployment.md @@ -0,0 +1,38 @@ +--- +Order: 10 +Title: Manual Deployment +Description: | + The Manual Deployment mode can be used to remain on the same pre-released + version until it has been deployed dedicatedly. + +RedirectFrom: docs/reference/versioning-modes/manual-deployment +--- + +Having not the necessity to deploy the build artifacts on every commit is an +indecation of using the __Manual Deployment__ mode. This mode can be used to +remain on the same pre-released version until it has been deployed dedicatedly. + +## How Manual Deployment affects GitVersion + +The thing about manual deployment is that there will be _multiple_ candidates +to deploy on testing and it is a human choice to deploy. This means that +GitVersion will build **the same semantic version** until that version is +deployed. For instance: + +* 1.1.0-2+1 +* 1.1.0-1+2 (tag: 1.1.0-1) <-- This is the version which has been deployed on testing +* 1.1.0-1+1 +* 1.1.1-1+0 + +Tags are required in this mode to communicate when the release is done as it's +an external manual process. + +## Resources + +* [Configuration][configuration] +* [Continuous Delivery on Wikipedia][wikipedia] +* [Continuous Delivery, the book][book] + +[configuration]: /docs/reference/configuration +[book]: https://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912 +[wikipedia]: https://en.wikipedia.org/wiki/Continuous_delivery From e67abc4b737a4ef2d86c9aae1384573c01a07506 Mon Sep 17 00:00:00 2001 From: Hardy Hobeck <56404113+HHobeck@users.noreply.github.com> Date: Tue, 11 Jun 2024 14:38:46 +0200 Subject: [PATCH 132/544] Update continuous-delivery.md --- docs/input/docs/reference/modes/continuous-delivery.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/input/docs/reference/modes/continuous-delivery.md b/docs/input/docs/reference/modes/continuous-delivery.md index 31d6ae2319..7074c40704 100644 --- a/docs/input/docs/reference/modes/continuous-delivery.md +++ b/docs/input/docs/reference/modes/continuous-delivery.md @@ -3,8 +3,8 @@ Order: 20 Title: Continuous Delivery Description: | Sometimes you just want the version to keep changing and deploy continuously - to an testing system. In this case, Continuous Delivery is a good mode to - operate GitVersion by. + to an testing system. In this case, Continuous Delivery is a good mode to + operate GitVersion by. RedirectFrom: docs/reference/versioning-modes/continuous-delivery --- From 33594576c03a00872a3f5ca5fd6f21ebb6cab883 Mon Sep 17 00:00:00 2001 From: Hardy Hobeck <56404113+HHobeck@users.noreply.github.com> Date: Tue, 11 Jun 2024 14:39:28 +0200 Subject: [PATCH 133/544] Update manual-deployment.md --- docs/input/docs/reference/modes/manual-deployment.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/input/docs/reference/modes/manual-deployment.md b/docs/input/docs/reference/modes/manual-deployment.md index 357c65eedd..2b9a7eeafb 100644 --- a/docs/input/docs/reference/modes/manual-deployment.md +++ b/docs/input/docs/reference/modes/manual-deployment.md @@ -3,8 +3,7 @@ Order: 10 Title: Manual Deployment Description: | The Manual Deployment mode can be used to remain on the same pre-released - version until it has been deployed dedicatedly. - + version until it has been deployed dedicatedly. RedirectFrom: docs/reference/versioning-modes/manual-deployment --- From 199a9605ac055299f0477d87f33a5901f0259fda Mon Sep 17 00:00:00 2001 From: Hardy Hobeck <56404113+HHobeck@users.noreply.github.com> Date: Tue, 11 Jun 2024 14:41:25 +0200 Subject: [PATCH 134/544] Update continuous-deployment.md --- docs/input/docs/reference/modes/continuous-deployment.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/input/docs/reference/modes/continuous-deployment.md b/docs/input/docs/reference/modes/continuous-deployment.md index 0c2d285aab..852936e67f 100644 --- a/docs/input/docs/reference/modes/continuous-deployment.md +++ b/docs/input/docs/reference/modes/continuous-deployment.md @@ -25,5 +25,10 @@ to deploy on production. This means that GitVersion will build Tags are required in this mode to communicate when the deployement happens on production. +## Resources + +* [Configuration][configuration] +* [Semantic Versioning & auto-incremented NuGet package versions][blog] + [configuration]: /docs/reference/configuration [blog]: https://www.xavierdecoster.com/semantic-versioning-auto-incremented-nuget-package-versions From 78e2b167b92cf53091cf75dd4eccaf6accd757a2 Mon Sep 17 00:00:00 2001 From: Hardy Hobeck <56404113+HHobeck@users.noreply.github.com> Date: Tue, 11 Jun 2024 14:42:58 +0200 Subject: [PATCH 135/544] Update continuous-delivery.md --- docs/input/docs/reference/modes/continuous-delivery.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/input/docs/reference/modes/continuous-delivery.md b/docs/input/docs/reference/modes/continuous-delivery.md index 7074c40704..d1d2a1e712 100644 --- a/docs/input/docs/reference/modes/continuous-delivery.md +++ b/docs/input/docs/reference/modes/continuous-delivery.md @@ -29,6 +29,12 @@ Continuous delivery is good when you deploy continuously to an testing system. Tags are not required but optional in this mode to communicate when the release is done as it's an automated process. +## Resources + +* [Configuration][configuration] +* [Semantic Versioning & auto-incremented NuGet package versions][blog] +* [Continuous delivery][wikipedia] + [configuration]: /docs/reference/configuration [blog]: https://www.xavierdecoster.com/semantic-versioning-auto-incremented-nuget-package-versions [wikipedia]: https://en.wikipedia.org/wiki/Continuous_delivery From 8bf5b9c332305e0bd9adc96b06e2d7053a0ae5d5 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Mon, 24 Jun 2024 13:18:27 +0200 Subject: [PATCH 136/544] Add TrunkBased workflow for experimental usage only --- docs/input/docs/reference/configuration.md | 86 +++++++++++++++++++ .../TrunkBased/{v1.yml => preview1.yml} | 0 .../GitVersion.Configuration.csproj | 4 +- 3 files changed, 88 insertions(+), 2 deletions(-) rename docs/input/docs/workflows/TrunkBased/{v1.yml => preview1.yml} (100%) diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index 57df2661aa..e185710262 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -37,6 +37,7 @@ The following supported workflow configurations are available in GitVersion and - GitFlow (GitFlow/v1) - GitHubFlow (GitHubFlow/v1) +- TrunkBased (TrunkBased/preview1) Example of using a `GitHubFlow` workflow with a different `tag-prefix`: @@ -338,6 +339,91 @@ is-release-branch: false is-main-branch: false ``` +The preview built-in configuration (experimental usage only) for the `TrunkBased` workflow (`workflow: TrunkBased/preview1`) looks like: + +```yaml +assembly-versioning-scheme: MajorMinorPatch +assembly-file-versioning-scheme: MajorMinorPatch +tag-prefix: '[vV]?' +version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* +major-version-bump-message: '\+semver:\s?(breaking|major)' +minor-version-bump-message: '\+semver:\s?(feature|minor)' +patch-version-bump-message: '\+semver:\s?(fix|patch)' +no-bump-message: '\+semver:\s?(none|skip)' +tag-pre-release-weight: 60000 +commit-date-format: yyyy-MM-dd +merge-message-formats: {} +update-build-number: true +semantic-version-format: Strict +strategies: +- Mainline +- ConfiguredNextVersion +branches: + main: + mode: ContinuousDeployment + label: '' + increment: Patch + prevent-increment: + of-merged-branch: true + when-current-commit-tagged: true + track-merge-target: false + regex: ^master$|^main$ + source-branches: [] + tracks-release-branches: false + is-release-branch: false + is-main-branch: true + pre-release-weight: 55000 + feature: + increment: Minor + regex: ^features?[/-](?.+) + prevent-increment: + when-current-commit-tagged: false + source-branches: + - main + pre-release-weight: 30000 + hotfix: + increment: Patch + regex: ^hotfix(es)?[/-](?.+) + prevent-increment: + when-current-commit-tagged: false + source-branches: + - main + pre-release-weight: 30000 + pull-request: + mode: ContinuousDelivery + label: PullRequest + increment: Inherit + label-number-pattern: '[/-](?\d+)' + regex: ^(pull|pull\-requests|pr)[/-] + source-branches: + - main + pre-release-weight: 30000 + unknown: + increment: Patch + regex: (?.+) + prevent-increment: + when-current-commit-tagged: false + source-branches: + - main + pre-release-weight: 30000 +ignore: + sha: [] +mode: ContinuousDelivery +label: '{BranchName}' +increment: Inherit +prevent-increment: + of-merged-branch: false + when-branch-merged: false + when-current-commit-tagged: true +track-merge-target: false +track-merge-message: true +commit-message-incrementing: Enabled +regex: '' +tracks-release-branches: false +is-release-branch: false +is-main-branch: false +``` + The details of the available options are as follows: ### workflow diff --git a/docs/input/docs/workflows/TrunkBased/v1.yml b/docs/input/docs/workflows/TrunkBased/preview1.yml similarity index 100% rename from docs/input/docs/workflows/TrunkBased/v1.yml rename to docs/input/docs/workflows/TrunkBased/preview1.yml diff --git a/src/GitVersion.Configuration/GitVersion.Configuration.csproj b/src/GitVersion.Configuration/GitVersion.Configuration.csproj index 17d9bbd4c4..cf3b09fcfe 100644 --- a/src/GitVersion.Configuration/GitVersion.Configuration.csproj +++ b/src/GitVersion.Configuration/GitVersion.Configuration.csproj @@ -40,10 +40,10 @@ - + - + From 7db84078ca6ceddaf74686b9e3aa04d879c30649 Mon Sep 17 00:00:00 2001 From: Hardy Hobeck <56404113+HHobeck@users.noreply.github.com> Date: Tue, 25 Jun 2024 18:56:53 +0200 Subject: [PATCH 137/544] Update docs/input/docs/learn/branching-strategies/gitflow/examples.md Co-authored-by: Artur --- .../docs/learn/branching-strategies/gitflow/examples.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/input/docs/learn/branching-strategies/gitflow/examples.md b/docs/input/docs/learn/branching-strategies/gitflow/examples.md index 057ce4c2a5..1511b617fb 100644 --- a/docs/input/docs/learn/branching-strategies/gitflow/examples.md +++ b/docs/input/docs/learn/branching-strategies/gitflow/examples.md @@ -87,9 +87,9 @@ be merged back afterwards. Finally the `main` branch is tagged with the released version. Release branches can be used in the `GitFlow` as well as `GitHubFlow` workflow. -Sometimes you -want to start on a large feature which may take a while to stabilize so you want -to keep it off main. In these scenarios you can either create a long lived +Sometimes you want to start on a large feature which may take a while +to stabilize so you want to keep it off main. +In these scenarios you can either create a long lived feature branch (if you do not know the version number this large feature will go into, and it's non-breaking) otherwise you can create a release branch for the next major version. You can then submit pull requests to the long lived feature From 31e96d411f7ab9fd70c619bdf82e1fe7a0046a21 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Jun 2024 15:30:53 +0000 Subject: [PATCH 138/544] (build deps): Bump test-summary/action from 2.3 to 2.4 Bumps [test-summary/action](https://github.com/test-summary/action) from 2.3 to 2.4. - [Release notes](https://github.com/test-summary/action/releases) - [Commits](https://github.com/test-summary/action/compare/v2.3...v2.4) --- updated-dependencies: - dependency-name: test-summary/action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/_unit_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/_unit_tests.yml b/.github/workflows/_unit_tests.yml index dadb5300c2..a45dd15db9 100644 --- a/.github/workflows/_unit_tests.yml +++ b/.github/workflows/_unit_tests.yml @@ -33,7 +33,7 @@ jobs: - name: Test Summary - uses: test-summary/action@v2.3 + uses: test-summary/action@v2.4 if: matrix.targetFramework == 'net8.0' with: paths: artifacts/test-results/*.results.xml From c572c8f5580ef69d4973f410ccff3f3cf6cc583f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 28 Jun 2024 16:09:42 +0000 Subject: [PATCH 139/544] (deps): Bump Polly from 8.4.0 to 8.4.1 in /new-cli Bumps [Polly](https://github.com/App-vNext/Polly) from 8.4.0 to 8.4.1. - [Release notes](https://github.com/App-vNext/Polly/releases) - [Changelog](https://github.com/App-vNext/Polly/blob/main/CHANGELOG.md) - [Commits](https://github.com/App-vNext/Polly/compare/8.4.0...8.4.1) --- updated-dependencies: - dependency-name: Polly dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 9f5c2567a3..78e8bda6be 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -11,7 +11,7 @@ - + From 77a412f41e7d21673b7a1422678fbb7dbedf6ea5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 16:16:00 +0000 Subject: [PATCH 140/544] (deps): Bump Polly from 8.4.0 to 8.4.1 in /src Bumps [Polly](https://github.com/App-vNext/Polly) from 8.4.0 to 8.4.1. - [Release notes](https://github.com/App-vNext/Polly/releases) - [Changelog](https://github.com/App-vNext/Polly/blob/main/CHANGELOG.md) - [Commits](https://github.com/App-vNext/Polly/compare/8.4.0...8.4.1) --- updated-dependencies: - dependency-name: Polly dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 6e73a7c73b..3be337b398 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -12,7 +12,7 @@ - + From 03e7d13e5c26f20c1395ecef5cac7f952f564bfc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Jul 2024 16:07:29 +0000 Subject: [PATCH 141/544] (deps): Bump the microsoft group across 1 directory with 2 updates Bumps the microsoft group with 2 updates in the /new-cli directory: Microsoft.CodeAnalysis.CSharp and System.CommandLine. Updates `Microsoft.CodeAnalysis.CSharp` from 4.9.2 to 4.10.0 Updates `System.CommandLine` from 2.0.0-beta4.24209.3 to 2.0.0-beta4.24324.3 --- updated-dependencies: - dependency-name: Microsoft.CodeAnalysis.CSharp dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: System.CommandLine dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 78e8bda6be..cc51a690e7 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -6,7 +6,7 @@ - + @@ -20,6 +20,6 @@ - + \ No newline at end of file From c274acce61a037301dad1350d1f231cc5b75df90 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Jul 2024 16:09:05 +0000 Subject: [PATCH 142/544] (deps): Bump the serilog group across 1 directory with 2 updates Bumps the serilog group with 2 updates in the /new-cli directory: Serilog.Sinks.Console and Serilog.Sinks.File. Updates `Serilog.Sinks.Console` from 5.0.1 to 6.0.0 Updates `Serilog.Sinks.File` from 5.0.0 to 6.0.0 --- updated-dependencies: - dependency-name: Serilog.Sinks.Console dependency-type: direct:production update-type: version-update:semver-major dependency-group: serilog - dependency-name: Serilog.Sinks.File dependency-type: direct:production update-type: version-update:semver-major dependency-group: serilog ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 78e8bda6be..6cc66d25e1 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -17,8 +17,8 @@ - - + + From b19930ae3807422fdd499c9683bd4fa0241883b9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Jul 2024 16:09:28 +0000 Subject: [PATCH 143/544] (deps): Bump xunit.assert from 2.8.0 to 2.8.1 in /build Bumps xunit.assert from 2.8.0 to 2.8.1. --- updated-dependencies: - dependency-name: xunit.assert dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Directory.Packages.props b/build/Directory.Packages.props index efa2664748..5e6cd2cd1c 100644 --- a/build/Directory.Packages.props +++ b/build/Directory.Packages.props @@ -14,6 +14,6 @@ - + \ No newline at end of file From 44fa333ee3123e73ea25708b814196ea86288368 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jul 2024 15:21:45 +0000 Subject: [PATCH 144/544] (deps): Bump System.Text.Json Bumps the microsoft group with 1 update in the /src directory: System.Text.Json. Updates `System.Text.Json` from 8.0.3 to 8.0.4 --- updated-dependencies: - dependency-name: System.Text.Json dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 3be337b398..9451a4cc04 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -34,7 +34,7 @@ - + From 683cc150fac68c19d37891b885601df0051541f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jul 2024 15:22:05 +0000 Subject: [PATCH 145/544] (deps): Bump xunit.assert from 2.8.1 to 2.9.0 in /build Bumps xunit.assert from 2.8.1 to 2.9.0. --- updated-dependencies: - dependency-name: xunit.assert dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- build/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Directory.Packages.props b/build/Directory.Packages.props index 5e6cd2cd1c..3632fa589a 100644 --- a/build/Directory.Packages.props +++ b/build/Directory.Packages.props @@ -14,6 +14,6 @@ - + \ No newline at end of file From d9c76018a9673d385d97e75a7afd9c5eee84d60f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Jul 2024 16:19:50 +0000 Subject: [PATCH 146/544] (deps): Bump gitreleasemanager.tool from 0.17.0 to 0.18.0 Bumps gitreleasemanager.tool from 0.17.0 to 0.18.0. --- updated-dependencies: - dependency-name: gitreleasemanager.tool dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .config/dotnet-tools.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 1327cd3a52..50a3e3e038 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "gitreleasemanager.tool": { - "version": "0.17.0", + "version": "0.18.0", "commands": [ "dotnet-gitreleasemanager" ] From 1a1646c6719233e09daca801336c5237bf7d62f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Jul 2024 15:46:26 +0000 Subject: [PATCH 147/544] (deps): Bump Serilog.Sinks.Map Bumps the serilog group with 1 update in the /new-cli directory: Serilog.Sinks.Map. Updates `Serilog.Sinks.Map` from 1.0.2 to 2.0.0 --- updated-dependencies: - dependency-name: Serilog.Sinks.Map dependency-type: direct:production update-type: version-update:semver-major dependency-group: serilog ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 931ce623ed..324ebd07a9 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -19,7 +19,7 @@ - + \ No newline at end of file From 13ccb8f9d982c0ea1199c35cdb06fdd0bbc1268c Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 15 Jul 2024 21:09:35 +0200 Subject: [PATCH 148/544] code cleanup --- src/GitVersion.App.Tests/HelpWriterTests.cs | 4 ++-- .../IntegrationTests/DocumentationSamplesForGitFlow.cs | 2 +- .../VersionCalculation/IncrementStrategyFinder.cs | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/GitVersion.App.Tests/HelpWriterTests.cs b/src/GitVersion.App.Tests/HelpWriterTests.cs index e653ed21ed..9fa4cc1283 100644 --- a/src/GitVersion.App.Tests/HelpWriterTests.cs +++ b/src/GitVersion.App.Tests/HelpWriterTests.cs @@ -53,8 +53,8 @@ public void AllArgsAreInHelp() private static bool IsNotInHelp(IReadOnlyDictionary lookup, string propertyName, string helpText) { - if (lookup.ContainsKey(propertyName)) - return !helpText.Contains(lookup[propertyName]); + if (lookup.TryGetValue(propertyName, out var value)) + return !helpText.Contains(value); return !helpText.Contains("/" + propertyName.ToLower()); } diff --git a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs index 1931cec402..1fc0cd9df7 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/DocumentationSamplesForGitFlow.cs @@ -242,7 +242,7 @@ public void FeatureFromDevelopBranchWithMainline(bool withPullRequestIntoDevelop var configuration = GitFlowConfigurationBuilder.New .WithNextVersion("1.2.0") .WithVersionStrategies(VersionStrategies.ConfiguredNextVersion, VersionStrategies.Mainline) - .WithBranch("feature", _ => _.WithIncrement(IncrementStrategy.Minor)) + .WithBranch("feature", builder => builder.WithIncrement(IncrementStrategy.Minor)) .Build(); using var fixture = new EmptyRepositoryFixture(); diff --git a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs index 2a02f7bd6c..eb528f0253 100644 --- a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs @@ -116,9 +116,9 @@ private IReadOnlyCollection GetCommitHistory(string? tagPrefix, Semanti var targetShas = new Lazy>(() => taggedSemanticVersionRepository .GetTaggedSemanticVersions(tagPrefix, semanticVersionFormat, ignore) - .SelectMany(_ => _) - .Where(_ => _.Value.IsMatchForBranchSpecificLabel(label)) - .Select(_ => _.Tag.TargetSha) + .SelectMany(versionWithTags => versionWithTags) + .Where(versionWithTag => versionWithTag.Value.IsMatchForBranchSpecificLabel(label)) + .Select(versionWithTag => versionWithTag.Tag.TargetSha) .ToHashSet() ); From be9ccdad94fcccce41329ed2f9c90752cbaa22ba Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 15 Jul 2024 21:25:02 +0200 Subject: [PATCH 149/544] use sdk 8.0.303 --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index 20f980a181..e367ffcf00 100644 --- a/global.json +++ b/global.json @@ -5,6 +5,6 @@ "src" ], "sdk": { - "version": "8.0.300" + "version": "8.0.303" } } From 9d7452d887a2f1f4c0988616a8064d6314260167 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 15 Jul 2024 21:58:58 +0200 Subject: [PATCH 150/544] #4078 - update dockerhub README info --- .../Utilities/DockerContextExtensions.cs | 2 +- build/docker/Tasks/DockerHubReadmePublish.cs | 20 +++++++- docs/input/docs/usage/docker.md | 47 ++++++++++++++----- 3 files changed, 55 insertions(+), 14 deletions(-) diff --git a/build/common/Utilities/DockerContextExtensions.cs b/build/common/Utilities/DockerContextExtensions.cs index ad043b03a1..80eb3b86be 100644 --- a/build/common/Utilities/DockerContextExtensions.cs +++ b/build/common/Utilities/DockerContextExtensions.cs @@ -202,7 +202,7 @@ private static IEnumerable GetDockerTags(this BuildContextBase context, var distro = dockerImage.Distro; var targetFramework = dockerImage.TargetFramework; - if (context.Version == null) return Enumerable.Empty(); + if (context.Version == null) return []; var tags = new List { $"{name}:{context.Version.Version}-{distro}-{targetFramework}", diff --git a/build/docker/Tasks/DockerHubReadmePublish.cs b/build/docker/Tasks/DockerHubReadmePublish.cs index dde53c1a72..f9e1531fd9 100644 --- a/build/docker/Tasks/DockerHubReadmePublish.cs +++ b/build/docker/Tasks/DockerHubReadmePublish.cs @@ -55,6 +55,7 @@ private static string GetReadmeContent(BuildContextBase context) // language=markdown var readme = $""" # GitVersion + ![GitVersion – From git log to SemVer in no time][banner] Versioning when using Git, solved. GitVersion looks at your git history and works out the [Semantic Version][semver] of the commit being built. @@ -63,18 +64,35 @@ private static string GetReadmeContent(BuildContextBase context) ## Usage -The recommended image to run is `alpine`, as they are the smallest Docker images we provide (83 MB). This will execute GitVersion for the current working directory (`$(pwd)`) on Linux and Unix or powershell on Windows: +The recommended image to run is `alpine`, as they are the smallest Docker images we provide. This will execute GitVersion for the current working directory (`$(pwd)`) on Linux and Unix or powershell on Windows: ```sh docker run --rm -v "$(pwd):/repo" gittools/gitversion:{tag} /repo ``` + The following command will execute GitVersion for the current working directory (`%CD%`) on Windows with CMD: ```sh docker run --rm -v "%CD%:/repo" gittools/gitversion:{tag} /repo ``` + Note that the path `/repo` needs to be passed as an argument since the `gitversion` executable within the container is not aware of the fact that it's running inside a container. +### CI Agents + +If you are running GitVersion on a CI agent, you may need to specify environment variables to allow GitVersion to work correctly. +For example, on Azure DevOps you may need to set the following environment variables: + +```sh +docker run --rm -v "$(pwd):/repo" --env TF_BUILD=true --env BUILD_SOURCEBRANCH=$(Build.SourceBranch) gittools/gitversion:{tag} /repo +``` + +On GitHub Actions, you may need to set the following environment variables: + +```sh +docker run --rm -v "$(pwd):/repo" --env GITHUB_ACTIONS=true --env GITHUB_REF=$(GITHUB_REF) gittools/gitversion:{tag} /repo +``` + ### Tags Most of the tags we provide have both arm64 and amd64 variants. If you need to pull a architecture specific tag you can do that like: diff --git a/docs/input/docs/usage/docker.md b/docs/input/docs/usage/docker.md index 5d70058ce1..f7d7c2cb96 100644 --- a/docs/input/docs/usage/docker.md +++ b/docs/input/docs/usage/docker.md @@ -5,22 +5,45 @@ Description: | Use GitVersion through one of its many published Docker containers. --- -GitVersion can be used through one of its many published Docker -containers. The list of available containers can be found on -[Docker Hub][docker-hub]. Once you've found the image you want to use, -you can run it like this: +The recommended image to run is `alpine`, as they are the smallest Docker images we provide. This will execute GitVersion for the current working directory (`$(pwd)`) on Linux and Unix or powershell on Windows: -```shell -docker run --rm --volume "$(pwd):/repo" gittools/gitversion:6.0.0-fedora.36-6.0 /repo +```sh +docker run --rm -v "$(pwd):/repo" gittools/gitversion:{tag} /repo ``` -The above command will run GitVersion with the current directory -mapped to `/repo` inside the container (the `--volume "$(pwd):/repo"` -part). The `/repo` directory is then passed in as the argument -GitVersion should use to calculate the version. +The following command will execute GitVersion for the current working directory (`%CD%`) on Windows with CMD: -The `--rm` flag will remove the container after it has finished -running. +```sh +docker run --rm -v "%CD%:/repo" gittools/gitversion:{tag} /repo +``` + +Note that the path `/repo` needs to be passed as an argument since the `gitversion` executable within the container is not aware of the fact that it's running inside a container. + +### CI Agents + +If you are running GitVersion on a CI agent, you may need to specify environment variables to allow GitVersion to work correctly. +For example, on Azure DevOps you may need to set the following environment variables: + +```sh +docker run --rm -v "$(pwd):/repo" --env TF_BUILD=true --env BUILD_SOURCEBRANCH=$(Build.SourceBranch) gittools/gitversion:{tag} /repo +``` + +On GitHub Actions, you may need to set the following environment variables: + +```sh +docker run --rm -v "$(pwd):/repo" --env GITHUB_ACTIONS=true --env GITHUB_REF=$(GITHUB_REF) gittools/gitversion:{tag} /repo +``` + +### Tags + +Most of the tags we provide have both arm64 and amd64 variants. If you need to pull a architecture specific tag you can do that like: + +```sh +docker run --rm -v "$(pwd):/repo" gittools/gitversion:{tag}-amd64 /repo +docker run --rm -v "$(pwd):/repo" gittools/gitversion:{tag}-arm64 /repo +``` + +The list of available containers can be found on [Docker Hub][docker-hub]. [Explore GitVersion on Docker Hub][docker-hub]{.btn .btn-primary} From 786a159bb82a96882deff05f9e58c63dd5c316fc Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 15 Jul 2024 22:58:19 +0200 Subject: [PATCH 151/544] #4078 - update publishing docker images publish docker image with MajorMinorPatch only on Stable releases --- build/common/Utilities/DockerContextExtensions.cs | 3 ++- build/common/Utilities/Models.cs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/build/common/Utilities/DockerContextExtensions.cs b/build/common/Utilities/DockerContextExtensions.cs index 80eb3b86be..c20e106994 100644 --- a/build/common/Utilities/DockerContextExtensions.cs +++ b/build/common/Utilities/DockerContextExtensions.cs @@ -211,12 +211,13 @@ private static IEnumerable GetDockerTags(this BuildContextBase context, if (distro == Constants.DockerDistroLatest && targetFramework == Constants.VersionLatest) { - tags.AddRange(new[] { $"{name}:{context.Version.Version}", $"{name}:{context.Version.SemVersion}", }); + tags.Add($"{name}:{context.Version.SemVersion}"); if (context.IsStableRelease) { tags.AddRange( [ + $"{name}:{context.Version.Version}", $"{name}:latest", $"{name}:latest-{targetFramework}", $"{name}:latest-{distro}", diff --git a/build/common/Utilities/Models.cs b/build/common/Utilities/Models.cs index d36317d0a9..a90d493e16 100644 --- a/build/common/Utilities/Models.cs +++ b/build/common/Utilities/Models.cs @@ -40,7 +40,7 @@ public static BuildVersion Calculate(GitVersion gitVersion) nugetVersion += $".{gitVersion.BuildMetaData}"; } - return new BuildVersion( + return new( GitVersion: gitVersion, Version: version, Milestone: semVersion, From 1736ea284a8b2f3a2f6f053ff98cacc44617c45d Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 15 Jul 2024 23:50:14 +0200 Subject: [PATCH 152/544] update CodecovUploader --- build/common/Utilities/Tools.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/common/Utilities/Tools.cs b/build/common/Utilities/Tools.cs index 74316e35a0..f6bbbbf68f 100644 --- a/build/common/Utilities/Tools.cs +++ b/build/common/Utilities/Tools.cs @@ -6,6 +6,6 @@ public class Tools public static readonly Dictionary Versions = new() { - { CodecovUploaderCmd, "0.7.1" }, + { CodecovUploaderCmd, "0.7.3" }, }; } From 031feb04995edc4adfbf7ff315a060bc3ca7bbee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 15:50:06 +0000 Subject: [PATCH 153/544] (deps): Bump YamlDotNet from 15.3.0 to 16.0.0 in /src Bumps YamlDotNet from 15.3.0 to 16.0.0. --- updated-dependencies: - dependency-name: YamlDotNet dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- src/GitVersion.Configuration/ConfigurationSerializer.cs | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 9451a4cc04..130fb8a2dc 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -35,7 +35,7 @@ - + \ No newline at end of file diff --git a/src/GitVersion.Configuration/ConfigurationSerializer.cs b/src/GitVersion.Configuration/ConfigurationSerializer.cs index 75b30caddd..df18446214 100644 --- a/src/GitVersion.Configuration/ConfigurationSerializer.cs +++ b/src/GitVersion.Configuration/ConfigurationSerializer.cs @@ -22,6 +22,10 @@ internal class ConfigurationSerializer : IConfigurationSerializer private sealed class JsonPropertyNameInspector(ITypeInspector innerTypeDescriptor) : TypeInspectorSkeleton { + public override string GetEnumName(Type enumType, string name) => innerTypeDescriptor.GetEnumName(enumType, name); + + public override string GetEnumValue(object enumValue) => innerTypeDescriptor.GetEnumValue(enumValue); + public override IEnumerable GetProperties(Type type, object? container) => innerTypeDescriptor.GetProperties(type, container) .Where(p => p.GetCustomAttribute() == null) From b32402e6ca122405a916f622792988442e25c6e2 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 16 Jul 2024 01:15:47 +0200 Subject: [PATCH 154/544] update Buildalyzer --- src/Directory.Packages.props | 3 ++- src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 130fb8a2dc..26598bfb17 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -8,6 +8,7 @@ + @@ -16,7 +17,7 @@ - + diff --git a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj index 5aeabac2af..f709d21896 100644 --- a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj +++ b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj @@ -7,6 +7,8 @@ + + From 91720b3e10526f81ed8136db0afb07ca1c1a74d0 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 16 Jul 2024 07:38:37 +0200 Subject: [PATCH 155/544] disable warning CS8669 in new-cli Generator project --- .../GitVersion.Cli.Generator/GitVersion.Cli.Generator.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/GitVersion.Cli.Generator/GitVersion.Cli.Generator.csproj b/new-cli/GitVersion.Cli.Generator/GitVersion.Cli.Generator.csproj index 21318fd5e6..aa293afe82 100644 --- a/new-cli/GitVersion.Cli.Generator/GitVersion.Cli.Generator.csproj +++ b/new-cli/GitVersion.Cli.Generator/GitVersion.Cli.Generator.csproj @@ -5,7 +5,7 @@ true en true - $(NoWarn);RS1035 + $(NoWarn);RS1035;CS8669 From cb76a708abac421b0bacc7bc257575b416a573b4 Mon Sep 17 00:00:00 2001 From: Viktor Rosvall Date: Tue, 9 Jul 2024 11:05:44 +0800 Subject: [PATCH 156/544] Attempt to add the correct trailing slash character before the gitversion.dll --- .../msbuild/tools/GitVersion.MsBuild.targets | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/GitVersion.MsBuild/msbuild/tools/GitVersion.MsBuild.targets b/src/GitVersion.MsBuild/msbuild/tools/GitVersion.MsBuild.targets index d7d2739947..0b86b436b9 100644 --- a/src/GitVersion.MsBuild/msbuild/tools/GitVersion.MsBuild.targets +++ b/src/GitVersion.MsBuild/msbuild/tools/GitVersion.MsBuild.targets @@ -8,10 +8,10 @@ true true - dotnet --roll-forward Major "$(MSBuildThisFileDirectory)$(TargetFramework)/gitversion.dll" - $(MSBuildThisFileDirectory)$(TargetFramework)/GitVersion.MsBuild.dll + dotnet --roll-forward Major "$([MSBuild]::EnsureTrailingSlash($(MSBuildThisFileDirectory)$(TargetFramework)))gitversion.dll" + $([MSBuild]::EnsureTrailingSlash($(MSBuildThisFileDirectory)$(TargetFramework)))GitVersion.MsBuild.dll - + From fcee954e346c2f24f7c979ab6b85827b353b54ae Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 16 Jul 2024 11:10:14 +0200 Subject: [PATCH 157/544] use a specific version of michidk/run-komac --- .github/workflows/winget.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/winget.yml b/.github/workflows/winget.yml index fb983eb46e..1f9e75b3ce 100644 --- a/.github/workflows/winget.yml +++ b/.github/workflows/winget.yml @@ -31,10 +31,10 @@ jobs: $url = "https://github.com/GitTools/GitVersion/releases/download/{0}/gitversion-win-{1}-{0}.zip" $urls = @(($url -f $version, "x64"), ($url -f $version, "arm64")) -Join " " - $run_args = "update --identifier GitTools.GitVersion --version $version --urls $urls --token ${{ secrets.RELEASE_GITHUB_TOKEN }} --submit" + $run_args = "update GitTools.GitVersion --version $version --urls $urls --token ${{ secrets.RELEASE_GITHUB_TOKEN }} --submit" "version=$version" >> $env:GITHUB_OUTPUT "run_args=$run_args" >> $env:GITHUB_OUTPUT - - uses: michidk/run-komac@v2 + - uses: michidk/run-komac@v2.1.0 with: args: '${{ steps.get-version.outputs.run_args }}' \ No newline at end of file From cee9ed6b45ec1ef0ca40967aaada6b47bab108ca Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 16 Jul 2024 14:52:10 +0200 Subject: [PATCH 158/544] #3918 - mark public api as published --- .../PublicAPI.Shipped.txt | 3 + .../PublicAPI.Unshipped.txt | 3 - .../PublicAPI.Shipped.txt | 44 +- .../PublicAPI.Unshipped.txt | 42 - src/GitVersion.Core/PublicAPI.Shipped.txt | 836 ++++++++++++++++++ src/GitVersion.Core/PublicAPI.Unshipped.txt | 836 ------------------ .../PublicAPI.Shipped.txt | 3 + .../PublicAPI.Unshipped.txt | 3 - src/GitVersion.MsBuild/PublicAPI.Shipped.txt | 103 +++ .../PublicAPI.Unshipped.txt | 103 --- src/GitVersion.Output/PublicAPI.Shipped.txt | 13 +- src/GitVersion.Output/PublicAPI.Unshipped.txt | 11 - src/mark-shipped.ps1 | 6 +- 13 files changed, 1003 insertions(+), 1003 deletions(-) diff --git a/src/GitVersion.BuildAgents/PublicAPI.Shipped.txt b/src/GitVersion.BuildAgents/PublicAPI.Shipped.txt index 7dc5c58110..271d1babf9 100644 --- a/src/GitVersion.BuildAgents/PublicAPI.Shipped.txt +++ b/src/GitVersion.BuildAgents/PublicAPI.Shipped.txt @@ -1 +1,4 @@ #nullable enable +GitVersion.Agents.GitVersionBuildAgentsModule +GitVersion.Agents.GitVersionBuildAgentsModule.GitVersionBuildAgentsModule() -> void +GitVersion.Agents.GitVersionBuildAgentsModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void diff --git a/src/GitVersion.BuildAgents/PublicAPI.Unshipped.txt b/src/GitVersion.BuildAgents/PublicAPI.Unshipped.txt index 271d1babf9..7dc5c58110 100644 --- a/src/GitVersion.BuildAgents/PublicAPI.Unshipped.txt +++ b/src/GitVersion.BuildAgents/PublicAPI.Unshipped.txt @@ -1,4 +1 @@ #nullable enable -GitVersion.Agents.GitVersionBuildAgentsModule -GitVersion.Agents.GitVersionBuildAgentsModule.GitVersionBuildAgentsModule() -> void -GitVersion.Agents.GitVersionBuildAgentsModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void diff --git a/src/GitVersion.Configuration/PublicAPI.Shipped.txt b/src/GitVersion.Configuration/PublicAPI.Shipped.txt index 91b0e1a43b..66f6115d77 100644 --- a/src/GitVersion.Configuration/PublicAPI.Shipped.txt +++ b/src/GitVersion.Configuration/PublicAPI.Shipped.txt @@ -1 +1,43 @@ -#nullable enable \ No newline at end of file +#nullable enable +GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Date = 0 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.DateTime = 1 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Duration = 2 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Email = 3 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Hostname = 4 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.IdnEmail = 5 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.IdnHostname = 6 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Ipv4 = 7 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Ipv6 = 8 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Iri = 9 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.IriReference = 10 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.JsonPointer = 11 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Regex = 12 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.RelativeJsonPointer = 13 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Time = 14 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Uri = 15 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.UriReference = 16 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.UriTemplate = 17 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.Format.Uuid = 18 -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute +GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(bool value) -> void +GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(GitVersion.Configuration.AssemblyFileVersioningScheme value) -> void +GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(GitVersion.Configuration.AssemblyVersioningScheme value) -> void +GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(GitVersion.SemanticVersionFormat value) -> void +GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(object? boxedValue) -> void +GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(string? value) -> void +GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.Value.get -> string! +GitVersion.Configuration.Attributes.JsonPropertyDescriptionAttribute +GitVersion.Configuration.Attributes.JsonPropertyDescriptionAttribute.Description.get -> string! +GitVersion.Configuration.Attributes.JsonPropertyDescriptionAttribute.JsonPropertyDescriptionAttribute(string! description) -> void +GitVersion.Configuration.Attributes.JsonPropertyFormatAttribute +GitVersion.Configuration.Attributes.JsonPropertyFormatAttribute.Format.get -> GitVersion.Configuration.Attributes.Format +GitVersion.Configuration.Attributes.JsonPropertyFormatAttribute.JsonPropertyFormatAttribute(GitVersion.Configuration.Attributes.Format format) -> void +GitVersion.Configuration.ConfigurationException +GitVersion.Configuration.ConfigurationException.ConfigurationException() -> void +GitVersion.Configuration.ConfigurationException.ConfigurationException(string! message, System.Exception! innerException) -> void +GitVersion.Configuration.ConfigurationException.ConfigurationException(string! messageFormat, params object![]! args) -> void +GitVersion.Configuration.ConfigurationException.ConfigurationException(string! msg) -> void +GitVersion.Configuration.GitVersionConfigurationModule +GitVersion.Configuration.GitVersionConfigurationModule.GitVersionConfigurationModule() -> void +GitVersion.Configuration.GitVersionConfigurationModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void diff --git a/src/GitVersion.Configuration/PublicAPI.Unshipped.txt b/src/GitVersion.Configuration/PublicAPI.Unshipped.txt index 66f6115d77..7dc5c58110 100644 --- a/src/GitVersion.Configuration/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Configuration/PublicAPI.Unshipped.txt @@ -1,43 +1 @@ #nullable enable -GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.Date = 0 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.DateTime = 1 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.Duration = 2 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.Email = 3 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.Hostname = 4 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.IdnEmail = 5 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.IdnHostname = 6 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.Ipv4 = 7 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.Ipv6 = 8 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.Iri = 9 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.IriReference = 10 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.JsonPointer = 11 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.Regex = 12 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.RelativeJsonPointer = 13 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.Time = 14 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.Uri = 15 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.UriReference = 16 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.UriTemplate = 17 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.Format.Uuid = 18 -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute -GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(bool value) -> void -GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(GitVersion.Configuration.AssemblyFileVersioningScheme value) -> void -GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(GitVersion.Configuration.AssemblyVersioningScheme value) -> void -GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(GitVersion.SemanticVersionFormat value) -> void -GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(object? boxedValue) -> void -GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.JsonPropertyDefaultAttribute(string? value) -> void -GitVersion.Configuration.Attributes.JsonPropertyDefaultAttribute.Value.get -> string! -GitVersion.Configuration.Attributes.JsonPropertyDescriptionAttribute -GitVersion.Configuration.Attributes.JsonPropertyDescriptionAttribute.Description.get -> string! -GitVersion.Configuration.Attributes.JsonPropertyDescriptionAttribute.JsonPropertyDescriptionAttribute(string! description) -> void -GitVersion.Configuration.Attributes.JsonPropertyFormatAttribute -GitVersion.Configuration.Attributes.JsonPropertyFormatAttribute.Format.get -> GitVersion.Configuration.Attributes.Format -GitVersion.Configuration.Attributes.JsonPropertyFormatAttribute.JsonPropertyFormatAttribute(GitVersion.Configuration.Attributes.Format format) -> void -GitVersion.Configuration.ConfigurationException -GitVersion.Configuration.ConfigurationException.ConfigurationException() -> void -GitVersion.Configuration.ConfigurationException.ConfigurationException(string! message, System.Exception! innerException) -> void -GitVersion.Configuration.ConfigurationException.ConfigurationException(string! messageFormat, params object![]! args) -> void -GitVersion.Configuration.ConfigurationException.ConfigurationException(string! msg) -> void -GitVersion.Configuration.GitVersionConfigurationModule -GitVersion.Configuration.GitVersionConfigurationModule.GitVersionConfigurationModule() -> void -GitVersion.Configuration.GitVersionConfigurationModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void diff --git a/src/GitVersion.Core/PublicAPI.Shipped.txt b/src/GitVersion.Core/PublicAPI.Shipped.txt index 7dc5c58110..55ad0b8489 100644 --- a/src/GitVersion.Core/PublicAPI.Shipped.txt +++ b/src/GitVersion.Core/PublicAPI.Shipped.txt @@ -1 +1,837 @@ #nullable enable +const GitVersion.Git.ReferenceName.LocalBranchPrefix = "refs/heads/" -> string! +const GitVersion.Git.ReferenceName.RemoteTrackingBranchPrefix = "refs/remotes/" -> string! +GitVersion.Agents.IBuildAgent +GitVersion.Agents.IBuildAgent.CanApplyToCurrentContext() -> bool +GitVersion.Agents.IBuildAgent.GetCurrentBranch(bool usingDynamicRepos) -> string? +GitVersion.Agents.IBuildAgent.IsDefault.get -> bool +GitVersion.Agents.IBuildAgent.PreventFetch() -> bool +GitVersion.Agents.IBuildAgent.ShouldCleanUpRemotes() -> bool +GitVersion.Agents.IBuildAgent.WriteIntegration(System.Action! writer, GitVersion.OutputVariables.GitVersionVariables! variables, bool updateBuildNumber = true) -> void +GitVersion.Agents.ICurrentBuildAgent +GitVersion.AssemblySettingsInfo +GitVersion.AssemblySettingsInfo.AssemblySettingsInfo() -> void +GitVersion.AssemblySettingsInfo.EnsureAssemblyInfo -> bool +GitVersion.AssemblySettingsInfo.Files -> System.Collections.Generic.ISet! +GitVersion.AssemblySettingsInfo.UpdateAssemblyInfo -> bool +GitVersion.AssemblySettingsInfo.UpdateProjectFiles -> bool +GitVersion.BugException +GitVersion.BugException.BugException() -> void +GitVersion.BugException.BugException(string! message) -> void +GitVersion.BugException.BugException(string? message, System.Exception? innerException) -> void +GitVersion.Common.IRepositoryStore +GitVersion.Common.IRepositoryStore.ExcludingBranches(System.Collections.Generic.IEnumerable! branchesToExclude) -> System.Collections.Generic.IEnumerable! +GitVersion.Common.IRepositoryStore.FindBranch(GitVersion.Git.ReferenceName! branchName) -> GitVersion.Git.IBranch? +GitVersion.Common.IRepositoryStore.FindBranch(string! branchName) -> GitVersion.Git.IBranch? +GitVersion.Common.IRepositoryStore.FindCommitBranchBranchedFrom(GitVersion.Git.IBranch? branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.Git.IBranch![]! excludedBranches) -> GitVersion.Git.BranchCommit +GitVersion.Common.IRepositoryStore.FindCommitBranchesBranchedFrom(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.Git.IBranch![]! excludedBranches) -> System.Collections.Generic.IEnumerable! +GitVersion.Common.IRepositoryStore.FindCommitBranchesBranchedFrom(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, System.Collections.Generic.IEnumerable! excludedBranches) -> System.Collections.Generic.IEnumerable! +GitVersion.Common.IRepositoryStore.FindMergeBase(GitVersion.Git.IBranch? branch, GitVersion.Git.IBranch? otherBranch) -> GitVersion.Git.ICommit? +GitVersion.Common.IRepositoryStore.FindMergeBase(GitVersion.Git.ICommit! commit, GitVersion.Git.ICommit! mainlineTip) -> GitVersion.Git.ICommit? +GitVersion.Common.IRepositoryStore.GetBranchesContainingCommit(GitVersion.Git.ICommit! commit, System.Collections.Generic.IEnumerable? branches = null, bool onlyTrackedBranches = false) -> System.Collections.Generic.IEnumerable! +GitVersion.Common.IRepositoryStore.GetCommitLog(GitVersion.Git.ICommit? baseVersionSource, GitVersion.Git.ICommit! currentCommit, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> System.Collections.Generic.IReadOnlyList! +GitVersion.Common.IRepositoryStore.GetCurrentCommit(GitVersion.Git.IBranch! currentBranch, string? commitId, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> GitVersion.Git.ICommit? +GitVersion.Common.IRepositoryStore.GetNumberOfUncommittedChanges() -> int +GitVersion.Common.IRepositoryStore.GetSourceBranches(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.Git.IBranch![]! excludedBranches) -> System.Collections.Generic.IEnumerable! +GitVersion.Common.IRepositoryStore.GetSourceBranches(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, System.Collections.Generic.IEnumerable! excludedBranches) -> System.Collections.Generic.IEnumerable! +GitVersion.Common.IRepositoryStore.GetTargetBranch(string? targetBranchName) -> GitVersion.Git.IBranch! +GitVersion.Common.IRepositoryStore.IsCommitOnBranch(GitVersion.Git.ICommit? baseVersionSource, GitVersion.Git.IBranch! branch, GitVersion.Git.ICommit! firstMatchingCommit) -> bool +GitVersion.Configuration.AssemblyFileVersioningScheme +GitVersion.Configuration.AssemblyFileVersioningScheme.Major = 3 -> GitVersion.Configuration.AssemblyFileVersioningScheme +GitVersion.Configuration.AssemblyFileVersioningScheme.MajorMinor = 2 -> GitVersion.Configuration.AssemblyFileVersioningScheme +GitVersion.Configuration.AssemblyFileVersioningScheme.MajorMinorPatch = 1 -> GitVersion.Configuration.AssemblyFileVersioningScheme +GitVersion.Configuration.AssemblyFileVersioningScheme.MajorMinorPatchTag = 0 -> GitVersion.Configuration.AssemblyFileVersioningScheme +GitVersion.Configuration.AssemblyFileVersioningScheme.None = 4 -> GitVersion.Configuration.AssemblyFileVersioningScheme +GitVersion.Configuration.AssemblyVersioningScheme +GitVersion.Configuration.AssemblyVersioningScheme.Major = 3 -> GitVersion.Configuration.AssemblyVersioningScheme +GitVersion.Configuration.AssemblyVersioningScheme.MajorMinor = 2 -> GitVersion.Configuration.AssemblyVersioningScheme +GitVersion.Configuration.AssemblyVersioningScheme.MajorMinorPatch = 1 -> GitVersion.Configuration.AssemblyVersioningScheme +GitVersion.Configuration.AssemblyVersioningScheme.MajorMinorPatchTag = 0 -> GitVersion.Configuration.AssemblyVersioningScheme +GitVersion.Configuration.AssemblyVersioningScheme.None = 4 -> GitVersion.Configuration.AssemblyVersioningScheme +GitVersion.Configuration.EffectiveBranchConfiguration +GitVersion.Configuration.EffectiveBranchConfiguration.Branch.get -> GitVersion.Git.IBranch! +GitVersion.Configuration.EffectiveBranchConfiguration.EffectiveBranchConfiguration(GitVersion.Configuration.EffectiveConfiguration! Value, GitVersion.Git.IBranch! Branch) -> void +GitVersion.Configuration.EffectiveBranchConfiguration.Value.get -> GitVersion.Configuration.EffectiveConfiguration! +GitVersion.Configuration.EffectiveConfiguration +GitVersion.Configuration.EffectiveConfiguration.AssemblyFileVersioningFormat.get -> string? +GitVersion.Configuration.EffectiveConfiguration.AssemblyFileVersioningScheme.get -> GitVersion.Configuration.AssemblyFileVersioningScheme +GitVersion.Configuration.EffectiveConfiguration.AssemblyInformationalFormat.get -> string? +GitVersion.Configuration.EffectiveConfiguration.AssemblyVersioningFormat.get -> string? +GitVersion.Configuration.EffectiveConfiguration.AssemblyVersioningScheme.get -> GitVersion.Configuration.AssemblyVersioningScheme +GitVersion.Configuration.EffectiveConfiguration.CommitDateFormat.get -> string? +GitVersion.Configuration.EffectiveConfiguration.CommitMessageIncrementing.get -> GitVersion.VersionCalculation.CommitMessageIncrementMode +GitVersion.Configuration.EffectiveConfiguration.DeploymentMode.get -> GitVersion.VersionCalculation.DeploymentMode +GitVersion.Configuration.EffectiveConfiguration.EffectiveConfiguration(GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.Configuration.IBranchConfiguration! branchConfiguration, GitVersion.Configuration.EffectiveConfiguration? fallbackConfiguration = null) -> void +GitVersion.Configuration.EffectiveConfiguration.Ignore.get -> GitVersion.Configuration.IIgnoreConfiguration! +GitVersion.Configuration.EffectiveConfiguration.Increment.get -> GitVersion.IncrementStrategy +GitVersion.Configuration.EffectiveConfiguration.IsMainBranch.get -> bool +GitVersion.Configuration.EffectiveConfiguration.IsReleaseBranch.get -> bool +GitVersion.Configuration.EffectiveConfiguration.Label.get -> string? +GitVersion.Configuration.EffectiveConfiguration.LabelNumberPattern.get -> string? +GitVersion.Configuration.EffectiveConfiguration.MajorVersionBumpMessage.get -> string? +GitVersion.Configuration.EffectiveConfiguration.MinorVersionBumpMessage.get -> string? +GitVersion.Configuration.EffectiveConfiguration.NextVersion.get -> string? +GitVersion.Configuration.EffectiveConfiguration.NoBumpMessage.get -> string? +GitVersion.Configuration.EffectiveConfiguration.PatchVersionBumpMessage.get -> string? +GitVersion.Configuration.EffectiveConfiguration.PreReleaseWeight.get -> int +GitVersion.Configuration.EffectiveConfiguration.PreventIncrementOfMergedBranch.get -> bool +GitVersion.Configuration.EffectiveConfiguration.PreventIncrementWhenBranchMerged.get -> bool +GitVersion.Configuration.EffectiveConfiguration.PreventIncrementWhenCurrentCommitTagged.get -> bool +GitVersion.Configuration.EffectiveConfiguration.RegularExpression.get -> string? +GitVersion.Configuration.EffectiveConfiguration.SemanticVersionFormat.get -> GitVersion.SemanticVersionFormat +GitVersion.Configuration.EffectiveConfiguration.TagPrefix.get -> string? +GitVersion.Configuration.EffectiveConfiguration.TagPreReleaseWeight.get -> int +GitVersion.Configuration.EffectiveConfiguration.TrackMergeMessage.get -> bool +GitVersion.Configuration.EffectiveConfiguration.TrackMergeTarget.get -> bool +GitVersion.Configuration.EffectiveConfiguration.TracksReleaseBranches.get -> bool +GitVersion.Configuration.EffectiveConfiguration.UpdateBuildNumber.get -> bool +GitVersion.Configuration.EffectiveConfiguration.VersionFilters.get -> System.Collections.Generic.IEnumerable! +GitVersion.Configuration.EffectiveConfiguration.VersionInBranchRegex.get -> System.Text.RegularExpressions.Regex! +GitVersion.Configuration.EffectiveConfiguration.VersionStrategy.get -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.Configuration.IBranchConfiguration +GitVersion.Configuration.IBranchConfiguration.CommitMessageIncrementing.get -> GitVersion.VersionCalculation.CommitMessageIncrementMode? +GitVersion.Configuration.IBranchConfiguration.DeploymentMode.get -> GitVersion.VersionCalculation.DeploymentMode? +GitVersion.Configuration.IBranchConfiguration.Increment.get -> GitVersion.IncrementStrategy +GitVersion.Configuration.IBranchConfiguration.Inherit(GitVersion.Configuration.EffectiveConfiguration! configuration) -> GitVersion.Configuration.IBranchConfiguration! +GitVersion.Configuration.IBranchConfiguration.Inherit(GitVersion.Configuration.IBranchConfiguration! configuration) -> GitVersion.Configuration.IBranchConfiguration! +GitVersion.Configuration.IBranchConfiguration.IsMainBranch.get -> bool? +GitVersion.Configuration.IBranchConfiguration.IsMatch(string! branchName) -> bool +GitVersion.Configuration.IBranchConfiguration.IsReleaseBranch.get -> bool? +GitVersion.Configuration.IBranchConfiguration.IsSourceBranchFor.get -> System.Collections.Generic.IReadOnlyCollection! +GitVersion.Configuration.IBranchConfiguration.Label.get -> string? +GitVersion.Configuration.IBranchConfiguration.LabelNumberPattern.get -> string? +GitVersion.Configuration.IBranchConfiguration.PreReleaseWeight.get -> int? +GitVersion.Configuration.IBranchConfiguration.PreventIncrement.get -> GitVersion.Configuration.IPreventIncrementConfiguration! +GitVersion.Configuration.IBranchConfiguration.RegularExpression.get -> string? +GitVersion.Configuration.IBranchConfiguration.SourceBranches.get -> System.Collections.Generic.IReadOnlyCollection! +GitVersion.Configuration.IBranchConfiguration.TrackMergeMessage.get -> bool? +GitVersion.Configuration.IBranchConfiguration.TrackMergeTarget.get -> bool? +GitVersion.Configuration.IBranchConfiguration.TracksReleaseBranches.get -> bool? +GitVersion.Configuration.IConfigurationFileLocator +GitVersion.Configuration.IConfigurationFileLocator.GetConfigurationFile(string? directory) -> string? +GitVersion.Configuration.IConfigurationFileLocator.Verify(string? workingDirectory, string? projectRootDirectory) -> void +GitVersion.Configuration.IConfigurationProvider +GitVersion.Configuration.IConfigurationProvider.Provide(System.Collections.Generic.IReadOnlyDictionary? overrideConfiguration = null) -> GitVersion.Configuration.IGitVersionConfiguration! +GitVersion.Configuration.IGitVersionConfiguration +GitVersion.Configuration.IGitVersionConfiguration.AssemblyFileVersioningFormat.get -> string? +GitVersion.Configuration.IGitVersionConfiguration.AssemblyFileVersioningScheme.get -> GitVersion.Configuration.AssemblyFileVersioningScheme? +GitVersion.Configuration.IGitVersionConfiguration.AssemblyInformationalFormat.get -> string? +GitVersion.Configuration.IGitVersionConfiguration.AssemblyVersioningFormat.get -> string? +GitVersion.Configuration.IGitVersionConfiguration.AssemblyVersioningScheme.get -> GitVersion.Configuration.AssemblyVersioningScheme? +GitVersion.Configuration.IGitVersionConfiguration.Branches.get -> System.Collections.Generic.IReadOnlyDictionary! +GitVersion.Configuration.IGitVersionConfiguration.CommitDateFormat.get -> string? +GitVersion.Configuration.IGitVersionConfiguration.GetEmptyBranchConfiguration() -> GitVersion.Configuration.IBranchConfiguration! +GitVersion.Configuration.IGitVersionConfiguration.Ignore.get -> GitVersion.Configuration.IIgnoreConfiguration! +GitVersion.Configuration.IGitVersionConfiguration.MajorVersionBumpMessage.get -> string? +GitVersion.Configuration.IGitVersionConfiguration.MergeMessageFormats.get -> System.Collections.Generic.IReadOnlyDictionary! +GitVersion.Configuration.IGitVersionConfiguration.MinorVersionBumpMessage.get -> string? +GitVersion.Configuration.IGitVersionConfiguration.NextVersion.get -> string? +GitVersion.Configuration.IGitVersionConfiguration.NoBumpMessage.get -> string? +GitVersion.Configuration.IGitVersionConfiguration.PatchVersionBumpMessage.get -> string? +GitVersion.Configuration.IGitVersionConfiguration.SemanticVersionFormat.get -> GitVersion.SemanticVersionFormat +GitVersion.Configuration.IGitVersionConfiguration.TagPrefix.get -> string? +GitVersion.Configuration.IGitVersionConfiguration.TagPreReleaseWeight.get -> int? +GitVersion.Configuration.IGitVersionConfiguration.UpdateBuildNumber.get -> bool +GitVersion.Configuration.IGitVersionConfiguration.VersionInBranchPattern.get -> string? +GitVersion.Configuration.IGitVersionConfiguration.VersionInBranchRegex.get -> System.Text.RegularExpressions.Regex! +GitVersion.Configuration.IGitVersionConfiguration.VersionStrategy.get -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.Configuration.IGitVersionConfiguration.Workflow.get -> string? +GitVersion.Configuration.IIgnoreConfiguration +GitVersion.Configuration.IIgnoreConfiguration.Before.get -> System.DateTimeOffset? +GitVersion.Configuration.IIgnoreConfiguration.IsEmpty.get -> bool +GitVersion.Configuration.IIgnoreConfiguration.Shas.get -> System.Collections.Generic.IReadOnlySet! +GitVersion.Configuration.IPreventIncrementConfiguration +GitVersion.Configuration.IPreventIncrementConfiguration.OfMergedBranch.get -> bool? +GitVersion.Configuration.IPreventIncrementConfiguration.WhenBranchMerged.get -> bool? +GitVersion.Configuration.IPreventIncrementConfiguration.WhenCurrentCommitTagged.get -> bool? +GitVersion.Configuration.ReferenceNameExtensions +GitVersion.ConfigurationInfo +GitVersion.ConfigurationInfo.ConfigurationFile -> string? +GitVersion.ConfigurationInfo.OverrideConfiguration -> System.Collections.Generic.IReadOnlyDictionary? +GitVersion.ConfigurationInfo.ShowConfiguration -> bool +GitVersion.Extensions.AssemblyVersionsGeneratorExtensions +GitVersion.Extensions.CommonExtensions +GitVersion.Extensions.DictionaryExtensions +GitVersion.Extensions.EnumerableExtensions +GitVersion.Extensions.GitExtensions +GitVersion.Extensions.IncrementStrategyExtensions +GitVersion.Extensions.ReadEmbeddedResourceExtensions +GitVersion.Extensions.ServiceCollectionExtensions +GitVersion.Extensions.StringExtensions +GitVersion.FileWriteInfo +GitVersion.FileWriteInfo.FileExtension.get -> string! +GitVersion.FileWriteInfo.FileExtension.init -> void +GitVersion.FileWriteInfo.FileName.get -> string! +GitVersion.FileWriteInfo.FileName.init -> void +GitVersion.FileWriteInfo.FileWriteInfo(string! WorkingDirectory, string! FileName, string! FileExtension) -> void +GitVersion.FileWriteInfo.WorkingDirectory.get -> string! +GitVersion.FileWriteInfo.WorkingDirectory.init -> void +GitVersion.Git.AuthenticationInfo +GitVersion.Git.AuthenticationInfo.Password.get -> string? +GitVersion.Git.AuthenticationInfo.Password.set -> void +GitVersion.Git.AuthenticationInfo.Token.get -> string? +GitVersion.Git.AuthenticationInfo.Token.set -> void +GitVersion.Git.AuthenticationInfo.Username.get -> string? +GitVersion.Git.AuthenticationInfo.Username.set -> void +GitVersion.Git.BranchCommit +GitVersion.Git.BranchCommit.Branch.get -> GitVersion.Git.IBranch! +GitVersion.Git.BranchCommit.BranchCommit() -> void +GitVersion.Git.BranchCommit.BranchCommit(GitVersion.Git.ICommit! commit, GitVersion.Git.IBranch! branch) -> void +GitVersion.Git.BranchCommit.Commit.get -> GitVersion.Git.ICommit! +GitVersion.Git.BranchCommit.Equals(GitVersion.Git.BranchCommit? other) -> bool +GitVersion.Git.CommitExtensions +GitVersion.Git.CommitFilter +GitVersion.Git.CommitFilter.ExcludeReachableFrom.get -> object? +GitVersion.Git.CommitFilter.ExcludeReachableFrom.init -> void +GitVersion.Git.CommitFilter.FirstParentOnly.get -> bool +GitVersion.Git.CommitFilter.FirstParentOnly.init -> void +GitVersion.Git.CommitFilter.IncludeReachableFrom.get -> object? +GitVersion.Git.CommitFilter.IncludeReachableFrom.init -> void +GitVersion.Git.CommitFilter.SortBy.get -> GitVersion.Git.CommitSortStrategies +GitVersion.Git.CommitFilter.SortBy.init -> void +GitVersion.Git.CommitSortStrategies +GitVersion.Git.CommitSortStrategies.None = 0 -> GitVersion.Git.CommitSortStrategies +GitVersion.Git.CommitSortStrategies.Reverse = 4 -> GitVersion.Git.CommitSortStrategies +GitVersion.Git.CommitSortStrategies.Time = 2 -> GitVersion.Git.CommitSortStrategies +GitVersion.Git.CommitSortStrategies.Topological = 1 -> GitVersion.Git.CommitSortStrategies +GitVersion.Git.IBranch +GitVersion.Git.IBranch.Commits.get -> GitVersion.Git.ICommitCollection! +GitVersion.Git.IBranch.IsDetachedHead.get -> bool +GitVersion.Git.IBranch.IsRemote.get -> bool +GitVersion.Git.IBranch.IsTracking.get -> bool +GitVersion.Git.IBranch.Tip.get -> GitVersion.Git.ICommit? +GitVersion.Git.IBranchCollection +GitVersion.Git.IBranchCollection.ExcludeBranches(System.Collections.Generic.IEnumerable! branchesToExclude) -> System.Collections.Generic.IEnumerable! +GitVersion.Git.IBranchCollection.this[string! name].get -> GitVersion.Git.IBranch? +GitVersion.Git.IBranchCollection.UpdateTrackedBranch(GitVersion.Git.IBranch! branch, string! remoteTrackingReferenceName) -> void +GitVersion.Git.ICommit +GitVersion.Git.ICommit.Message.get -> string! +GitVersion.Git.ICommit.Parents.get -> System.Collections.Generic.IReadOnlyList! +GitVersion.Git.ICommit.When.get -> System.DateTimeOffset +GitVersion.Git.ICommitCollection +GitVersion.Git.ICommitCollection.GetCommitsPriorTo(System.DateTimeOffset olderThan) -> System.Collections.Generic.IEnumerable! +GitVersion.Git.ICommitCollection.QueryBy(GitVersion.Git.CommitFilter! commitFilter) -> System.Collections.Generic.IEnumerable! +GitVersion.Git.IGitObject +GitVersion.Git.IGitObject.Id.get -> GitVersion.Git.IObjectId! +GitVersion.Git.IGitObject.Sha.get -> string! +GitVersion.Git.IGitRepository +GitVersion.Git.IGitRepository.Branches.get -> GitVersion.Git.IBranchCollection! +GitVersion.Git.IGitRepository.Commits.get -> GitVersion.Git.ICommitCollection! +GitVersion.Git.IGitRepository.DiscoverRepository(string? gitDirectory) -> void +GitVersion.Git.IGitRepository.FindMergeBase(GitVersion.Git.ICommit! commit, GitVersion.Git.ICommit! otherCommit) -> GitVersion.Git.ICommit? +GitVersion.Git.IGitRepository.GetNumberOfUncommittedChanges() -> int +GitVersion.Git.IGitRepository.Head.get -> GitVersion.Git.IBranch! +GitVersion.Git.IGitRepository.IsHeadDetached.get -> bool +GitVersion.Git.IGitRepository.IsShallow.get -> bool +GitVersion.Git.IGitRepository.Path.get -> string! +GitVersion.Git.IGitRepository.Refs.get -> GitVersion.Git.IReferenceCollection! +GitVersion.Git.IGitRepository.Remotes.get -> GitVersion.Git.IRemoteCollection! +GitVersion.Git.IGitRepository.Tags.get -> GitVersion.Git.ITagCollection! +GitVersion.Git.IGitRepository.WorkingDirectory.get -> string! +GitVersion.Git.IGitRepositoryInfo +GitVersion.Git.IGitRepositoryInfo.DotGitDirectory.get -> string? +GitVersion.Git.IGitRepositoryInfo.DynamicGitRepositoryPath.get -> string? +GitVersion.Git.IGitRepositoryInfo.GitRootPath.get -> string? +GitVersion.Git.IGitRepositoryInfo.ProjectRootDirectory.get -> string? +GitVersion.Git.IMutatingGitRepository +GitVersion.Git.IMutatingGitRepository.Checkout(string! commitOrBranchSpec) -> void +GitVersion.Git.IMutatingGitRepository.Clone(string? sourceUrl, string? workdirPath, GitVersion.Git.AuthenticationInfo! auth) -> void +GitVersion.Git.IMutatingGitRepository.CreateBranchForPullRequestBranch(GitVersion.Git.AuthenticationInfo! auth) -> void +GitVersion.Git.IMutatingGitRepository.Fetch(string! remote, System.Collections.Generic.IEnumerable! refSpecs, GitVersion.Git.AuthenticationInfo! auth, string? logMessage) -> void +GitVersion.Git.INamedReference +GitVersion.Git.INamedReference.Name.get -> GitVersion.Git.ReferenceName! +GitVersion.Git.IObjectId +GitVersion.Git.IObjectId.Sha.get -> string! +GitVersion.Git.IObjectId.ToString(int prefixLength) -> string! +GitVersion.Git.IReference +GitVersion.Git.IReference.ReferenceTargetId.get -> GitVersion.Git.IObjectId? +GitVersion.Git.IReference.TargetIdentifier.get -> string! +GitVersion.Git.IReferenceCollection +GitVersion.Git.IReferenceCollection.Add(string! name, string! canonicalRefNameOrObject, bool allowOverwrite = false) -> void +GitVersion.Git.IReferenceCollection.FromGlob(string! prefix) -> System.Collections.Generic.IEnumerable! +GitVersion.Git.IReferenceCollection.Head.get -> GitVersion.Git.IReference? +GitVersion.Git.IReferenceCollection.this[GitVersion.Git.ReferenceName! referenceName].get -> GitVersion.Git.IReference? +GitVersion.Git.IReferenceCollection.this[string! name].get -> GitVersion.Git.IReference? +GitVersion.Git.IReferenceCollection.UpdateTarget(GitVersion.Git.IReference! directRef, GitVersion.Git.IObjectId! targetId) -> void +GitVersion.Git.IRefSpec +GitVersion.Git.IRefSpec.Destination.get -> string! +GitVersion.Git.IRefSpec.Direction.get -> GitVersion.Git.RefSpecDirection +GitVersion.Git.IRefSpec.Source.get -> string! +GitVersion.Git.IRefSpec.Specification.get -> string! +GitVersion.Git.IRefSpecCollection +GitVersion.Git.IRemote +GitVersion.Git.IRemote.FetchRefSpecs.get -> System.Collections.Generic.IEnumerable! +GitVersion.Git.IRemote.Name.get -> string! +GitVersion.Git.IRemote.PushRefSpecs.get -> System.Collections.Generic.IEnumerable! +GitVersion.Git.IRemote.RefSpecs.get -> System.Collections.Generic.IEnumerable! +GitVersion.Git.IRemote.Url.get -> string! +GitVersion.Git.IRemoteCollection +GitVersion.Git.IRemoteCollection.Remove(string! remoteName) -> void +GitVersion.Git.IRemoteCollection.this[string! name].get -> GitVersion.Git.IRemote? +GitVersion.Git.IRemoteCollection.Update(string! remoteName, string! refSpec) -> void +GitVersion.Git.ITag +GitVersion.Git.ITag.Commit.get -> GitVersion.Git.ICommit! +GitVersion.Git.ITag.TargetSha.get -> string! +GitVersion.Git.ITagCollection +GitVersion.Git.ReferenceName +GitVersion.Git.ReferenceName.Canonical.get -> string! +GitVersion.Git.ReferenceName.CompareTo(GitVersion.Git.ReferenceName? other) -> int +GitVersion.Git.ReferenceName.Equals(GitVersion.Git.ReferenceName? other) -> bool +GitVersion.Git.ReferenceName.EquivalentTo(string? name) -> bool +GitVersion.Git.ReferenceName.Friendly.get -> string! +GitVersion.Git.ReferenceName.IsLocalBranch.get -> bool +GitVersion.Git.ReferenceName.IsPullRequest.get -> bool +GitVersion.Git.ReferenceName.IsRemoteBranch.get -> bool +GitVersion.Git.ReferenceName.IsTag.get -> bool +GitVersion.Git.ReferenceName.ReferenceName(string! canonical) -> void +GitVersion.Git.ReferenceName.TryGetSemanticVersion(out (GitVersion.SemanticVersion! Value, string? Name) result, System.Text.RegularExpressions.Regex! versionPatternRegex, string? tagPrefix, GitVersion.SemanticVersionFormat format) -> bool +GitVersion.Git.ReferenceName.WithoutOrigin.get -> string! +GitVersion.Git.RefSpecDirection +GitVersion.Git.RefSpecDirection.Fetch = 0 -> GitVersion.Git.RefSpecDirection +GitVersion.Git.RefSpecDirection.Push = 1 -> GitVersion.Git.RefSpecDirection +GitVersion.GitVersionCommonModule +GitVersion.GitVersionCommonModule.GitVersionCommonModule() -> void +GitVersion.GitVersionCommonModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void +GitVersion.GitVersionContext +GitVersion.GitVersionContext.Configuration.get -> GitVersion.Configuration.IGitVersionConfiguration! +GitVersion.GitVersionContext.CurrentBranch.get -> GitVersion.Git.IBranch! +GitVersion.GitVersionContext.CurrentBranchCommits.get -> System.Collections.Generic.IEnumerable! +GitVersion.GitVersionContext.CurrentCommit.get -> GitVersion.Git.ICommit! +GitVersion.GitVersionContext.GitVersionContext(GitVersion.Git.IBranch! currentBranch, GitVersion.Git.ICommit! currentCommit, GitVersion.Configuration.IGitVersionConfiguration! configuration, bool isCurrentCommitTagged, int numberOfUncommittedChanges) -> void +GitVersion.GitVersionContext.IsCurrentCommitTagged.get -> bool +GitVersion.GitVersionContext.NumberOfUncommittedChanges.get -> int +GitVersion.GitVersionCoreModule +GitVersion.GitVersionCoreModule.GitVersionCoreModule() -> void +GitVersion.GitVersionCoreModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void +GitVersion.GitVersionException +GitVersion.GitVersionException.GitVersionException() -> void +GitVersion.GitVersionException.GitVersionException(string! message, System.Exception! innerException) -> void +GitVersion.GitVersionException.GitVersionException(string! message) -> void +GitVersion.GitVersionException.GitVersionException(string! messageFormat, params object![]! args) -> void +GitVersion.GitVersionOptions +GitVersion.GitVersionOptions.AssemblySettingsInfo.get -> GitVersion.AssemblySettingsInfo! +GitVersion.GitVersionOptions.AuthenticationInfo.get -> GitVersion.Git.AuthenticationInfo! +GitVersion.GitVersionOptions.ConfigurationInfo.get -> GitVersion.ConfigurationInfo! +GitVersion.GitVersionOptions.Diag -> bool +GitVersion.GitVersionOptions.Format -> string? +GitVersion.GitVersionOptions.GitVersionOptions() -> void +GitVersion.GitVersionOptions.IsHelp -> bool +GitVersion.GitVersionOptions.IsVersion -> bool +GitVersion.GitVersionOptions.LogFilePath -> string? +GitVersion.GitVersionOptions.Output -> System.Collections.Generic.ISet! +GitVersion.GitVersionOptions.OutputFile -> string? +GitVersion.GitVersionOptions.RepositoryInfo.get -> GitVersion.RepositoryInfo! +GitVersion.GitVersionOptions.Settings.get -> GitVersion.Settings! +GitVersion.GitVersionOptions.ShowVariable -> string? +GitVersion.GitVersionOptions.Verbosity -> GitVersion.Logging.Verbosity +GitVersion.GitVersionOptions.WixInfo.get -> GitVersion.WixInfo! +GitVersion.GitVersionOptions.WorkingDirectory.get -> string! +GitVersion.GitVersionOptions.WorkingDirectory.set -> void +GitVersion.Helpers.Disposable +GitVersion.Helpers.EncodingHelper +GitVersion.Helpers.IDisposable +GitVersion.Helpers.IDisposable.Value.get -> T +GitVersion.Helpers.LambdaEqualityHelper +GitVersion.Helpers.LambdaEqualityHelper.Equals(T? instance, T? other) -> bool +GitVersion.Helpers.LambdaEqualityHelper.GetHashCode(T instance) -> int +GitVersion.Helpers.LambdaEqualityHelper.LambdaEqualityHelper(params System.Func![]! equalityContributorAccessors) -> void +GitVersion.Helpers.LambdaKeyComparer +GitVersion.Helpers.LambdaKeyComparer.LambdaKeyComparer(System.Func! keySelector, System.Collections.Generic.IComparer? innerComparer = null) -> void +GitVersion.Helpers.RetryAction +GitVersion.Helpers.RetryAction.Execute(System.Func! operation) -> Result +GitVersion.Helpers.RetryAction.RetryAction(int maxRetries = 5) -> void +GitVersion.Helpers.RetryAction +GitVersion.Helpers.RetryAction.Execute(System.Action! operation) -> void +GitVersion.Helpers.RetryAction.RetryAction(int maxRetries = 5) -> void +GitVersion.Helpers.ServiceMessageEscapeHelper +GitVersion.IConverterContext +GitVersion.IConverterContext.WorkingDirectory.get -> string! +GitVersion.IEnvironment +GitVersion.IEnvironment.GetEnvironmentVariable(string! variableName) -> string? +GitVersion.IEnvironment.SetEnvironmentVariable(string! variableName, string? value) -> void +GitVersion.IFileSystem +GitVersion.IFileSystem.Copy(string! from, string! to, bool overwrite) -> void +GitVersion.IFileSystem.CreateDirectory(string! path) -> void +GitVersion.IFileSystem.Delete(string! path) -> void +GitVersion.IFileSystem.DirectoryEnumerateFiles(string? directory, string! searchPattern, System.IO.SearchOption searchOption) -> System.Collections.Generic.IEnumerable! +GitVersion.IFileSystem.DirectoryExists(string! path) -> bool +GitVersion.IFileSystem.Exists(string! file) -> bool +GitVersion.IFileSystem.GetLastDirectoryWrite(string! path) -> long +GitVersion.IFileSystem.Move(string! from, string! to) -> void +GitVersion.IFileSystem.OpenRead(string! path) -> System.IO.Stream! +GitVersion.IFileSystem.OpenWrite(string! path) -> System.IO.Stream! +GitVersion.IFileSystem.ReadAllText(string! path) -> string! +GitVersion.IFileSystem.WriteAllText(string? file, string! fileContents, System.Text.Encoding! encoding) -> void +GitVersion.IFileSystem.WriteAllText(string? file, string! fileContents) -> void +GitVersion.IGitPreparer +GitVersion.IGitPreparer.EnsureLocalBranchExistsForCurrentBranch(GitVersion.Git.IRemote! remote, string! currentBranch) -> void +GitVersion.IGitPreparer.Prepare() -> void +GitVersion.IGitVersionCalculateTool +GitVersion.IGitVersionCalculateTool.CalculateVersionVariables() -> GitVersion.OutputVariables.GitVersionVariables! +GitVersion.IGitVersionContextFactory +GitVersion.IGitVersionContextFactory.Create(GitVersion.GitVersionOptions! gitVersionOptions) -> GitVersion.GitVersionContext! +GitVersion.IGitVersionModule +GitVersion.IGitVersionModule.FindAllDerivedTypes(System.Reflection.Assembly? assembly) -> System.Collections.Generic.IEnumerable! +GitVersion.IGitVersionModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void +GitVersion.IncrementStrategy +GitVersion.IncrementStrategy.Inherit = 4 -> GitVersion.IncrementStrategy +GitVersion.IncrementStrategy.Major = 1 -> GitVersion.IncrementStrategy +GitVersion.IncrementStrategy.Minor = 2 -> GitVersion.IncrementStrategy +GitVersion.IncrementStrategy.None = 0 -> GitVersion.IncrementStrategy +GitVersion.IncrementStrategy.Patch = 3 -> GitVersion.IncrementStrategy +GitVersion.IVersionConverter +GitVersion.IVersionConverter.Execute(GitVersion.OutputVariables.GitVersionVariables! variables, T context) -> void +GitVersion.LockedFileException +GitVersion.LockedFileException.LockedFileException() -> void +GitVersion.LockedFileException.LockedFileException(string? message, System.Exception? innerException) -> void +GitVersion.LockedFileException.LockedFileException(string? message) -> void +GitVersion.LockedFileException.LockedFileException(System.Exception! inner) -> void +GitVersion.Logging.IConsole +GitVersion.Logging.IConsole.ReadLine() -> string? +GitVersion.Logging.IConsole.UseColor(System.ConsoleColor consoleColor) -> System.IDisposable! +GitVersion.Logging.IConsole.Write(string? msg) -> void +GitVersion.Logging.IConsole.WriteLine() -> void +GitVersion.Logging.IConsole.WriteLine(string? msg) -> void +GitVersion.Logging.ILog +GitVersion.Logging.ILog.AddLogAppender(GitVersion.Logging.ILogAppender! logAppender) -> void +GitVersion.Logging.ILog.IndentLog(string! operationDescription) -> System.IDisposable! +GitVersion.Logging.ILog.Separator() -> void +GitVersion.Logging.ILog.Verbosity.get -> GitVersion.Logging.Verbosity +GitVersion.Logging.ILog.Verbosity.set -> void +GitVersion.Logging.ILog.Write(GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogLevel level, string! format, params object![]! args) -> void +GitVersion.Logging.ILogAppender +GitVersion.Logging.ILogAppender.WriteTo(GitVersion.Logging.LogLevel level, string! message) -> void +GitVersion.Logging.LogAction +GitVersion.Logging.LogActionEntry +GitVersion.Logging.LogExtensions +GitVersion.Logging.LogLevel +GitVersion.Logging.LogLevel.Debug = 5 -> GitVersion.Logging.LogLevel +GitVersion.Logging.LogLevel.Error = 1 -> GitVersion.Logging.LogLevel +GitVersion.Logging.LogLevel.Fatal = 0 -> GitVersion.Logging.LogLevel +GitVersion.Logging.LogLevel.Info = 3 -> GitVersion.Logging.LogLevel +GitVersion.Logging.LogLevel.Verbose = 4 -> GitVersion.Logging.LogLevel +GitVersion.Logging.LogLevel.Warn = 2 -> GitVersion.Logging.LogLevel +GitVersion.Logging.Verbosity +GitVersion.Logging.Verbosity.Diagnostic = 4 -> GitVersion.Logging.Verbosity +GitVersion.Logging.Verbosity.Minimal = 1 -> GitVersion.Logging.Verbosity +GitVersion.Logging.Verbosity.Normal = 2 -> GitVersion.Logging.Verbosity +GitVersion.Logging.Verbosity.Quiet = 0 -> GitVersion.Logging.Verbosity +GitVersion.Logging.Verbosity.Verbose = 3 -> GitVersion.Logging.Verbosity +GitVersion.MergeMessage +GitVersion.MergeMessage.FormatName.get -> string? +GitVersion.MergeMessage.IsMergedPullRequest.get -> bool +GitVersion.MergeMessage.MergedBranch.get -> GitVersion.Git.ReferenceName? +GitVersion.MergeMessage.MergeMessage(string! mergeMessage, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> void +GitVersion.MergeMessage.PullRequestNumber.get -> int? +GitVersion.MergeMessage.TargetBranch.get -> string? +GitVersion.MergeMessage.Version.get -> GitVersion.SemanticVersion? +GitVersion.OutputType +GitVersion.OutputType.BuildServer = 0 -> GitVersion.OutputType +GitVersion.OutputType.File = 2 -> GitVersion.OutputType +GitVersion.OutputType.Json = 1 -> GitVersion.OutputType +GitVersion.OutputVariables.GitVersionVariables +GitVersion.OutputVariables.GitVersionVariables.AssemblySemFileVer.get -> string? +GitVersion.OutputVariables.GitVersionVariables.AssemblySemFileVer.init -> void +GitVersion.OutputVariables.GitVersionVariables.AssemblySemVer.get -> string? +GitVersion.OutputVariables.GitVersionVariables.AssemblySemVer.init -> void +GitVersion.OutputVariables.GitVersionVariables.BranchName.get -> string? +GitVersion.OutputVariables.GitVersionVariables.BranchName.init -> void +GitVersion.OutputVariables.GitVersionVariables.BuildMetaData.get -> string? +GitVersion.OutputVariables.GitVersionVariables.BuildMetaData.init -> void +GitVersion.OutputVariables.GitVersionVariables.CommitDate.get -> string? +GitVersion.OutputVariables.GitVersionVariables.CommitDate.init -> void +GitVersion.OutputVariables.GitVersionVariables.CommitsSinceVersionSource.get -> string? +GitVersion.OutputVariables.GitVersionVariables.CommitsSinceVersionSource.init -> void +GitVersion.OutputVariables.GitVersionVariables.EscapedBranchName.get -> string? +GitVersion.OutputVariables.GitVersionVariables.EscapedBranchName.init -> void +GitVersion.OutputVariables.GitVersionVariables.FullBuildMetaData.get -> string? +GitVersion.OutputVariables.GitVersionVariables.FullBuildMetaData.init -> void +GitVersion.OutputVariables.GitVersionVariables.FullSemVer.get -> string! +GitVersion.OutputVariables.GitVersionVariables.FullSemVer.init -> void +GitVersion.OutputVariables.GitVersionVariables.GetEnumerator() -> System.Collections.Generic.IEnumerator>! +GitVersion.OutputVariables.GitVersionVariables.GitVersionVariables(string! Major, string! Minor, string! Patch, string? BuildMetaData, string? FullBuildMetaData, string? BranchName, string? EscapedBranchName, string? Sha, string? ShortSha, string! MajorMinorPatch, string! SemVer, string! FullSemVer, string? AssemblySemVer, string? AssemblySemFileVer, string? PreReleaseTag, string? PreReleaseTagWithDash, string? PreReleaseLabel, string? PreReleaseLabelWithDash, string? PreReleaseNumber, string! WeightedPreReleaseNumber, string? InformationalVersion, string? CommitDate, string? VersionSourceSha, string? CommitsSinceVersionSource, string? UncommittedChanges) -> void +GitVersion.OutputVariables.GitVersionVariables.InformationalVersion.get -> string? +GitVersion.OutputVariables.GitVersionVariables.InformationalVersion.init -> void +GitVersion.OutputVariables.GitVersionVariables.Major.get -> string! +GitVersion.OutputVariables.GitVersionVariables.Major.init -> void +GitVersion.OutputVariables.GitVersionVariables.MajorMinorPatch.get -> string! +GitVersion.OutputVariables.GitVersionVariables.MajorMinorPatch.init -> void +GitVersion.OutputVariables.GitVersionVariables.Minor.get -> string! +GitVersion.OutputVariables.GitVersionVariables.Minor.init -> void +GitVersion.OutputVariables.GitVersionVariables.Patch.get -> string! +GitVersion.OutputVariables.GitVersionVariables.Patch.init -> void +GitVersion.OutputVariables.GitVersionVariables.PreReleaseLabel.get -> string? +GitVersion.OutputVariables.GitVersionVariables.PreReleaseLabel.init -> void +GitVersion.OutputVariables.GitVersionVariables.PreReleaseLabelWithDash.get -> string? +GitVersion.OutputVariables.GitVersionVariables.PreReleaseLabelWithDash.init -> void +GitVersion.OutputVariables.GitVersionVariables.PreReleaseNumber.get -> string? +GitVersion.OutputVariables.GitVersionVariables.PreReleaseNumber.init -> void +GitVersion.OutputVariables.GitVersionVariables.PreReleaseTag.get -> string? +GitVersion.OutputVariables.GitVersionVariables.PreReleaseTag.init -> void +GitVersion.OutputVariables.GitVersionVariables.PreReleaseTagWithDash.get -> string? +GitVersion.OutputVariables.GitVersionVariables.PreReleaseTagWithDash.init -> void +GitVersion.OutputVariables.GitVersionVariables.SemVer.get -> string! +GitVersion.OutputVariables.GitVersionVariables.SemVer.init -> void +GitVersion.OutputVariables.GitVersionVariables.Sha.get -> string? +GitVersion.OutputVariables.GitVersionVariables.Sha.init -> void +GitVersion.OutputVariables.GitVersionVariables.ShortSha.get -> string? +GitVersion.OutputVariables.GitVersionVariables.ShortSha.init -> void +GitVersion.OutputVariables.GitVersionVariables.TryGetValue(string! variable, out string? variableValue) -> bool +GitVersion.OutputVariables.GitVersionVariables.UncommittedChanges.get -> string? +GitVersion.OutputVariables.GitVersionVariables.UncommittedChanges.init -> void +GitVersion.OutputVariables.GitVersionVariables.VersionSourceSha.get -> string? +GitVersion.OutputVariables.GitVersionVariables.VersionSourceSha.init -> void +GitVersion.OutputVariables.GitVersionVariables.WeightedPreReleaseNumber.get -> string! +GitVersion.OutputVariables.GitVersionVariables.WeightedPreReleaseNumber.init -> void +GitVersion.OutputVariables.IVersionVariableSerializer +GitVersion.OutputVariables.IVersionVariableSerializer.FromFile(string! filePath) -> GitVersion.OutputVariables.GitVersionVariables! +GitVersion.OutputVariables.IVersionVariableSerializer.FromJson(string! json) -> GitVersion.OutputVariables.GitVersionVariables! +GitVersion.OutputVariables.IVersionVariableSerializer.ToFile(GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables, string! filePath) -> void +GitVersion.OutputVariables.IVersionVariableSerializer.ToJson(GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables) -> string! +GitVersion.RepositoryInfo +GitVersion.RepositoryInfo.ClonePath -> string? +GitVersion.RepositoryInfo.CommitId -> string? +GitVersion.RepositoryInfo.TargetBranch -> string? +GitVersion.RepositoryInfo.TargetUrl -> string? +GitVersion.SemanticVersion +GitVersion.SemanticVersion.BuildMetaData.get -> GitVersion.SemanticVersionBuildMetaData! +GitVersion.SemanticVersion.BuildMetaData.init -> void +GitVersion.SemanticVersion.CompareTo(GitVersion.SemanticVersion? value, bool includePreRelease) -> int +GitVersion.SemanticVersion.CompareTo(GitVersion.SemanticVersion? value) -> int +GitVersion.SemanticVersion.Equals(GitVersion.SemanticVersion? obj) -> bool +GitVersion.SemanticVersion.Increment(GitVersion.VersionField increment, string? label, bool forceIncrement, params GitVersion.SemanticVersion?[]! alternativeSemanticVersions) -> GitVersion.SemanticVersion! +GitVersion.SemanticVersion.Increment(GitVersion.VersionField increment, string? label, GitVersion.SemanticVersion.IncrementMode mode, params GitVersion.SemanticVersion?[]! alternativeSemanticVersions) -> GitVersion.SemanticVersion! +GitVersion.SemanticVersion.Increment(GitVersion.VersionField increment, string? label, params GitVersion.SemanticVersion?[]! alternativeSemanticVersions) -> GitVersion.SemanticVersion! +GitVersion.SemanticVersion.IncrementMode +GitVersion.SemanticVersion.IncrementMode.EnsureIntegrity = 2 -> GitVersion.SemanticVersion.IncrementMode +GitVersion.SemanticVersion.IncrementMode.Force = 1 -> GitVersion.SemanticVersion.IncrementMode +GitVersion.SemanticVersion.IncrementMode.Standard = 0 -> GitVersion.SemanticVersion.IncrementMode +GitVersion.SemanticVersion.IsEmpty() -> bool +GitVersion.SemanticVersion.IsEqualTo(GitVersion.SemanticVersion? value, bool includePreRelease = true) -> bool +GitVersion.SemanticVersion.IsGreaterThan(GitVersion.SemanticVersion? value, bool includePreRelease = true) -> bool +GitVersion.SemanticVersion.IsGreaterThanOrEqualTo(GitVersion.SemanticVersion? value, bool includePreRelease = true) -> bool +GitVersion.SemanticVersion.IsLabeledWith(string! value) -> bool +GitVersion.SemanticVersion.IsLessThan(GitVersion.SemanticVersion? value, bool includePreRelease = true) -> bool +GitVersion.SemanticVersion.IsLessThanOrEqualTo(GitVersion.SemanticVersion? value, bool includePreRelease = true) -> bool +GitVersion.SemanticVersion.IsMatchForBranchSpecificLabel(string? value) -> bool +GitVersion.SemanticVersion.IsPreRelease.get -> bool +GitVersion.SemanticVersion.Major.get -> long +GitVersion.SemanticVersion.Major.init -> void +GitVersion.SemanticVersion.Minor.get -> long +GitVersion.SemanticVersion.Minor.init -> void +GitVersion.SemanticVersion.Patch.get -> long +GitVersion.SemanticVersion.Patch.init -> void +GitVersion.SemanticVersion.PreReleaseTag.get -> GitVersion.SemanticVersionPreReleaseTag! +GitVersion.SemanticVersion.PreReleaseTag.init -> void +GitVersion.SemanticVersion.SemanticVersion(GitVersion.SemanticVersion! semanticVersion) -> void +GitVersion.SemanticVersion.SemanticVersion(long major = 0, long minor = 0, long patch = 0) -> void +GitVersion.SemanticVersion.ToString(string! format) -> string! +GitVersion.SemanticVersion.ToString(string? format, System.IFormatProvider? formatProvider) -> string! +GitVersion.SemanticVersion.WithLabel(string? label) -> GitVersion.SemanticVersion! +GitVersion.SemanticVersionBuildMetaData +GitVersion.SemanticVersionBuildMetaData.Branch.get -> string? +GitVersion.SemanticVersionBuildMetaData.Branch.init -> void +GitVersion.SemanticVersionBuildMetaData.CommitDate.get -> System.DateTimeOffset? +GitVersion.SemanticVersionBuildMetaData.CommitDate.init -> void +GitVersion.SemanticVersionBuildMetaData.CommitsSinceTag.get -> long? +GitVersion.SemanticVersionBuildMetaData.CommitsSinceTag.init -> void +GitVersion.SemanticVersionBuildMetaData.CommitsSinceVersionSource.get -> long +GitVersion.SemanticVersionBuildMetaData.CommitsSinceVersionSource.init -> void +GitVersion.SemanticVersionBuildMetaData.Equals(GitVersion.SemanticVersionBuildMetaData? other) -> bool +GitVersion.SemanticVersionBuildMetaData.OtherMetaData.get -> string? +GitVersion.SemanticVersionBuildMetaData.OtherMetaData.init -> void +GitVersion.SemanticVersionBuildMetaData.SemanticVersionBuildMetaData() -> void +GitVersion.SemanticVersionBuildMetaData.SemanticVersionBuildMetaData(GitVersion.SemanticVersionBuildMetaData! buildMetaData) -> void +GitVersion.SemanticVersionBuildMetaData.SemanticVersionBuildMetaData(string? versionSourceSha, long? commitsSinceTag, string? branch, string? commitSha, string? commitShortSha, System.DateTimeOffset? commitDate, long numberOfUnCommittedChanges, string? otherMetadata = null) -> void +GitVersion.SemanticVersionBuildMetaData.Sha.get -> string? +GitVersion.SemanticVersionBuildMetaData.Sha.init -> void +GitVersion.SemanticVersionBuildMetaData.ShortSha.get -> string? +GitVersion.SemanticVersionBuildMetaData.ShortSha.init -> void +GitVersion.SemanticVersionBuildMetaData.ToString(string! format) -> string! +GitVersion.SemanticVersionBuildMetaData.ToString(string? format, System.IFormatProvider? formatProvider) -> string! +GitVersion.SemanticVersionBuildMetaData.UncommittedChanges.get -> long +GitVersion.SemanticVersionBuildMetaData.UncommittedChanges.init -> void +GitVersion.SemanticVersionBuildMetaData.VersionSourceSha.get -> string? +GitVersion.SemanticVersionBuildMetaData.VersionSourceSha.init -> void +GitVersion.SemanticVersionFormat +GitVersion.SemanticVersionFormat.Loose = 1 -> GitVersion.SemanticVersionFormat +GitVersion.SemanticVersionFormat.Strict = 0 -> GitVersion.SemanticVersionFormat +GitVersion.SemanticVersionFormatValues +GitVersion.SemanticVersionFormatValues.AssemblyFileSemVer.get -> string? +GitVersion.SemanticVersionFormatValues.AssemblySemVer.get -> string? +GitVersion.SemanticVersionFormatValues.BranchName.get -> string? +GitVersion.SemanticVersionFormatValues.BuildMetaData.get -> string! +GitVersion.SemanticVersionFormatValues.CommitDate.get -> string? +GitVersion.SemanticVersionFormatValues.CommitsSinceVersionSource.get -> string! +GitVersion.SemanticVersionFormatValues.EscapedBranchName.get -> string? +GitVersion.SemanticVersionFormatValues.FullBuildMetaData.get -> string! +GitVersion.SemanticVersionFormatValues.FullSemVer.get -> string! +GitVersion.SemanticVersionFormatValues.InformationalVersion.get -> string! +GitVersion.SemanticVersionFormatValues.Major.get -> string! +GitVersion.SemanticVersionFormatValues.MajorMinorPatch.get -> string! +GitVersion.SemanticVersionFormatValues.Minor.get -> string! +GitVersion.SemanticVersionFormatValues.Patch.get -> string! +GitVersion.SemanticVersionFormatValues.PreReleaseLabel.get -> string! +GitVersion.SemanticVersionFormatValues.PreReleaseLabelWithDash.get -> string! +GitVersion.SemanticVersionFormatValues.PreReleaseNumber.get -> string! +GitVersion.SemanticVersionFormatValues.PreReleaseTag.get -> string! +GitVersion.SemanticVersionFormatValues.PreReleaseTagWithDash.get -> string! +GitVersion.SemanticVersionFormatValues.SemanticVersionFormatValues(GitVersion.SemanticVersion! semver, GitVersion.Configuration.IGitVersionConfiguration! configuration, int preReleaseWeight) -> void +GitVersion.SemanticVersionFormatValues.SemVer.get -> string! +GitVersion.SemanticVersionFormatValues.Sha.get -> string? +GitVersion.SemanticVersionFormatValues.ShortSha.get -> string? +GitVersion.SemanticVersionFormatValues.UncommittedChanges.get -> string! +GitVersion.SemanticVersionFormatValues.VersionSourceSha.get -> string? +GitVersion.SemanticVersionFormatValues.WeightedPreReleaseNumber.get -> string! +GitVersion.SemanticVersionPreReleaseTag +GitVersion.SemanticVersionPreReleaseTag.CompareTo(GitVersion.SemanticVersionPreReleaseTag? other) -> int +GitVersion.SemanticVersionPreReleaseTag.Equals(GitVersion.SemanticVersionPreReleaseTag? other) -> bool +GitVersion.SemanticVersionPreReleaseTag.HasTag() -> bool +GitVersion.SemanticVersionPreReleaseTag.Name.get -> string! +GitVersion.SemanticVersionPreReleaseTag.Name.init -> void +GitVersion.SemanticVersionPreReleaseTag.Number.get -> long? +GitVersion.SemanticVersionPreReleaseTag.Number.init -> void +GitVersion.SemanticVersionPreReleaseTag.PromoteTagEvenIfNameIsEmpty.get -> bool +GitVersion.SemanticVersionPreReleaseTag.PromoteTagEvenIfNameIsEmpty.init -> void +GitVersion.SemanticVersionPreReleaseTag.SemanticVersionPreReleaseTag() -> void +GitVersion.SemanticVersionPreReleaseTag.SemanticVersionPreReleaseTag(GitVersion.SemanticVersionPreReleaseTag! preReleaseTag) -> void +GitVersion.SemanticVersionPreReleaseTag.SemanticVersionPreReleaseTag(string! name, long? number, bool promoteTagEvenIfNameIsEmpty) -> void +GitVersion.SemanticVersionPreReleaseTag.ToString(string! format) -> string! +GitVersion.SemanticVersionPreReleaseTag.ToString(string? format, System.IFormatProvider? formatProvider) -> string! +GitVersion.SemanticVersionWithTag +GitVersion.SemanticVersionWithTag.CompareTo(GitVersion.SemanticVersionWithTag? other) -> int +GitVersion.SemanticVersionWithTag.SemanticVersionWithTag(GitVersion.SemanticVersion! Value, GitVersion.Git.ITag! Tag) -> void +GitVersion.SemanticVersionWithTag.Tag.get -> GitVersion.Git.ITag! +GitVersion.SemanticVersionWithTag.Tag.init -> void +GitVersion.SemanticVersionWithTag.Value.get -> GitVersion.SemanticVersion! +GitVersion.SemanticVersionWithTag.Value.init -> void +GitVersion.Settings +GitVersion.Settings.NoCache -> bool +GitVersion.Settings.NoFetch -> bool +GitVersion.Settings.NoNormalize -> bool +GitVersion.Settings.OnlyTrackedBranches -> bool +GitVersion.VersionCalculation.BaseVersion +GitVersion.VersionCalculation.BaseVersion.BaseVersion() -> void +GitVersion.VersionCalculation.BaseVersion.BaseVersion(GitVersion.VersionCalculation.BaseVersionOperand! Operand) -> void +GitVersion.VersionCalculation.BaseVersion.BaseVersion(string! source, GitVersion.SemanticVersion! semanticVersion, GitVersion.Git.ICommit? baseVersionSource = null) -> void +GitVersion.VersionCalculation.BaseVersion.BaseVersionSource.get -> GitVersion.Git.ICommit? +GitVersion.VersionCalculation.BaseVersion.GetIncrementedVersion() -> GitVersion.SemanticVersion! +GitVersion.VersionCalculation.BaseVersion.Operand.get -> GitVersion.VersionCalculation.BaseVersionOperand! +GitVersion.VersionCalculation.BaseVersion.Operand.init -> void +GitVersion.VersionCalculation.BaseVersion.Operator.get -> GitVersion.VersionCalculation.BaseVersionOperator? +GitVersion.VersionCalculation.BaseVersion.Operator.init -> void +GitVersion.VersionCalculation.BaseVersion.SemanticVersion.get -> GitVersion.SemanticVersion! +GitVersion.VersionCalculation.BaseVersion.ShouldIncrement.get -> bool +GitVersion.VersionCalculation.BaseVersion.Source.get -> string! +GitVersion.VersionCalculation.BaseVersionOperand +GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionOperand() -> void +GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionOperand(string! Source, GitVersion.SemanticVersion! SemanticVersion, GitVersion.Git.ICommit? BaseVersionSource = null) -> void +GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionSource.get -> GitVersion.Git.ICommit? +GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionSource.init -> void +GitVersion.VersionCalculation.BaseVersionOperand.SemanticVersion.get -> GitVersion.SemanticVersion! +GitVersion.VersionCalculation.BaseVersionOperand.SemanticVersion.init -> void +GitVersion.VersionCalculation.BaseVersionOperand.Source.get -> string! +GitVersion.VersionCalculation.BaseVersionOperand.Source.init -> void +GitVersion.VersionCalculation.BaseVersionOperator +GitVersion.VersionCalculation.BaseVersionOperator.AlternativeSemanticVersion.get -> GitVersion.SemanticVersion? +GitVersion.VersionCalculation.BaseVersionOperator.AlternativeSemanticVersion.init -> void +GitVersion.VersionCalculation.BaseVersionOperator.BaseVersionSource.get -> GitVersion.Git.ICommit? +GitVersion.VersionCalculation.BaseVersionOperator.BaseVersionSource.init -> void +GitVersion.VersionCalculation.BaseVersionOperator.ForceIncrement.get -> bool +GitVersion.VersionCalculation.BaseVersionOperator.ForceIncrement.init -> void +GitVersion.VersionCalculation.BaseVersionOperator.Increment.get -> GitVersion.VersionField +GitVersion.VersionCalculation.BaseVersionOperator.Increment.init -> void +GitVersion.VersionCalculation.BaseVersionOperator.Label.get -> string? +GitVersion.VersionCalculation.BaseVersionOperator.Label.init -> void +GitVersion.VersionCalculation.BaseVersionOperator.Source.get -> string! +GitVersion.VersionCalculation.BaseVersionOperator.Source.init -> void +GitVersion.VersionCalculation.Caching.GitVersionCacheKey +GitVersion.VersionCalculation.Caching.GitVersionCacheKey.GitVersionCacheKey(string! Value) -> void +GitVersion.VersionCalculation.Caching.GitVersionCacheKey.Value.get -> string! +GitVersion.VersionCalculation.Caching.GitVersionCacheKey.Value.init -> void +GitVersion.VersionCalculation.Caching.IGitVersionCacheProvider +GitVersion.VersionCalculation.Caching.IGitVersionCacheProvider.LoadVersionVariablesFromDiskCache() -> GitVersion.OutputVariables.GitVersionVariables? +GitVersion.VersionCalculation.Caching.IGitVersionCacheProvider.WriteVariablesToDiskCache(GitVersion.OutputVariables.GitVersionVariables! versionVariables) -> void +GitVersion.VersionCalculation.CommitMessageIncrementMode +GitVersion.VersionCalculation.CommitMessageIncrementMode.Disabled = 1 -> GitVersion.VersionCalculation.CommitMessageIncrementMode +GitVersion.VersionCalculation.CommitMessageIncrementMode.Enabled = 0 -> GitVersion.VersionCalculation.CommitMessageIncrementMode +GitVersion.VersionCalculation.CommitMessageIncrementMode.MergeMessageOnly = 2 -> GitVersion.VersionCalculation.CommitMessageIncrementMode +GitVersion.VersionCalculation.DeploymentMode +GitVersion.VersionCalculation.DeploymentMode.ContinuousDelivery = 1 -> GitVersion.VersionCalculation.DeploymentMode +GitVersion.VersionCalculation.DeploymentMode.ContinuousDeployment = 2 -> GitVersion.VersionCalculation.DeploymentMode +GitVersion.VersionCalculation.DeploymentMode.ManualDeployment = 0 -> GitVersion.VersionCalculation.DeploymentMode +GitVersion.VersionCalculation.IBaseVersion +GitVersion.VersionCalculation.IBaseVersion.SemanticVersion.get -> GitVersion.SemanticVersion! +GitVersion.VersionCalculation.IBaseVersionIncrement +GitVersion.VersionCalculation.IBaseVersionIncrement.BaseVersionSource.get -> GitVersion.Git.ICommit? +GitVersion.VersionCalculation.IBaseVersionIncrement.Source.get -> string! +GitVersion.VersionCalculation.IDeploymentModeCalculator +GitVersion.VersionCalculation.IDeploymentModeCalculator.Calculate(GitVersion.SemanticVersion! semanticVersion, GitVersion.Git.ICommit? baseVersionSource) -> GitVersion.SemanticVersion! +GitVersion.VersionCalculation.IEffectiveBranchConfigurationFinder +GitVersion.VersionCalculation.IEffectiveBranchConfigurationFinder.GetConfigurations(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> System.Collections.Generic.IEnumerable! +GitVersion.VersionCalculation.IIncrementStrategyFinder +GitVersion.VersionCalculation.IIncrementStrategyFinder.DetermineIncrementedField(GitVersion.Git.ICommit! currentCommit, GitVersion.Git.ICommit? baseVersionSource, bool shouldIncrement, GitVersion.Configuration.EffectiveConfiguration! configuration, string? label) -> GitVersion.VersionField +GitVersion.VersionCalculation.IIncrementStrategyFinder.GetIncrementForcedByCommit(GitVersion.Git.ICommit! commit, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> GitVersion.VersionField +GitVersion.VersionCalculation.IIncrementStrategyFinder.GetIncrementForCommits(string? majorVersionBumpMessage, string? minorVersionBumpMessage, string? patchVersionBumpMessage, string? noBumpMessage, GitVersion.Git.ICommit![]! commits) -> GitVersion.VersionField? +GitVersion.VersionCalculation.IIncrementStrategyFinder.GetMergedCommits(GitVersion.Git.ICommit! mergeCommit, int index, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> System.Collections.Generic.IEnumerable! +GitVersion.VersionCalculation.INextVersionCalculator +GitVersion.VersionCalculation.INextVersionCalculator.FindVersion() -> GitVersion.SemanticVersion! +GitVersion.VersionCalculation.IVariableProvider +GitVersion.VersionCalculation.IVariableProvider.GetVariablesFor(GitVersion.SemanticVersion! semanticVersion, GitVersion.Configuration.IGitVersionConfiguration! configuration, int preReleaseWeight) -> GitVersion.OutputVariables.GitVersionVariables! +GitVersion.VersionCalculation.IVersionFilter +GitVersion.VersionCalculation.IVersionFilter.Exclude(GitVersion.VersionCalculation.IBaseVersion! baseVersion, out string? reason) -> bool +GitVersion.VersionCalculation.IVersionStrategy +GitVersion.VersionCalculation.IVersionStrategy.GetBaseVersions(GitVersion.Configuration.EffectiveBranchConfiguration! configuration) -> System.Collections.Generic.IEnumerable! +GitVersion.VersionCalculation.NextVersion +GitVersion.VersionCalculation.NextVersion.BaseVersion.get -> GitVersion.VersionCalculation.IBaseVersion! +GitVersion.VersionCalculation.NextVersion.BranchConfiguration.get -> GitVersion.Configuration.EffectiveBranchConfiguration! +GitVersion.VersionCalculation.NextVersion.CompareTo(GitVersion.VersionCalculation.NextVersion? other) -> int +GitVersion.VersionCalculation.NextVersion.Configuration.get -> GitVersion.Configuration.EffectiveConfiguration! +GitVersion.VersionCalculation.NextVersion.Equals(GitVersion.VersionCalculation.NextVersion? other) -> bool +GitVersion.VersionCalculation.NextVersion.IncrementedVersion.get -> GitVersion.SemanticVersion! +GitVersion.VersionCalculation.NextVersion.NextVersion(GitVersion.SemanticVersion! incrementedVersion, GitVersion.VersionCalculation.IBaseVersion! baseVersion, GitVersion.Configuration.EffectiveBranchConfiguration! configuration) -> void +GitVersion.VersionCalculation.VersionCalculationModule +GitVersion.VersionCalculation.VersionCalculationModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void +GitVersion.VersionCalculation.VersionCalculationModule.VersionCalculationModule() -> void +GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategies.ConfiguredNextVersion = 2 -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategies.Fallback = 1 -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategies.Mainline = 64 -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategies.MergeMessage = 4 -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategies.None = 0 -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategies.TaggedCommit = 8 -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategies.TrackReleaseBranches = 16 -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategies.VersionInBranchName = 32 -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategyModule +GitVersion.VersionCalculation.VersionStrategyModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void +GitVersion.VersionCalculation.VersionStrategyModule.VersionStrategyModule() -> void +GitVersion.VersionField +GitVersion.VersionField.Major = 3 -> GitVersion.VersionField +GitVersion.VersionField.Minor = 2 -> GitVersion.VersionField +GitVersion.VersionField.None = 0 -> GitVersion.VersionField +GitVersion.VersionField.Patch = 1 -> GitVersion.VersionField +GitVersion.WarningException +GitVersion.WarningException.WarningException() -> void +GitVersion.WarningException.WarningException(string! message) -> void +GitVersion.WarningException.WarningException(string? message, System.Exception? innerException) -> void +GitVersion.WixInfo +GitVersion.WixInfo.UpdateWixVersionFile -> bool +override GitVersion.Git.BranchCommit.Equals(object? obj) -> bool +override GitVersion.Git.BranchCommit.GetHashCode() -> int +override GitVersion.Git.ReferenceName.Equals(object? obj) -> bool +override GitVersion.Git.ReferenceName.GetHashCode() -> int +override GitVersion.Git.ReferenceName.ToString() -> string! +override GitVersion.Helpers.LambdaKeyComparer.Compare(TSource? x, TSource? y) -> int +override GitVersion.SemanticVersion.Equals(object? obj) -> bool +override GitVersion.SemanticVersion.GetHashCode() -> int +override GitVersion.SemanticVersion.ToString() -> string! +override GitVersion.SemanticVersionBuildMetaData.Equals(object? obj) -> bool +override GitVersion.SemanticVersionBuildMetaData.GetHashCode() -> int +override GitVersion.SemanticVersionBuildMetaData.ToString() -> string! +override GitVersion.SemanticVersionPreReleaseTag.Equals(object? obj) -> bool +override GitVersion.SemanticVersionPreReleaseTag.GetHashCode() -> int +override GitVersion.SemanticVersionPreReleaseTag.ToString() -> string! +override GitVersion.SemanticVersionWithTag.ToString() -> string! +override GitVersion.VersionCalculation.BaseVersion.ToString() -> string! +override GitVersion.VersionCalculation.BaseVersionOperand.ToString() -> string! +override GitVersion.VersionCalculation.BaseVersionOperator.ToString() -> string! +override GitVersion.VersionCalculation.NextVersion.Equals(object? other) -> bool +override GitVersion.VersionCalculation.NextVersion.GetHashCode() -> int +override GitVersion.VersionCalculation.NextVersion.ToString() -> string! +static GitVersion.Configuration.ReferenceNameExtensions.TryGetSemanticVersion(this GitVersion.Git.ReferenceName! source, out (GitVersion.SemanticVersion! Value, string? Name) result, GitVersion.Configuration.EffectiveConfiguration! configuration) -> bool +static GitVersion.Configuration.ReferenceNameExtensions.TryGetSemanticVersion(this GitVersion.Git.ReferenceName! source, out (GitVersion.SemanticVersion! Value, string? Name) result, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> bool +static GitVersion.Extensions.AssemblyVersionsGeneratorExtensions.GetAssemblyFileVersion(this GitVersion.SemanticVersion! sv, GitVersion.Configuration.AssemblyFileVersioningScheme scheme) -> string? +static GitVersion.Extensions.AssemblyVersionsGeneratorExtensions.GetAssemblyVersion(this GitVersion.SemanticVersion! sv, GitVersion.Configuration.AssemblyVersioningScheme scheme) -> string? +static GitVersion.Extensions.CommonExtensions.NotNull(this T? value, string! name = "") -> T! +static GitVersion.Extensions.CommonExtensions.NotNullOrEmpty(this string? value, string! name = "") -> string! +static GitVersion.Extensions.CommonExtensions.NotNullOrWhitespace(this string? value, string! name = "") -> string! +static GitVersion.Extensions.DictionaryExtensions.GetOrAdd(this System.Collections.Generic.IDictionary! dict, TKey key, System.Func! getValue) -> TValue +static GitVersion.Extensions.EnumerableExtensions.AddRange(this System.Collections.Generic.ICollection! source, System.Collections.Generic.IEnumerable! items) -> void +static GitVersion.Extensions.EnumerableExtensions.OnlyOrDefault(this System.Collections.Generic.IEnumerable! source) -> T? +static GitVersion.Extensions.EnumerableExtensions.SingleOfType(this System.Collections.IEnumerable! source) -> T +static GitVersion.Extensions.GitExtensions.CreateGitLogArgs(int? maxCommits) -> string! +static GitVersion.Extensions.GitExtensions.DumpGraph(string! workingDirectory, System.Action? writer = null, int? maxCommits = null) -> void +static GitVersion.Extensions.IncrementStrategyExtensions.ToVersionField(this GitVersion.IncrementStrategy strategy) -> GitVersion.VersionField +static GitVersion.Extensions.ReadEmbeddedResourceExtensions.ReadAsStringFromEmbeddedResource(this string! resourceName, System.Reflection.Assembly! assembly) -> string! +static GitVersion.Extensions.ReadEmbeddedResourceExtensions.ReadAsStringFromEmbeddedResource(this string! resourceName) -> string! +static GitVersion.Extensions.ServiceCollectionExtensions.AddModule(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection, GitVersion.IGitVersionModule! gitVersionModule) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static GitVersion.Extensions.ServiceCollectionExtensions.GetServiceForType(this System.IServiceProvider! serviceProvider) -> TService +static GitVersion.Extensions.StringExtensions.AppendLineFormat(this System.Text.StringBuilder! stringBuilder, string! format, params object![]! args) -> void +static GitVersion.Extensions.StringExtensions.IsEmpty(this string? value) -> bool +static GitVersion.Extensions.StringExtensions.IsEquivalentTo(this string! self, string? other) -> bool +static GitVersion.Extensions.StringExtensions.IsNullOrEmpty(this string? value) -> bool +static GitVersion.Extensions.StringExtensions.IsNullOrWhiteSpace(this string? value) -> bool +static GitVersion.Extensions.StringExtensions.RegexReplace(this string! input, string! pattern, string! replace, System.Text.RegularExpressions.RegexOptions options = System.Text.RegularExpressions.RegexOptions.None) -> string! +static GitVersion.Extensions.StringExtensions.WithPrefixIfNotNullOrEmpty(this string! value, string! prefix) -> string! +static GitVersion.Git.BranchCommit.operator !=(GitVersion.Git.BranchCommit left, GitVersion.Git.BranchCommit right) -> bool +static GitVersion.Git.BranchCommit.operator ==(GitVersion.Git.BranchCommit left, GitVersion.Git.BranchCommit right) -> bool +static GitVersion.Git.CommitExtensions.IsMergeCommit(this GitVersion.Git.ICommit! source) -> bool +static GitVersion.Git.ReferenceName.FromBranchName(string! branchName) -> GitVersion.Git.ReferenceName! +static GitVersion.Git.ReferenceName.operator !=(GitVersion.Git.ReferenceName? left, GitVersion.Git.ReferenceName? right) -> bool +static GitVersion.Git.ReferenceName.operator ==(GitVersion.Git.ReferenceName? left, GitVersion.Git.ReferenceName? right) -> bool +static GitVersion.Git.ReferenceName.Parse(string! canonicalName) -> GitVersion.Git.ReferenceName! +static GitVersion.Git.ReferenceName.TryParse(out GitVersion.Git.ReferenceName? value, string! canonicalName) -> bool +static GitVersion.Helpers.Disposable.Create(System.Action! disposer) -> System.IDisposable! +static GitVersion.Helpers.Disposable.Create(T value, System.Action! disposer) -> GitVersion.Helpers.IDisposable! +static GitVersion.Helpers.EncodingHelper.DetectEncoding(string? filename) -> System.Text.Encoding? +static GitVersion.Helpers.EncodingHelper.DetectEncoding(System.Collections.Generic.IList! bytes) -> System.Text.Encoding? +static GitVersion.Helpers.ServiceMessageEscapeHelper.EscapeValue(string? value) -> string? +static GitVersion.Logging.LogExtensions.Debug(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogAction! logAction) -> void +static GitVersion.Logging.LogExtensions.Debug(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogAction! logAction) -> void +static GitVersion.Logging.LogExtensions.Debug(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, string! format, params object![]! args) -> void +static GitVersion.Logging.LogExtensions.Debug(this GitVersion.Logging.ILog! log, string! format, params object![]! args) -> void +static GitVersion.Logging.LogExtensions.DiagnosticVerbosity(this GitVersion.Logging.ILog! log) -> System.IDisposable! +static GitVersion.Logging.LogExtensions.Error(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogAction! logAction) -> void +static GitVersion.Logging.LogExtensions.Error(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogAction! logAction) -> void +static GitVersion.Logging.LogExtensions.Error(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, string! format, params object![]! args) -> void +static GitVersion.Logging.LogExtensions.Error(this GitVersion.Logging.ILog! log, string! format, params object![]! args) -> void +static GitVersion.Logging.LogExtensions.Info(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogAction! logAction) -> void +static GitVersion.Logging.LogExtensions.Info(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogAction! logAction) -> void +static GitVersion.Logging.LogExtensions.Info(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, string! format, params object![]! args) -> void +static GitVersion.Logging.LogExtensions.Info(this GitVersion.Logging.ILog! log, string! format, params object![]! args) -> void +static GitVersion.Logging.LogExtensions.MinimalVerbosity(this GitVersion.Logging.ILog! log) -> System.IDisposable! +static GitVersion.Logging.LogExtensions.NormalVerbosity(this GitVersion.Logging.ILog! log) -> System.IDisposable! +static GitVersion.Logging.LogExtensions.QuietVerbosity(this GitVersion.Logging.ILog! log) -> System.IDisposable! +static GitVersion.Logging.LogExtensions.Verbose(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogAction! logAction) -> void +static GitVersion.Logging.LogExtensions.Verbose(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogAction! logAction) -> void +static GitVersion.Logging.LogExtensions.Verbose(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, string! format, params object![]! args) -> void +static GitVersion.Logging.LogExtensions.Verbose(this GitVersion.Logging.ILog! log, string! format, params object![]! args) -> void +static GitVersion.Logging.LogExtensions.VerboseVerbosity(this GitVersion.Logging.ILog! log) -> System.IDisposable! +static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogAction! logAction) -> void +static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogAction! logAction) -> void +static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, string! format, params object![]! args) -> void +static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! log, string! format, params object![]! args) -> void +static GitVersion.MergeMessage.TryParse(GitVersion.Git.ICommit! mergeCommit, GitVersion.Configuration.IGitVersionConfiguration! configuration, out GitVersion.MergeMessage? mergeMessage) -> bool +static GitVersion.SemanticVersion.operator !=(GitVersion.SemanticVersion? v1, GitVersion.SemanticVersion? v2) -> bool +static GitVersion.SemanticVersion.operator <(GitVersion.SemanticVersion! v1, GitVersion.SemanticVersion! v2) -> bool +static GitVersion.SemanticVersion.operator <=(GitVersion.SemanticVersion! v1, GitVersion.SemanticVersion! v2) -> bool +static GitVersion.SemanticVersion.operator ==(GitVersion.SemanticVersion? v1, GitVersion.SemanticVersion? v2) -> bool +static GitVersion.SemanticVersion.operator >(GitVersion.SemanticVersion! v1, GitVersion.SemanticVersion! v2) -> bool +static GitVersion.SemanticVersion.operator >=(GitVersion.SemanticVersion! v1, GitVersion.SemanticVersion! v2) -> bool +static GitVersion.SemanticVersion.Parse(string! version, string? tagPrefixRegex, GitVersion.SemanticVersionFormat versionFormat = GitVersion.SemanticVersionFormat.Strict) -> GitVersion.SemanticVersion! +static GitVersion.SemanticVersion.TryParse(string! version, string? tagPrefixRegex, out GitVersion.SemanticVersion? semanticVersion, GitVersion.SemanticVersionFormat format = GitVersion.SemanticVersionFormat.Strict) -> bool +static GitVersion.SemanticVersionBuildMetaData.implicit operator GitVersion.SemanticVersionBuildMetaData!(string! preReleaseTag) -> GitVersion.SemanticVersionBuildMetaData! +static GitVersion.SemanticVersionBuildMetaData.implicit operator string?(GitVersion.SemanticVersionBuildMetaData? preReleaseTag) -> string? +static GitVersion.SemanticVersionBuildMetaData.operator !=(GitVersion.SemanticVersionBuildMetaData? left, GitVersion.SemanticVersionBuildMetaData? right) -> bool +static GitVersion.SemanticVersionBuildMetaData.operator ==(GitVersion.SemanticVersionBuildMetaData? left, GitVersion.SemanticVersionBuildMetaData? right) -> bool +static GitVersion.SemanticVersionBuildMetaData.Parse(string? buildMetaData) -> GitVersion.SemanticVersionBuildMetaData! +static GitVersion.SemanticVersionPreReleaseTag.implicit operator GitVersion.SemanticVersionPreReleaseTag!(string? preReleaseTag) -> GitVersion.SemanticVersionPreReleaseTag! +static GitVersion.SemanticVersionPreReleaseTag.implicit operator string?(GitVersion.SemanticVersionPreReleaseTag? preReleaseTag) -> string? +static GitVersion.SemanticVersionPreReleaseTag.operator !=(GitVersion.SemanticVersionPreReleaseTag? left, GitVersion.SemanticVersionPreReleaseTag? right) -> bool +static GitVersion.SemanticVersionPreReleaseTag.operator <(GitVersion.SemanticVersionPreReleaseTag? left, GitVersion.SemanticVersionPreReleaseTag? right) -> bool +static GitVersion.SemanticVersionPreReleaseTag.operator <=(GitVersion.SemanticVersionPreReleaseTag? left, GitVersion.SemanticVersionPreReleaseTag? right) -> bool +static GitVersion.SemanticVersionPreReleaseTag.operator ==(GitVersion.SemanticVersionPreReleaseTag? left, GitVersion.SemanticVersionPreReleaseTag? right) -> bool +static GitVersion.SemanticVersionPreReleaseTag.operator >(GitVersion.SemanticVersionPreReleaseTag? left, GitVersion.SemanticVersionPreReleaseTag? right) -> bool +static GitVersion.SemanticVersionPreReleaseTag.operator >=(GitVersion.SemanticVersionPreReleaseTag? left, GitVersion.SemanticVersionPreReleaseTag? right) -> bool +static GitVersion.SemanticVersionPreReleaseTag.Parse(string? preReleaseTag) -> GitVersion.SemanticVersionPreReleaseTag! +static GitVersion.VersionCalculation.NextVersion.operator !=(GitVersion.VersionCalculation.NextVersion! left, GitVersion.VersionCalculation.NextVersion! right) -> bool +static GitVersion.VersionCalculation.NextVersion.operator <(GitVersion.VersionCalculation.NextVersion! left, GitVersion.VersionCalculation.NextVersion! right) -> bool +static GitVersion.VersionCalculation.NextVersion.operator <=(GitVersion.VersionCalculation.NextVersion! left, GitVersion.VersionCalculation.NextVersion! right) -> bool +static GitVersion.VersionCalculation.NextVersion.operator ==(GitVersion.VersionCalculation.NextVersion! left, GitVersion.VersionCalculation.NextVersion? right) -> bool +static GitVersion.VersionCalculation.NextVersion.operator >(GitVersion.VersionCalculation.NextVersion! left, GitVersion.VersionCalculation.NextVersion! right) -> bool +static GitVersion.VersionCalculation.NextVersion.operator >=(GitVersion.VersionCalculation.NextVersion! left, GitVersion.VersionCalculation.NextVersion! right) -> bool +static readonly GitVersion.Git.BranchCommit.Empty -> GitVersion.Git.BranchCommit +static readonly GitVersion.Helpers.Disposable.Empty -> System.IDisposable! +static readonly GitVersion.SemanticVersion.Empty -> GitVersion.SemanticVersion! +static readonly GitVersion.SemanticVersionBuildMetaData.Empty -> GitVersion.SemanticVersionBuildMetaData! +static readonly GitVersion.SemanticVersionPreReleaseTag.Empty -> GitVersion.SemanticVersionPreReleaseTag! diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index b20f471231..7dc5c58110 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -1,837 +1 @@ #nullable enable -const GitVersion.Git.ReferenceName.LocalBranchPrefix = "refs/heads/" -> string! -const GitVersion.Git.ReferenceName.RemoteTrackingBranchPrefix = "refs/remotes/" -> string! -GitVersion.Agents.IBuildAgent -GitVersion.Agents.IBuildAgent.CanApplyToCurrentContext() -> bool -GitVersion.Agents.IBuildAgent.GetCurrentBranch(bool usingDynamicRepos) -> string? -GitVersion.Agents.IBuildAgent.IsDefault.get -> bool -GitVersion.Agents.IBuildAgent.PreventFetch() -> bool -GitVersion.Agents.IBuildAgent.ShouldCleanUpRemotes() -> bool -GitVersion.Agents.IBuildAgent.WriteIntegration(System.Action! writer, GitVersion.OutputVariables.GitVersionVariables! variables, bool updateBuildNumber = true) -> void -GitVersion.Agents.ICurrentBuildAgent -GitVersion.AssemblySettingsInfo -GitVersion.AssemblySettingsInfo.AssemblySettingsInfo() -> void -GitVersion.AssemblySettingsInfo.EnsureAssemblyInfo -> bool -GitVersion.AssemblySettingsInfo.Files -> System.Collections.Generic.ISet! -GitVersion.AssemblySettingsInfo.UpdateAssemblyInfo -> bool -GitVersion.AssemblySettingsInfo.UpdateProjectFiles -> bool -GitVersion.BugException -GitVersion.BugException.BugException() -> void -GitVersion.BugException.BugException(string! message) -> void -GitVersion.BugException.BugException(string? message, System.Exception? innerException) -> void -GitVersion.Common.IRepositoryStore -GitVersion.Common.IRepositoryStore.ExcludingBranches(System.Collections.Generic.IEnumerable! branchesToExclude) -> System.Collections.Generic.IEnumerable! -GitVersion.Common.IRepositoryStore.FindBranch(GitVersion.Git.ReferenceName! branchName) -> GitVersion.Git.IBranch? -GitVersion.Common.IRepositoryStore.FindBranch(string! branchName) -> GitVersion.Git.IBranch? -GitVersion.Common.IRepositoryStore.FindCommitBranchBranchedFrom(GitVersion.Git.IBranch? branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.Git.IBranch![]! excludedBranches) -> GitVersion.Git.BranchCommit -GitVersion.Common.IRepositoryStore.FindCommitBranchesBranchedFrom(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.Git.IBranch![]! excludedBranches) -> System.Collections.Generic.IEnumerable! -GitVersion.Common.IRepositoryStore.FindCommitBranchesBranchedFrom(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, System.Collections.Generic.IEnumerable! excludedBranches) -> System.Collections.Generic.IEnumerable! -GitVersion.Common.IRepositoryStore.FindMergeBase(GitVersion.Git.IBranch? branch, GitVersion.Git.IBranch? otherBranch) -> GitVersion.Git.ICommit? -GitVersion.Common.IRepositoryStore.FindMergeBase(GitVersion.Git.ICommit! commit, GitVersion.Git.ICommit! mainlineTip) -> GitVersion.Git.ICommit? -GitVersion.Common.IRepositoryStore.GetBranchesContainingCommit(GitVersion.Git.ICommit! commit, System.Collections.Generic.IEnumerable? branches = null, bool onlyTrackedBranches = false) -> System.Collections.Generic.IEnumerable! -GitVersion.Common.IRepositoryStore.GetCommitLog(GitVersion.Git.ICommit? baseVersionSource, GitVersion.Git.ICommit! currentCommit, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> System.Collections.Generic.IReadOnlyList! -GitVersion.Common.IRepositoryStore.GetCurrentCommit(GitVersion.Git.IBranch! currentBranch, string? commitId, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> GitVersion.Git.ICommit? -GitVersion.Common.IRepositoryStore.GetNumberOfUncommittedChanges() -> int -GitVersion.Common.IRepositoryStore.GetSourceBranches(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.Git.IBranch![]! excludedBranches) -> System.Collections.Generic.IEnumerable! -GitVersion.Common.IRepositoryStore.GetSourceBranches(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, System.Collections.Generic.IEnumerable! excludedBranches) -> System.Collections.Generic.IEnumerable! -GitVersion.Common.IRepositoryStore.GetTargetBranch(string? targetBranchName) -> GitVersion.Git.IBranch! -GitVersion.Common.IRepositoryStore.IsCommitOnBranch(GitVersion.Git.ICommit? baseVersionSource, GitVersion.Git.IBranch! branch, GitVersion.Git.ICommit! firstMatchingCommit) -> bool -GitVersion.Configuration.AssemblyFileVersioningScheme -GitVersion.Configuration.AssemblyFileVersioningScheme.Major = 3 -> GitVersion.Configuration.AssemblyFileVersioningScheme -GitVersion.Configuration.AssemblyFileVersioningScheme.MajorMinor = 2 -> GitVersion.Configuration.AssemblyFileVersioningScheme -GitVersion.Configuration.AssemblyFileVersioningScheme.MajorMinorPatch = 1 -> GitVersion.Configuration.AssemblyFileVersioningScheme -GitVersion.Configuration.AssemblyFileVersioningScheme.MajorMinorPatchTag = 0 -> GitVersion.Configuration.AssemblyFileVersioningScheme -GitVersion.Configuration.AssemblyFileVersioningScheme.None = 4 -> GitVersion.Configuration.AssemblyFileVersioningScheme -GitVersion.Configuration.AssemblyVersioningScheme -GitVersion.Configuration.AssemblyVersioningScheme.Major = 3 -> GitVersion.Configuration.AssemblyVersioningScheme -GitVersion.Configuration.AssemblyVersioningScheme.MajorMinor = 2 -> GitVersion.Configuration.AssemblyVersioningScheme -GitVersion.Configuration.AssemblyVersioningScheme.MajorMinorPatch = 1 -> GitVersion.Configuration.AssemblyVersioningScheme -GitVersion.Configuration.AssemblyVersioningScheme.MajorMinorPatchTag = 0 -> GitVersion.Configuration.AssemblyVersioningScheme -GitVersion.Configuration.AssemblyVersioningScheme.None = 4 -> GitVersion.Configuration.AssemblyVersioningScheme -GitVersion.Configuration.EffectiveBranchConfiguration -GitVersion.Configuration.EffectiveBranchConfiguration.Branch.get -> GitVersion.Git.IBranch! -GitVersion.Configuration.EffectiveBranchConfiguration.EffectiveBranchConfiguration(GitVersion.Configuration.EffectiveConfiguration! Value, GitVersion.Git.IBranch! Branch) -> void -GitVersion.Configuration.EffectiveBranchConfiguration.Value.get -> GitVersion.Configuration.EffectiveConfiguration! -GitVersion.Configuration.EffectiveConfiguration -GitVersion.Configuration.EffectiveConfiguration.AssemblyFileVersioningFormat.get -> string? -GitVersion.Configuration.EffectiveConfiguration.AssemblyFileVersioningScheme.get -> GitVersion.Configuration.AssemblyFileVersioningScheme -GitVersion.Configuration.EffectiveConfiguration.AssemblyInformationalFormat.get -> string? -GitVersion.Configuration.EffectiveConfiguration.AssemblyVersioningFormat.get -> string? -GitVersion.Configuration.EffectiveConfiguration.AssemblyVersioningScheme.get -> GitVersion.Configuration.AssemblyVersioningScheme -GitVersion.Configuration.EffectiveConfiguration.DeploymentMode.get -> GitVersion.VersionCalculation.DeploymentMode -GitVersion.Configuration.EffectiveConfiguration.EffectiveConfiguration(GitVersion.Configuration.IGitVersionConfiguration! configuration, GitVersion.Configuration.IBranchConfiguration! branchConfiguration, GitVersion.Configuration.EffectiveConfiguration? fallbackConfiguration = null) -> void -GitVersion.Configuration.EffectiveConfiguration.Ignore.get -> GitVersion.Configuration.IIgnoreConfiguration! -GitVersion.Configuration.EffectiveConfiguration.PreventIncrementOfMergedBranch.get -> bool -GitVersion.Configuration.EffectiveConfiguration.PreventIncrementWhenBranchMerged.get -> bool -GitVersion.Configuration.EffectiveConfiguration.PreventIncrementWhenCurrentCommitTagged.get -> bool -GitVersion.Configuration.EffectiveConfiguration.RegularExpression.get -> string? -GitVersion.Configuration.EffectiveConfiguration.CommitDateFormat.get -> string? -GitVersion.Configuration.EffectiveConfiguration.CommitMessageIncrementing.get -> GitVersion.VersionCalculation.CommitMessageIncrementMode -GitVersion.Configuration.EffectiveConfiguration.Increment.get -> GitVersion.IncrementStrategy -GitVersion.Configuration.EffectiveConfiguration.IsMainBranch.get -> bool -GitVersion.Configuration.EffectiveConfiguration.IsReleaseBranch.get -> bool -GitVersion.Configuration.EffectiveConfiguration.Label.get -> string? -GitVersion.Configuration.EffectiveConfiguration.LabelNumberPattern.get -> string? -GitVersion.Configuration.EffectiveConfiguration.TagPreReleaseWeight.get -> int -GitVersion.Configuration.EffectiveConfiguration.TagPrefix.get -> string? -GitVersion.Configuration.EffectiveConfiguration.MajorVersionBumpMessage.get -> string? -GitVersion.Configuration.EffectiveConfiguration.MinorVersionBumpMessage.get -> string? -GitVersion.Configuration.EffectiveConfiguration.NextVersion.get -> string? -GitVersion.Configuration.EffectiveConfiguration.NoBumpMessage.get -> string? -GitVersion.Configuration.EffectiveConfiguration.PatchVersionBumpMessage.get -> string? -GitVersion.Configuration.EffectiveConfiguration.PreReleaseWeight.get -> int -GitVersion.Configuration.EffectiveConfiguration.SemanticVersionFormat.get -> GitVersion.SemanticVersionFormat -GitVersion.Configuration.EffectiveConfiguration.TrackMergeMessage.get -> bool -GitVersion.Configuration.EffectiveConfiguration.TrackMergeTarget.get -> bool -GitVersion.Configuration.EffectiveConfiguration.TracksReleaseBranches.get -> bool -GitVersion.Configuration.EffectiveConfiguration.UpdateBuildNumber.get -> bool -GitVersion.Configuration.EffectiveConfiguration.VersionFilters.get -> System.Collections.Generic.IEnumerable! -GitVersion.Configuration.EffectiveConfiguration.VersionInBranchRegex.get -> System.Text.RegularExpressions.Regex! -GitVersion.Configuration.EffectiveConfiguration.VersionStrategy.get -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.Configuration.IBranchConfiguration -GitVersion.Configuration.IBranchConfiguration.CommitMessageIncrementing.get -> GitVersion.VersionCalculation.CommitMessageIncrementMode? -GitVersion.Configuration.IBranchConfiguration.DeploymentMode.get -> GitVersion.VersionCalculation.DeploymentMode? -GitVersion.Configuration.IBranchConfiguration.Increment.get -> GitVersion.IncrementStrategy -GitVersion.Configuration.IBranchConfiguration.Inherit(GitVersion.Configuration.EffectiveConfiguration! configuration) -> GitVersion.Configuration.IBranchConfiguration! -GitVersion.Configuration.IBranchConfiguration.Inherit(GitVersion.Configuration.IBranchConfiguration! configuration) -> GitVersion.Configuration.IBranchConfiguration! -GitVersion.Configuration.IBranchConfiguration.IsMainBranch.get -> bool? -GitVersion.Configuration.IBranchConfiguration.IsMatch(string! branchName) -> bool -GitVersion.Configuration.IBranchConfiguration.IsReleaseBranch.get -> bool? -GitVersion.Configuration.IBranchConfiguration.IsSourceBranchFor.get -> System.Collections.Generic.IReadOnlyCollection! -GitVersion.Configuration.IBranchConfiguration.Label.get -> string? -GitVersion.Configuration.IBranchConfiguration.LabelNumberPattern.get -> string? -GitVersion.Configuration.IBranchConfiguration.PreReleaseWeight.get -> int? -GitVersion.Configuration.IBranchConfiguration.PreventIncrement.get -> GitVersion.Configuration.IPreventIncrementConfiguration! -GitVersion.Configuration.IBranchConfiguration.RegularExpression.get -> string? -GitVersion.Configuration.IBranchConfiguration.SourceBranches.get -> System.Collections.Generic.IReadOnlyCollection! -GitVersion.Configuration.IBranchConfiguration.TrackMergeMessage.get -> bool? -GitVersion.Configuration.IBranchConfiguration.TrackMergeTarget.get -> bool? -GitVersion.Configuration.IBranchConfiguration.TracksReleaseBranches.get -> bool? -GitVersion.Configuration.IConfigurationFileLocator -GitVersion.Configuration.IConfigurationFileLocator.GetConfigurationFile(string? directory) -> string? -GitVersion.Configuration.IConfigurationFileLocator.Verify(string? workingDirectory, string? projectRootDirectory) -> void -GitVersion.Configuration.IConfigurationProvider -GitVersion.Configuration.IConfigurationProvider.Provide(System.Collections.Generic.IReadOnlyDictionary? overrideConfiguration = null) -> GitVersion.Configuration.IGitVersionConfiguration! -GitVersion.Configuration.IGitVersionConfiguration -GitVersion.Configuration.IGitVersionConfiguration.AssemblyFileVersioningFormat.get -> string? -GitVersion.Configuration.IGitVersionConfiguration.AssemblyFileVersioningScheme.get -> GitVersion.Configuration.AssemblyFileVersioningScheme? -GitVersion.Configuration.IGitVersionConfiguration.AssemblyInformationalFormat.get -> string? -GitVersion.Configuration.IGitVersionConfiguration.AssemblyVersioningFormat.get -> string? -GitVersion.Configuration.IGitVersionConfiguration.AssemblyVersioningScheme.get -> GitVersion.Configuration.AssemblyVersioningScheme? -GitVersion.Configuration.IGitVersionConfiguration.Branches.get -> System.Collections.Generic.IReadOnlyDictionary! -GitVersion.Configuration.IGitVersionConfiguration.CommitDateFormat.get -> string? -GitVersion.Configuration.IGitVersionConfiguration.GetEmptyBranchConfiguration() -> GitVersion.Configuration.IBranchConfiguration! -GitVersion.Configuration.IGitVersionConfiguration.Ignore.get -> GitVersion.Configuration.IIgnoreConfiguration! -GitVersion.Configuration.IGitVersionConfiguration.TagPreReleaseWeight.get -> int? -GitVersion.Configuration.IGitVersionConfiguration.TagPrefix.get -> string? -GitVersion.Configuration.IGitVersionConfiguration.MajorVersionBumpMessage.get -> string? -GitVersion.Configuration.IGitVersionConfiguration.MergeMessageFormats.get -> System.Collections.Generic.IReadOnlyDictionary! -GitVersion.Configuration.IGitVersionConfiguration.MinorVersionBumpMessage.get -> string? -GitVersion.Configuration.IGitVersionConfiguration.NextVersion.get -> string? -GitVersion.Configuration.IGitVersionConfiguration.NoBumpMessage.get -> string? -GitVersion.Configuration.IGitVersionConfiguration.PatchVersionBumpMessage.get -> string? -GitVersion.Configuration.IGitVersionConfiguration.SemanticVersionFormat.get -> GitVersion.SemanticVersionFormat -GitVersion.Configuration.IGitVersionConfiguration.UpdateBuildNumber.get -> bool -GitVersion.Configuration.IGitVersionConfiguration.VersionInBranchPattern.get -> string? -GitVersion.Configuration.IGitVersionConfiguration.VersionInBranchRegex.get -> System.Text.RegularExpressions.Regex! -GitVersion.Configuration.IGitVersionConfiguration.VersionStrategy.get -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.Configuration.IGitVersionConfiguration.Workflow.get -> string? -GitVersion.Configuration.IIgnoreConfiguration -GitVersion.Configuration.IIgnoreConfiguration.Before.get -> System.DateTimeOffset? -GitVersion.Configuration.IIgnoreConfiguration.IsEmpty.get -> bool -GitVersion.Configuration.IIgnoreConfiguration.Shas.get -> System.Collections.Generic.IReadOnlySet! -GitVersion.Configuration.IPreventIncrementConfiguration -GitVersion.Configuration.IPreventIncrementConfiguration.OfMergedBranch.get -> bool? -GitVersion.Configuration.IPreventIncrementConfiguration.WhenBranchMerged.get -> bool? -GitVersion.Configuration.IPreventIncrementConfiguration.WhenCurrentCommitTagged.get -> bool? -GitVersion.Configuration.ReferenceNameExtensions -GitVersion.ConfigurationInfo -GitVersion.ConfigurationInfo.ConfigurationFile -> string? -GitVersion.ConfigurationInfo.OverrideConfiguration -> System.Collections.Generic.IReadOnlyDictionary? -GitVersion.ConfigurationInfo.ShowConfiguration -> bool -GitVersion.Extensions.AssemblyVersionsGeneratorExtensions -GitVersion.Extensions.CommonExtensions -GitVersion.Extensions.DictionaryExtensions -GitVersion.Extensions.EnumerableExtensions -GitVersion.Extensions.GitExtensions -GitVersion.Extensions.IncrementStrategyExtensions -GitVersion.Extensions.ReadEmbeddedResourceExtensions -GitVersion.Extensions.ServiceCollectionExtensions -GitVersion.Extensions.StringExtensions -GitVersion.FileWriteInfo -GitVersion.FileWriteInfo.FileExtension.get -> string! -GitVersion.FileWriteInfo.FileExtension.init -> void -GitVersion.FileWriteInfo.FileName.get -> string! -GitVersion.FileWriteInfo.FileName.init -> void -GitVersion.FileWriteInfo.FileWriteInfo(string! WorkingDirectory, string! FileName, string! FileExtension) -> void -GitVersion.FileWriteInfo.WorkingDirectory.get -> string! -GitVersion.FileWriteInfo.WorkingDirectory.init -> void -GitVersion.Git.AuthenticationInfo -GitVersion.Git.AuthenticationInfo.Password.get -> string? -GitVersion.Git.AuthenticationInfo.Password.set -> void -GitVersion.Git.AuthenticationInfo.Token.get -> string? -GitVersion.Git.AuthenticationInfo.Token.set -> void -GitVersion.Git.AuthenticationInfo.Username.get -> string? -GitVersion.Git.AuthenticationInfo.Username.set -> void -GitVersion.Git.BranchCommit -GitVersion.Git.BranchCommit.Branch.get -> GitVersion.Git.IBranch! -GitVersion.Git.BranchCommit.BranchCommit() -> void -GitVersion.Git.BranchCommit.BranchCommit(GitVersion.Git.ICommit! commit, GitVersion.Git.IBranch! branch) -> void -GitVersion.Git.BranchCommit.Commit.get -> GitVersion.Git.ICommit! -GitVersion.Git.BranchCommit.Equals(GitVersion.Git.BranchCommit? other) -> bool -GitVersion.Git.CommitExtensions -GitVersion.Git.CommitFilter -GitVersion.Git.CommitFilter.ExcludeReachableFrom.get -> object? -GitVersion.Git.CommitFilter.ExcludeReachableFrom.init -> void -GitVersion.Git.CommitFilter.FirstParentOnly.get -> bool -GitVersion.Git.CommitFilter.FirstParentOnly.init -> void -GitVersion.Git.CommitFilter.IncludeReachableFrom.get -> object? -GitVersion.Git.CommitFilter.IncludeReachableFrom.init -> void -GitVersion.Git.CommitFilter.SortBy.get -> GitVersion.Git.CommitSortStrategies -GitVersion.Git.CommitFilter.SortBy.init -> void -GitVersion.Git.CommitSortStrategies -GitVersion.Git.CommitSortStrategies.None = 0 -> GitVersion.Git.CommitSortStrategies -GitVersion.Git.CommitSortStrategies.Reverse = 4 -> GitVersion.Git.CommitSortStrategies -GitVersion.Git.CommitSortStrategies.Time = 2 -> GitVersion.Git.CommitSortStrategies -GitVersion.Git.CommitSortStrategies.Topological = 1 -> GitVersion.Git.CommitSortStrategies -GitVersion.Git.IBranch -GitVersion.Git.IBranch.Commits.get -> GitVersion.Git.ICommitCollection! -GitVersion.Git.IBranch.IsDetachedHead.get -> bool -GitVersion.Git.IBranch.IsRemote.get -> bool -GitVersion.Git.IBranch.IsTracking.get -> bool -GitVersion.Git.IBranch.Tip.get -> GitVersion.Git.ICommit? -GitVersion.Git.IBranchCollection -GitVersion.Git.IBranchCollection.ExcludeBranches(System.Collections.Generic.IEnumerable! branchesToExclude) -> System.Collections.Generic.IEnumerable! -GitVersion.Git.IBranchCollection.this[string! name].get -> GitVersion.Git.IBranch? -GitVersion.Git.IBranchCollection.UpdateTrackedBranch(GitVersion.Git.IBranch! branch, string! remoteTrackingReferenceName) -> void -GitVersion.Git.ICommit -GitVersion.Git.ICommit.Message.get -> string! -GitVersion.Git.ICommit.Parents.get -> System.Collections.Generic.IReadOnlyList! -GitVersion.Git.ICommit.When.get -> System.DateTimeOffset -GitVersion.Git.ICommitCollection -GitVersion.Git.ICommitCollection.GetCommitsPriorTo(System.DateTimeOffset olderThan) -> System.Collections.Generic.IEnumerable! -GitVersion.Git.ICommitCollection.QueryBy(GitVersion.Git.CommitFilter! commitFilter) -> System.Collections.Generic.IEnumerable! -GitVersion.Git.IGitObject -GitVersion.Git.IGitObject.Id.get -> GitVersion.Git.IObjectId! -GitVersion.Git.IGitObject.Sha.get -> string! -GitVersion.Git.IGitRepository -GitVersion.Git.IGitRepository.Branches.get -> GitVersion.Git.IBranchCollection! -GitVersion.Git.IGitRepository.Commits.get -> GitVersion.Git.ICommitCollection! -GitVersion.Git.IGitRepository.DiscoverRepository(string? gitDirectory) -> void -GitVersion.Git.IGitRepository.FindMergeBase(GitVersion.Git.ICommit! commit, GitVersion.Git.ICommit! otherCommit) -> GitVersion.Git.ICommit? -GitVersion.Git.IGitRepository.GetNumberOfUncommittedChanges() -> int -GitVersion.Git.IGitRepository.Head.get -> GitVersion.Git.IBranch! -GitVersion.Git.IGitRepository.IsHeadDetached.get -> bool -GitVersion.Git.IGitRepository.IsShallow.get -> bool -GitVersion.Git.IGitRepository.Path.get -> string! -GitVersion.Git.IGitRepository.Refs.get -> GitVersion.Git.IReferenceCollection! -GitVersion.Git.IGitRepository.Remotes.get -> GitVersion.Git.IRemoteCollection! -GitVersion.Git.IGitRepository.Tags.get -> GitVersion.Git.ITagCollection! -GitVersion.Git.IGitRepository.WorkingDirectory.get -> string! -GitVersion.Git.IGitRepositoryInfo -GitVersion.Git.IGitRepositoryInfo.DotGitDirectory.get -> string? -GitVersion.Git.IGitRepositoryInfo.DynamicGitRepositoryPath.get -> string? -GitVersion.Git.IGitRepositoryInfo.GitRootPath.get -> string? -GitVersion.Git.IGitRepositoryInfo.ProjectRootDirectory.get -> string? -GitVersion.Git.IMutatingGitRepository -GitVersion.Git.IMutatingGitRepository.Checkout(string! commitOrBranchSpec) -> void -GitVersion.Git.IMutatingGitRepository.Clone(string? sourceUrl, string? workdirPath, GitVersion.Git.AuthenticationInfo! auth) -> void -GitVersion.Git.IMutatingGitRepository.CreateBranchForPullRequestBranch(GitVersion.Git.AuthenticationInfo! auth) -> void -GitVersion.Git.IMutatingGitRepository.Fetch(string! remote, System.Collections.Generic.IEnumerable! refSpecs, GitVersion.Git.AuthenticationInfo! auth, string? logMessage) -> void -GitVersion.Git.INamedReference -GitVersion.Git.INamedReference.Name.get -> GitVersion.Git.ReferenceName! -GitVersion.Git.IObjectId -GitVersion.Git.IObjectId.Sha.get -> string! -GitVersion.Git.IObjectId.ToString(int prefixLength) -> string! -GitVersion.Git.IReference -GitVersion.Git.IReference.ReferenceTargetId.get -> GitVersion.Git.IObjectId? -GitVersion.Git.IReference.TargetIdentifier.get -> string! -GitVersion.Git.IReferenceCollection -GitVersion.Git.IReferenceCollection.Add(string! name, string! canonicalRefNameOrObject, bool allowOverwrite = false) -> void -GitVersion.Git.IReferenceCollection.FromGlob(string! prefix) -> System.Collections.Generic.IEnumerable! -GitVersion.Git.IReferenceCollection.Head.get -> GitVersion.Git.IReference? -GitVersion.Git.IReferenceCollection.this[GitVersion.Git.ReferenceName! referenceName].get -> GitVersion.Git.IReference? -GitVersion.Git.IReferenceCollection.this[string! name].get -> GitVersion.Git.IReference? -GitVersion.Git.IReferenceCollection.UpdateTarget(GitVersion.Git.IReference! directRef, GitVersion.Git.IObjectId! targetId) -> void -GitVersion.Git.IRefSpec -GitVersion.Git.IRefSpec.Destination.get -> string! -GitVersion.Git.IRefSpec.Direction.get -> GitVersion.Git.RefSpecDirection -GitVersion.Git.IRefSpec.Source.get -> string! -GitVersion.Git.IRefSpec.Specification.get -> string! -GitVersion.Git.IRefSpecCollection -GitVersion.Git.IRemote -GitVersion.Git.IRemote.FetchRefSpecs.get -> System.Collections.Generic.IEnumerable! -GitVersion.Git.IRemote.Name.get -> string! -GitVersion.Git.IRemote.PushRefSpecs.get -> System.Collections.Generic.IEnumerable! -GitVersion.Git.IRemote.RefSpecs.get -> System.Collections.Generic.IEnumerable! -GitVersion.Git.IRemote.Url.get -> string! -GitVersion.Git.IRemoteCollection -GitVersion.Git.IRemoteCollection.Remove(string! remoteName) -> void -GitVersion.Git.IRemoteCollection.this[string! name].get -> GitVersion.Git.IRemote? -GitVersion.Git.IRemoteCollection.Update(string! remoteName, string! refSpec) -> void -GitVersion.Git.ITag -GitVersion.Git.ITag.Commit.get -> GitVersion.Git.ICommit! -GitVersion.Git.ITag.TargetSha.get -> string! -GitVersion.Git.ITagCollection -GitVersion.Git.ReferenceName -GitVersion.Git.ReferenceName.Canonical.get -> string! -GitVersion.Git.ReferenceName.CompareTo(GitVersion.Git.ReferenceName? other) -> int -GitVersion.Git.ReferenceName.Equals(GitVersion.Git.ReferenceName? other) -> bool -GitVersion.Git.ReferenceName.EquivalentTo(string? name) -> bool -GitVersion.Git.ReferenceName.Friendly.get -> string! -GitVersion.Git.ReferenceName.IsLocalBranch.get -> bool -GitVersion.Git.ReferenceName.IsPullRequest.get -> bool -GitVersion.Git.ReferenceName.IsRemoteBranch.get -> bool -GitVersion.Git.ReferenceName.IsTag.get -> bool -GitVersion.Git.ReferenceName.ReferenceName(string! canonical) -> void -GitVersion.Git.ReferenceName.TryGetSemanticVersion(out (GitVersion.SemanticVersion! Value, string? Name) result, System.Text.RegularExpressions.Regex! versionPatternRegex, string? tagPrefix, GitVersion.SemanticVersionFormat format) -> bool -GitVersion.Git.ReferenceName.WithoutOrigin.get -> string! -GitVersion.Git.RefSpecDirection -GitVersion.Git.RefSpecDirection.Fetch = 0 -> GitVersion.Git.RefSpecDirection -GitVersion.Git.RefSpecDirection.Push = 1 -> GitVersion.Git.RefSpecDirection -GitVersion.GitVersionCommonModule -GitVersion.GitVersionCommonModule.GitVersionCommonModule() -> void -GitVersion.GitVersionCommonModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void -GitVersion.GitVersionContext -GitVersion.GitVersionContext.Configuration.get -> GitVersion.Configuration.IGitVersionConfiguration! -GitVersion.GitVersionContext.CurrentBranch.get -> GitVersion.Git.IBranch! -GitVersion.GitVersionContext.CurrentBranchCommits.get -> System.Collections.Generic.IEnumerable! -GitVersion.GitVersionContext.CurrentCommit.get -> GitVersion.Git.ICommit! -GitVersion.GitVersionContext.GitVersionContext(GitVersion.Git.IBranch! currentBranch, GitVersion.Git.ICommit! currentCommit, GitVersion.Configuration.IGitVersionConfiguration! configuration, bool isCurrentCommitTagged, int numberOfUncommittedChanges) -> void -GitVersion.GitVersionContext.IsCurrentCommitTagged.get -> bool -GitVersion.GitVersionContext.NumberOfUncommittedChanges.get -> int -GitVersion.GitVersionCoreModule -GitVersion.GitVersionCoreModule.GitVersionCoreModule() -> void -GitVersion.GitVersionCoreModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void -GitVersion.GitVersionException -GitVersion.GitVersionException.GitVersionException() -> void -GitVersion.GitVersionException.GitVersionException(string! message) -> void -GitVersion.GitVersionException.GitVersionException(string! message, System.Exception! innerException) -> void -GitVersion.GitVersionException.GitVersionException(string! messageFormat, params object![]! args) -> void -GitVersion.GitVersionOptions -GitVersion.GitVersionOptions.AssemblySettingsInfo.get -> GitVersion.AssemblySettingsInfo! -GitVersion.GitVersionOptions.AuthenticationInfo.get -> GitVersion.Git.AuthenticationInfo! -GitVersion.GitVersionOptions.ConfigurationInfo.get -> GitVersion.ConfigurationInfo! -GitVersion.GitVersionOptions.Diag -> bool -GitVersion.GitVersionOptions.Format -> string? -GitVersion.GitVersionOptions.GitVersionOptions() -> void -GitVersion.GitVersionOptions.IsHelp -> bool -GitVersion.GitVersionOptions.IsVersion -> bool -GitVersion.GitVersionOptions.LogFilePath -> string? -GitVersion.GitVersionOptions.Output -> System.Collections.Generic.ISet! -GitVersion.GitVersionOptions.OutputFile -> string? -GitVersion.GitVersionOptions.RepositoryInfo.get -> GitVersion.RepositoryInfo! -GitVersion.GitVersionOptions.Settings.get -> GitVersion.Settings! -GitVersion.GitVersionOptions.ShowVariable -> string? -GitVersion.GitVersionOptions.Verbosity -> GitVersion.Logging.Verbosity -GitVersion.GitVersionOptions.WixInfo.get -> GitVersion.WixInfo! -GitVersion.GitVersionOptions.WorkingDirectory.get -> string! -GitVersion.GitVersionOptions.WorkingDirectory.set -> void -GitVersion.Helpers.Disposable -GitVersion.Helpers.EncodingHelper -GitVersion.Helpers.IDisposable -GitVersion.Helpers.IDisposable.Value.get -> T -GitVersion.Helpers.LambdaEqualityHelper -GitVersion.Helpers.LambdaEqualityHelper.Equals(T? instance, T? other) -> bool -GitVersion.Helpers.LambdaEqualityHelper.GetHashCode(T instance) -> int -GitVersion.Helpers.LambdaEqualityHelper.LambdaEqualityHelper(params System.Func![]! equalityContributorAccessors) -> void -GitVersion.Helpers.LambdaKeyComparer -GitVersion.Helpers.LambdaKeyComparer.LambdaKeyComparer(System.Func! keySelector, System.Collections.Generic.IComparer? innerComparer = null) -> void -GitVersion.Helpers.RetryAction -GitVersion.Helpers.RetryAction.Execute(System.Func! operation) -> Result -GitVersion.Helpers.RetryAction.RetryAction(int maxRetries = 5) -> void -GitVersion.Helpers.RetryAction -GitVersion.Helpers.RetryAction.Execute(System.Action! operation) -> void -GitVersion.Helpers.RetryAction.RetryAction(int maxRetries = 5) -> void -GitVersion.Helpers.ServiceMessageEscapeHelper -GitVersion.IConverterContext -GitVersion.IConverterContext.WorkingDirectory.get -> string! -GitVersion.IEnvironment -GitVersion.IEnvironment.GetEnvironmentVariable(string! variableName) -> string? -GitVersion.IEnvironment.SetEnvironmentVariable(string! variableName, string? value) -> void -GitVersion.IFileSystem -GitVersion.IFileSystem.Copy(string! from, string! to, bool overwrite) -> void -GitVersion.IFileSystem.CreateDirectory(string! path) -> void -GitVersion.IFileSystem.Delete(string! path) -> void -GitVersion.IFileSystem.DirectoryEnumerateFiles(string? directory, string! searchPattern, System.IO.SearchOption searchOption) -> System.Collections.Generic.IEnumerable! -GitVersion.IFileSystem.DirectoryExists(string! path) -> bool -GitVersion.IFileSystem.Exists(string! file) -> bool -GitVersion.IFileSystem.GetLastDirectoryWrite(string! path) -> long -GitVersion.IFileSystem.Move(string! from, string! to) -> void -GitVersion.IFileSystem.OpenRead(string! path) -> System.IO.Stream! -GitVersion.IFileSystem.OpenWrite(string! path) -> System.IO.Stream! -GitVersion.IFileSystem.ReadAllText(string! path) -> string! -GitVersion.IFileSystem.WriteAllText(string? file, string! fileContents) -> void -GitVersion.IFileSystem.WriteAllText(string? file, string! fileContents, System.Text.Encoding! encoding) -> void -GitVersion.IGitPreparer -GitVersion.IGitPreparer.EnsureLocalBranchExistsForCurrentBranch(GitVersion.Git.IRemote! remote, string! currentBranch) -> void -GitVersion.IGitPreparer.Prepare() -> void -GitVersion.IGitVersionCalculateTool -GitVersion.IGitVersionCalculateTool.CalculateVersionVariables() -> GitVersion.OutputVariables.GitVersionVariables! -GitVersion.IGitVersionContextFactory -GitVersion.IGitVersionContextFactory.Create(GitVersion.GitVersionOptions! gitVersionOptions) -> GitVersion.GitVersionContext! -GitVersion.IGitVersionModule -GitVersion.IGitVersionModule.FindAllDerivedTypes(System.Reflection.Assembly? assembly) -> System.Collections.Generic.IEnumerable! -GitVersion.IGitVersionModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void -GitVersion.IVersionConverter -GitVersion.IVersionConverter.Execute(GitVersion.OutputVariables.GitVersionVariables! variables, T context) -> void -GitVersion.IncrementStrategy -GitVersion.IncrementStrategy.Inherit = 4 -> GitVersion.IncrementStrategy -GitVersion.IncrementStrategy.Major = 1 -> GitVersion.IncrementStrategy -GitVersion.IncrementStrategy.Minor = 2 -> GitVersion.IncrementStrategy -GitVersion.IncrementStrategy.None = 0 -> GitVersion.IncrementStrategy -GitVersion.IncrementStrategy.Patch = 3 -> GitVersion.IncrementStrategy -GitVersion.LockedFileException -GitVersion.LockedFileException.LockedFileException() -> void -GitVersion.LockedFileException.LockedFileException(System.Exception! inner) -> void -GitVersion.LockedFileException.LockedFileException(string? message) -> void -GitVersion.LockedFileException.LockedFileException(string? message, System.Exception? innerException) -> void -GitVersion.Logging.IConsole -GitVersion.Logging.IConsole.ReadLine() -> string? -GitVersion.Logging.IConsole.UseColor(System.ConsoleColor consoleColor) -> System.IDisposable! -GitVersion.Logging.IConsole.Write(string? msg) -> void -GitVersion.Logging.IConsole.WriteLine() -> void -GitVersion.Logging.IConsole.WriteLine(string? msg) -> void -GitVersion.Logging.ILog -GitVersion.Logging.ILog.AddLogAppender(GitVersion.Logging.ILogAppender! logAppender) -> void -GitVersion.Logging.ILog.IndentLog(string! operationDescription) -> System.IDisposable! -GitVersion.Logging.ILog.Separator() -> void -GitVersion.Logging.ILog.Verbosity.get -> GitVersion.Logging.Verbosity -GitVersion.Logging.ILog.Verbosity.set -> void -GitVersion.Logging.ILog.Write(GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogLevel level, string! format, params object![]! args) -> void -GitVersion.Logging.ILogAppender -GitVersion.Logging.ILogAppender.WriteTo(GitVersion.Logging.LogLevel level, string! message) -> void -GitVersion.Logging.LogAction -GitVersion.Logging.LogActionEntry -GitVersion.Logging.LogExtensions -GitVersion.Logging.LogLevel -GitVersion.Logging.LogLevel.Debug = 5 -> GitVersion.Logging.LogLevel -GitVersion.Logging.LogLevel.Error = 1 -> GitVersion.Logging.LogLevel -GitVersion.Logging.LogLevel.Fatal = 0 -> GitVersion.Logging.LogLevel -GitVersion.Logging.LogLevel.Info = 3 -> GitVersion.Logging.LogLevel -GitVersion.Logging.LogLevel.Verbose = 4 -> GitVersion.Logging.LogLevel -GitVersion.Logging.LogLevel.Warn = 2 -> GitVersion.Logging.LogLevel -GitVersion.Logging.Verbosity -GitVersion.Logging.Verbosity.Diagnostic = 4 -> GitVersion.Logging.Verbosity -GitVersion.Logging.Verbosity.Minimal = 1 -> GitVersion.Logging.Verbosity -GitVersion.Logging.Verbosity.Normal = 2 -> GitVersion.Logging.Verbosity -GitVersion.Logging.Verbosity.Quiet = 0 -> GitVersion.Logging.Verbosity -GitVersion.Logging.Verbosity.Verbose = 3 -> GitVersion.Logging.Verbosity -GitVersion.MergeMessage -GitVersion.MergeMessage.FormatName.get -> string? -GitVersion.MergeMessage.IsMergedPullRequest.get -> bool -GitVersion.MergeMessage.MergedBranch.get -> GitVersion.Git.ReferenceName? -GitVersion.MergeMessage.MergeMessage(string! mergeMessage, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> void -GitVersion.MergeMessage.PullRequestNumber.get -> int? -GitVersion.MergeMessage.TargetBranch.get -> string? -GitVersion.MergeMessage.Version.get -> GitVersion.SemanticVersion? -GitVersion.OutputType -GitVersion.OutputType.BuildServer = 0 -> GitVersion.OutputType -GitVersion.OutputType.File = 2 -> GitVersion.OutputType -GitVersion.OutputType.Json = 1 -> GitVersion.OutputType -GitVersion.OutputVariables.GitVersionVariables -GitVersion.OutputVariables.GitVersionVariables.AssemblySemFileVer.get -> string? -GitVersion.OutputVariables.GitVersionVariables.AssemblySemFileVer.init -> void -GitVersion.OutputVariables.GitVersionVariables.AssemblySemVer.get -> string? -GitVersion.OutputVariables.GitVersionVariables.AssemblySemVer.init -> void -GitVersion.OutputVariables.GitVersionVariables.BranchName.get -> string? -GitVersion.OutputVariables.GitVersionVariables.BranchName.init -> void -GitVersion.OutputVariables.GitVersionVariables.BuildMetaData.get -> string? -GitVersion.OutputVariables.GitVersionVariables.BuildMetaData.init -> void -GitVersion.OutputVariables.GitVersionVariables.CommitDate.get -> string? -GitVersion.OutputVariables.GitVersionVariables.CommitDate.init -> void -GitVersion.OutputVariables.GitVersionVariables.CommitsSinceVersionSource.get -> string? -GitVersion.OutputVariables.GitVersionVariables.CommitsSinceVersionSource.init -> void -GitVersion.OutputVariables.GitVersionVariables.EscapedBranchName.get -> string? -GitVersion.OutputVariables.GitVersionVariables.EscapedBranchName.init -> void -GitVersion.OutputVariables.GitVersionVariables.FullBuildMetaData.get -> string? -GitVersion.OutputVariables.GitVersionVariables.FullBuildMetaData.init -> void -GitVersion.OutputVariables.GitVersionVariables.FullSemVer.get -> string! -GitVersion.OutputVariables.GitVersionVariables.FullSemVer.init -> void -GitVersion.OutputVariables.GitVersionVariables.GetEnumerator() -> System.Collections.Generic.IEnumerator>! -GitVersion.OutputVariables.GitVersionVariables.GitVersionVariables(string! Major, string! Minor, string! Patch, string? BuildMetaData, string? FullBuildMetaData, string? BranchName, string? EscapedBranchName, string? Sha, string? ShortSha, string! MajorMinorPatch, string! SemVer, string! FullSemVer, string? AssemblySemVer, string? AssemblySemFileVer, string? PreReleaseTag, string? PreReleaseTagWithDash, string? PreReleaseLabel, string? PreReleaseLabelWithDash, string? PreReleaseNumber, string! WeightedPreReleaseNumber, string? InformationalVersion, string? CommitDate, string? VersionSourceSha, string? CommitsSinceVersionSource, string? UncommittedChanges) -> void -GitVersion.OutputVariables.GitVersionVariables.InformationalVersion.get -> string? -GitVersion.OutputVariables.GitVersionVariables.InformationalVersion.init -> void -GitVersion.OutputVariables.GitVersionVariables.Major.get -> string! -GitVersion.OutputVariables.GitVersionVariables.Major.init -> void -GitVersion.OutputVariables.GitVersionVariables.MajorMinorPatch.get -> string! -GitVersion.OutputVariables.GitVersionVariables.MajorMinorPatch.init -> void -GitVersion.OutputVariables.GitVersionVariables.Minor.get -> string! -GitVersion.OutputVariables.GitVersionVariables.Minor.init -> void -GitVersion.OutputVariables.GitVersionVariables.Patch.get -> string! -GitVersion.OutputVariables.GitVersionVariables.Patch.init -> void -GitVersion.OutputVariables.GitVersionVariables.PreReleaseLabel.get -> string? -GitVersion.OutputVariables.GitVersionVariables.PreReleaseLabel.init -> void -GitVersion.OutputVariables.GitVersionVariables.PreReleaseLabelWithDash.get -> string? -GitVersion.OutputVariables.GitVersionVariables.PreReleaseLabelWithDash.init -> void -GitVersion.OutputVariables.GitVersionVariables.PreReleaseNumber.get -> string? -GitVersion.OutputVariables.GitVersionVariables.PreReleaseNumber.init -> void -GitVersion.OutputVariables.GitVersionVariables.PreReleaseTag.get -> string? -GitVersion.OutputVariables.GitVersionVariables.PreReleaseTag.init -> void -GitVersion.OutputVariables.GitVersionVariables.PreReleaseTagWithDash.get -> string? -GitVersion.OutputVariables.GitVersionVariables.PreReleaseTagWithDash.init -> void -GitVersion.OutputVariables.GitVersionVariables.SemVer.get -> string! -GitVersion.OutputVariables.GitVersionVariables.SemVer.init -> void -GitVersion.OutputVariables.GitVersionVariables.Sha.get -> string? -GitVersion.OutputVariables.GitVersionVariables.Sha.init -> void -GitVersion.OutputVariables.GitVersionVariables.ShortSha.get -> string? -GitVersion.OutputVariables.GitVersionVariables.ShortSha.init -> void -GitVersion.OutputVariables.GitVersionVariables.TryGetValue(string! variable, out string? variableValue) -> bool -GitVersion.OutputVariables.GitVersionVariables.UncommittedChanges.get -> string? -GitVersion.OutputVariables.GitVersionVariables.UncommittedChanges.init -> void -GitVersion.OutputVariables.GitVersionVariables.VersionSourceSha.get -> string? -GitVersion.OutputVariables.GitVersionVariables.VersionSourceSha.init -> void -GitVersion.OutputVariables.GitVersionVariables.WeightedPreReleaseNumber.get -> string! -GitVersion.OutputVariables.GitVersionVariables.WeightedPreReleaseNumber.init -> void -GitVersion.OutputVariables.IVersionVariableSerializer -GitVersion.OutputVariables.IVersionVariableSerializer.FromFile(string! filePath) -> GitVersion.OutputVariables.GitVersionVariables! -GitVersion.OutputVariables.IVersionVariableSerializer.FromJson(string! json) -> GitVersion.OutputVariables.GitVersionVariables! -GitVersion.OutputVariables.IVersionVariableSerializer.ToFile(GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables, string! filePath) -> void -GitVersion.OutputVariables.IVersionVariableSerializer.ToJson(GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables) -> string! -GitVersion.RepositoryInfo -GitVersion.RepositoryInfo.ClonePath -> string? -GitVersion.RepositoryInfo.CommitId -> string? -GitVersion.RepositoryInfo.TargetBranch -> string? -GitVersion.RepositoryInfo.TargetUrl -> string? -GitVersion.SemanticVersion -GitVersion.SemanticVersion.BuildMetaData.get -> GitVersion.SemanticVersionBuildMetaData! -GitVersion.SemanticVersion.BuildMetaData.init -> void -GitVersion.SemanticVersion.CompareTo(GitVersion.SemanticVersion? value) -> int -GitVersion.SemanticVersion.CompareTo(GitVersion.SemanticVersion? value, bool includePreRelease) -> int -GitVersion.SemanticVersion.Equals(GitVersion.SemanticVersion? obj) -> bool -GitVersion.SemanticVersion.Increment(GitVersion.VersionField increment, string? label, bool forceIncrement, params GitVersion.SemanticVersion?[]! alternativeSemanticVersions) -> GitVersion.SemanticVersion! -GitVersion.SemanticVersion.Increment(GitVersion.VersionField increment, string? label, GitVersion.SemanticVersion.IncrementMode mode, params GitVersion.SemanticVersion?[]! alternativeSemanticVersions) -> GitVersion.SemanticVersion! -GitVersion.SemanticVersion.Increment(GitVersion.VersionField increment, string? label, params GitVersion.SemanticVersion?[]! alternativeSemanticVersions) -> GitVersion.SemanticVersion! -GitVersion.SemanticVersion.IncrementMode -GitVersion.SemanticVersion.IncrementMode.EnsureIntegrity = 2 -> GitVersion.SemanticVersion.IncrementMode -GitVersion.SemanticVersion.IncrementMode.Force = 1 -> GitVersion.SemanticVersion.IncrementMode -GitVersion.SemanticVersion.IncrementMode.Standard = 0 -> GitVersion.SemanticVersion.IncrementMode -GitVersion.SemanticVersion.IsEmpty() -> bool -GitVersion.SemanticVersion.IsEqualTo(GitVersion.SemanticVersion? value, bool includePreRelease = true) -> bool -GitVersion.SemanticVersion.IsGreaterThan(GitVersion.SemanticVersion? value, bool includePreRelease = true) -> bool -GitVersion.SemanticVersion.IsGreaterThanOrEqualTo(GitVersion.SemanticVersion? value, bool includePreRelease = true) -> bool -GitVersion.SemanticVersion.IsLabeledWith(string! value) -> bool -GitVersion.SemanticVersion.IsLessThan(GitVersion.SemanticVersion? value, bool includePreRelease = true) -> bool -GitVersion.SemanticVersion.IsLessThanOrEqualTo(GitVersion.SemanticVersion? value, bool includePreRelease = true) -> bool -GitVersion.SemanticVersion.IsMatchForBranchSpecificLabel(string? value) -> bool -GitVersion.SemanticVersion.IsPreRelease.get -> bool -GitVersion.SemanticVersion.Major.get -> long -GitVersion.SemanticVersion.Major.init -> void -GitVersion.SemanticVersion.Minor.get -> long -GitVersion.SemanticVersion.Minor.init -> void -GitVersion.SemanticVersion.Patch.get -> long -GitVersion.SemanticVersion.Patch.init -> void -GitVersion.SemanticVersion.PreReleaseTag.get -> GitVersion.SemanticVersionPreReleaseTag! -GitVersion.SemanticVersion.PreReleaseTag.init -> void -GitVersion.SemanticVersion.SemanticVersion(GitVersion.SemanticVersion! semanticVersion) -> void -GitVersion.SemanticVersion.SemanticVersion(long major = 0, long minor = 0, long patch = 0) -> void -GitVersion.SemanticVersion.ToString(string! format) -> string! -GitVersion.SemanticVersion.ToString(string? format, System.IFormatProvider? formatProvider) -> string! -GitVersion.SemanticVersion.WithLabel(string? label) -> GitVersion.SemanticVersion! -GitVersion.SemanticVersionBuildMetaData -GitVersion.SemanticVersionBuildMetaData.Branch.get -> string? -GitVersion.SemanticVersionBuildMetaData.Branch.init -> void -GitVersion.SemanticVersionBuildMetaData.CommitDate.get -> System.DateTimeOffset? -GitVersion.SemanticVersionBuildMetaData.CommitDate.init -> void -GitVersion.SemanticVersionBuildMetaData.CommitsSinceTag.get -> long? -GitVersion.SemanticVersionBuildMetaData.CommitsSinceTag.init -> void -GitVersion.SemanticVersionBuildMetaData.CommitsSinceVersionSource.get -> long -GitVersion.SemanticVersionBuildMetaData.CommitsSinceVersionSource.init -> void -GitVersion.SemanticVersionBuildMetaData.Equals(GitVersion.SemanticVersionBuildMetaData? other) -> bool -GitVersion.SemanticVersionBuildMetaData.OtherMetaData.get -> string? -GitVersion.SemanticVersionBuildMetaData.OtherMetaData.init -> void -GitVersion.SemanticVersionBuildMetaData.SemanticVersionBuildMetaData() -> void -GitVersion.SemanticVersionBuildMetaData.SemanticVersionBuildMetaData(GitVersion.SemanticVersionBuildMetaData! buildMetaData) -> void -GitVersion.SemanticVersionBuildMetaData.SemanticVersionBuildMetaData(string? versionSourceSha, long? commitsSinceTag, string? branch, string? commitSha, string? commitShortSha, System.DateTimeOffset? commitDate, long numberOfUnCommittedChanges, string? otherMetadata = null) -> void -GitVersion.SemanticVersionBuildMetaData.Sha.get -> string? -GitVersion.SemanticVersionBuildMetaData.Sha.init -> void -GitVersion.SemanticVersionBuildMetaData.ShortSha.get -> string? -GitVersion.SemanticVersionBuildMetaData.ShortSha.init -> void -GitVersion.SemanticVersionBuildMetaData.ToString(string! format) -> string! -GitVersion.SemanticVersionBuildMetaData.ToString(string? format, System.IFormatProvider? formatProvider) -> string! -GitVersion.SemanticVersionBuildMetaData.UncommittedChanges.get -> long -GitVersion.SemanticVersionBuildMetaData.UncommittedChanges.init -> void -GitVersion.SemanticVersionBuildMetaData.VersionSourceSha.get -> string? -GitVersion.SemanticVersionBuildMetaData.VersionSourceSha.init -> void -GitVersion.SemanticVersionFormat -GitVersion.SemanticVersionFormat.Loose = 1 -> GitVersion.SemanticVersionFormat -GitVersion.SemanticVersionFormat.Strict = 0 -> GitVersion.SemanticVersionFormat -GitVersion.SemanticVersionFormatValues -GitVersion.SemanticVersionFormatValues.AssemblyFileSemVer.get -> string? -GitVersion.SemanticVersionFormatValues.AssemblySemVer.get -> string? -GitVersion.SemanticVersionFormatValues.BranchName.get -> string? -GitVersion.SemanticVersionFormatValues.BuildMetaData.get -> string! -GitVersion.SemanticVersionFormatValues.CommitDate.get -> string? -GitVersion.SemanticVersionFormatValues.CommitsSinceVersionSource.get -> string! -GitVersion.SemanticVersionFormatValues.EscapedBranchName.get -> string? -GitVersion.SemanticVersionFormatValues.FullBuildMetaData.get -> string! -GitVersion.SemanticVersionFormatValues.FullSemVer.get -> string! -GitVersion.SemanticVersionFormatValues.InformationalVersion.get -> string! -GitVersion.SemanticVersionFormatValues.Major.get -> string! -GitVersion.SemanticVersionFormatValues.MajorMinorPatch.get -> string! -GitVersion.SemanticVersionFormatValues.Minor.get -> string! -GitVersion.SemanticVersionFormatValues.Patch.get -> string! -GitVersion.SemanticVersionFormatValues.PreReleaseLabel.get -> string! -GitVersion.SemanticVersionFormatValues.PreReleaseLabelWithDash.get -> string! -GitVersion.SemanticVersionFormatValues.PreReleaseNumber.get -> string! -GitVersion.SemanticVersionFormatValues.PreReleaseTag.get -> string! -GitVersion.SemanticVersionFormatValues.PreReleaseTagWithDash.get -> string! -GitVersion.SemanticVersionFormatValues.SemanticVersionFormatValues(GitVersion.SemanticVersion! semver, GitVersion.Configuration.IGitVersionConfiguration! configuration, int preReleaseWeight) -> void -GitVersion.SemanticVersionFormatValues.SemVer.get -> string! -GitVersion.SemanticVersionFormatValues.Sha.get -> string? -GitVersion.SemanticVersionFormatValues.ShortSha.get -> string? -GitVersion.SemanticVersionFormatValues.UncommittedChanges.get -> string! -GitVersion.SemanticVersionFormatValues.VersionSourceSha.get -> string? -GitVersion.SemanticVersionFormatValues.WeightedPreReleaseNumber.get -> string! -GitVersion.SemanticVersionPreReleaseTag -GitVersion.SemanticVersionPreReleaseTag.CompareTo(GitVersion.SemanticVersionPreReleaseTag? other) -> int -GitVersion.SemanticVersionPreReleaseTag.Equals(GitVersion.SemanticVersionPreReleaseTag? other) -> bool -GitVersion.SemanticVersionPreReleaseTag.HasTag() -> bool -GitVersion.SemanticVersionPreReleaseTag.Name.get -> string! -GitVersion.SemanticVersionPreReleaseTag.Name.init -> void -GitVersion.SemanticVersionPreReleaseTag.Number.get -> long? -GitVersion.SemanticVersionPreReleaseTag.Number.init -> void -GitVersion.SemanticVersionPreReleaseTag.PromoteTagEvenIfNameIsEmpty.get -> bool -GitVersion.SemanticVersionPreReleaseTag.PromoteTagEvenIfNameIsEmpty.init -> void -GitVersion.SemanticVersionPreReleaseTag.SemanticVersionPreReleaseTag() -> void -GitVersion.SemanticVersionPreReleaseTag.SemanticVersionPreReleaseTag(GitVersion.SemanticVersionPreReleaseTag! preReleaseTag) -> void -GitVersion.SemanticVersionPreReleaseTag.SemanticVersionPreReleaseTag(string! name, long? number, bool promoteTagEvenIfNameIsEmpty) -> void -GitVersion.SemanticVersionPreReleaseTag.ToString(string! format) -> string! -GitVersion.SemanticVersionPreReleaseTag.ToString(string? format, System.IFormatProvider? formatProvider) -> string! -GitVersion.SemanticVersionWithTag -GitVersion.SemanticVersionWithTag.CompareTo(GitVersion.SemanticVersionWithTag? other) -> int -GitVersion.SemanticVersionWithTag.SemanticVersionWithTag(GitVersion.SemanticVersion! Value, GitVersion.Git.ITag! Tag) -> void -GitVersion.SemanticVersionWithTag.Tag.get -> GitVersion.Git.ITag! -GitVersion.SemanticVersionWithTag.Tag.init -> void -GitVersion.SemanticVersionWithTag.Value.get -> GitVersion.SemanticVersion! -GitVersion.SemanticVersionWithTag.Value.init -> void -GitVersion.Settings -GitVersion.Settings.NoCache -> bool -GitVersion.Settings.NoFetch -> bool -GitVersion.Settings.NoNormalize -> bool -GitVersion.Settings.OnlyTrackedBranches -> bool -GitVersion.VersionCalculation.BaseVersion -GitVersion.VersionCalculation.BaseVersion.BaseVersion() -> void -GitVersion.VersionCalculation.BaseVersion.BaseVersion(GitVersion.VersionCalculation.BaseVersionOperand! Operand) -> void -GitVersion.VersionCalculation.BaseVersion.BaseVersion(string! source, GitVersion.SemanticVersion! semanticVersion, GitVersion.Git.ICommit? baseVersionSource = null) -> void -GitVersion.VersionCalculation.BaseVersion.BaseVersionSource.get -> GitVersion.Git.ICommit? -GitVersion.VersionCalculation.BaseVersion.GetIncrementedVersion() -> GitVersion.SemanticVersion! -GitVersion.VersionCalculation.BaseVersion.Operand.get -> GitVersion.VersionCalculation.BaseVersionOperand! -GitVersion.VersionCalculation.BaseVersion.Operand.init -> void -GitVersion.VersionCalculation.BaseVersion.Operator.get -> GitVersion.VersionCalculation.BaseVersionOperator? -GitVersion.VersionCalculation.BaseVersion.Operator.init -> void -GitVersion.VersionCalculation.BaseVersion.SemanticVersion.get -> GitVersion.SemanticVersion! -GitVersion.VersionCalculation.BaseVersion.ShouldIncrement.get -> bool -GitVersion.VersionCalculation.BaseVersion.Source.get -> string! -GitVersion.VersionCalculation.BaseVersionOperand -GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionOperand() -> void -GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionOperand(string! Source, GitVersion.SemanticVersion! SemanticVersion, GitVersion.Git.ICommit? BaseVersionSource = null) -> void -GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionSource.get -> GitVersion.Git.ICommit? -GitVersion.VersionCalculation.BaseVersionOperand.BaseVersionSource.init -> void -GitVersion.VersionCalculation.BaseVersionOperand.SemanticVersion.get -> GitVersion.SemanticVersion! -GitVersion.VersionCalculation.BaseVersionOperand.SemanticVersion.init -> void -GitVersion.VersionCalculation.BaseVersionOperand.Source.get -> string! -GitVersion.VersionCalculation.BaseVersionOperand.Source.init -> void -GitVersion.VersionCalculation.BaseVersionOperator -GitVersion.VersionCalculation.BaseVersionOperator.AlternativeSemanticVersion.get -> GitVersion.SemanticVersion? -GitVersion.VersionCalculation.BaseVersionOperator.AlternativeSemanticVersion.init -> void -GitVersion.VersionCalculation.BaseVersionOperator.BaseVersionSource.get -> GitVersion.Git.ICommit? -GitVersion.VersionCalculation.BaseVersionOperator.BaseVersionSource.init -> void -GitVersion.VersionCalculation.BaseVersionOperator.ForceIncrement.get -> bool -GitVersion.VersionCalculation.BaseVersionOperator.ForceIncrement.init -> void -GitVersion.VersionCalculation.BaseVersionOperator.Increment.get -> GitVersion.VersionField -GitVersion.VersionCalculation.BaseVersionOperator.Increment.init -> void -GitVersion.VersionCalculation.BaseVersionOperator.Label.get -> string? -GitVersion.VersionCalculation.BaseVersionOperator.Label.init -> void -GitVersion.VersionCalculation.BaseVersionOperator.Source.get -> string! -GitVersion.VersionCalculation.BaseVersionOperator.Source.init -> void -GitVersion.VersionCalculation.Caching.GitVersionCacheKey -GitVersion.VersionCalculation.Caching.GitVersionCacheKey.GitVersionCacheKey(string! Value) -> void -GitVersion.VersionCalculation.Caching.GitVersionCacheKey.Value.get -> string! -GitVersion.VersionCalculation.Caching.GitVersionCacheKey.Value.init -> void -GitVersion.VersionCalculation.Caching.IGitVersionCacheProvider -GitVersion.VersionCalculation.Caching.IGitVersionCacheProvider.LoadVersionVariablesFromDiskCache() -> GitVersion.OutputVariables.GitVersionVariables? -GitVersion.VersionCalculation.Caching.IGitVersionCacheProvider.WriteVariablesToDiskCache(GitVersion.OutputVariables.GitVersionVariables! versionVariables) -> void -GitVersion.VersionCalculation.CommitMessageIncrementMode -GitVersion.VersionCalculation.CommitMessageIncrementMode.Disabled = 1 -> GitVersion.VersionCalculation.CommitMessageIncrementMode -GitVersion.VersionCalculation.CommitMessageIncrementMode.Enabled = 0 -> GitVersion.VersionCalculation.CommitMessageIncrementMode -GitVersion.VersionCalculation.CommitMessageIncrementMode.MergeMessageOnly = 2 -> GitVersion.VersionCalculation.CommitMessageIncrementMode -GitVersion.VersionCalculation.DeploymentMode -GitVersion.VersionCalculation.DeploymentMode.ContinuousDelivery = 1 -> GitVersion.VersionCalculation.DeploymentMode -GitVersion.VersionCalculation.DeploymentMode.ContinuousDeployment = 2 -> GitVersion.VersionCalculation.DeploymentMode -GitVersion.VersionCalculation.DeploymentMode.ManualDeployment = 0 -> GitVersion.VersionCalculation.DeploymentMode -GitVersion.VersionCalculation.IBaseVersion -GitVersion.VersionCalculation.IBaseVersion.SemanticVersion.get -> GitVersion.SemanticVersion! -GitVersion.VersionCalculation.IBaseVersionIncrement -GitVersion.VersionCalculation.IBaseVersionIncrement.BaseVersionSource.get -> GitVersion.Git.ICommit? -GitVersion.VersionCalculation.IBaseVersionIncrement.Source.get -> string! -GitVersion.VersionCalculation.IDeploymentModeCalculator -GitVersion.VersionCalculation.IDeploymentModeCalculator.Calculate(GitVersion.SemanticVersion! semanticVersion, GitVersion.Git.ICommit? baseVersionSource) -> GitVersion.SemanticVersion! -GitVersion.VersionCalculation.IEffectiveBranchConfigurationFinder -GitVersion.VersionCalculation.IEffectiveBranchConfigurationFinder.GetConfigurations(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> System.Collections.Generic.IEnumerable! -GitVersion.VersionCalculation.IIncrementStrategyFinder -GitVersion.VersionCalculation.IIncrementStrategyFinder.DetermineIncrementedField(GitVersion.Git.ICommit! currentCommit, GitVersion.Git.ICommit? baseVersionSource, bool shouldIncrement, GitVersion.Configuration.EffectiveConfiguration! configuration, string? label) -> GitVersion.VersionField -GitVersion.VersionCalculation.IIncrementStrategyFinder.GetIncrementForcedByCommit(GitVersion.Git.ICommit! commit, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> GitVersion.VersionField -GitVersion.VersionCalculation.IIncrementStrategyFinder.GetIncrementForCommits(string? majorVersionBumpMessage, string? minorVersionBumpMessage, string? patchVersionBumpMessage, string? noBumpMessage, GitVersion.Git.ICommit![]! commits) -> GitVersion.VersionField? -GitVersion.VersionCalculation.IIncrementStrategyFinder.GetMergedCommits(GitVersion.Git.ICommit! mergeCommit, int index, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> System.Collections.Generic.IEnumerable! -GitVersion.VersionCalculation.INextVersionCalculator -GitVersion.VersionCalculation.INextVersionCalculator.FindVersion() -> GitVersion.SemanticVersion! -GitVersion.VersionCalculation.IVariableProvider -GitVersion.VersionCalculation.IVariableProvider.GetVariablesFor(GitVersion.SemanticVersion! semanticVersion, GitVersion.Configuration.IGitVersionConfiguration! configuration, int preReleaseWeight) -> GitVersion.OutputVariables.GitVersionVariables! -GitVersion.VersionCalculation.IVersionFilter -GitVersion.VersionCalculation.IVersionFilter.Exclude(GitVersion.VersionCalculation.IBaseVersion! baseVersion, out string? reason) -> bool -GitVersion.VersionCalculation.IVersionStrategy -GitVersion.VersionCalculation.IVersionStrategy.GetBaseVersions(GitVersion.Configuration.EffectiveBranchConfiguration! configuration) -> System.Collections.Generic.IEnumerable! -GitVersion.VersionCalculation.NextVersion -GitVersion.VersionCalculation.NextVersion.BaseVersion.get -> GitVersion.VersionCalculation.IBaseVersion! -GitVersion.VersionCalculation.NextVersion.BranchConfiguration.get -> GitVersion.Configuration.EffectiveBranchConfiguration! -GitVersion.VersionCalculation.NextVersion.CompareTo(GitVersion.VersionCalculation.NextVersion? other) -> int -GitVersion.VersionCalculation.NextVersion.Configuration.get -> GitVersion.Configuration.EffectiveConfiguration! -GitVersion.VersionCalculation.NextVersion.Equals(GitVersion.VersionCalculation.NextVersion? other) -> bool -GitVersion.VersionCalculation.NextVersion.IncrementedVersion.get -> GitVersion.SemanticVersion! -GitVersion.VersionCalculation.NextVersion.NextVersion(GitVersion.SemanticVersion! incrementedVersion, GitVersion.VersionCalculation.IBaseVersion! baseVersion, GitVersion.Configuration.EffectiveBranchConfiguration! configuration) -> void -GitVersion.VersionCalculation.VersionCalculationModule -GitVersion.VersionCalculation.VersionCalculationModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void -GitVersion.VersionCalculation.VersionCalculationModule.VersionCalculationModule() -> void -GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategies.ConfiguredNextVersion = 2 -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategies.Fallback = 1 -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategies.Mainline = 64 -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategies.MergeMessage = 4 -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategies.None = 0 -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategies.TaggedCommit = 8 -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategies.TrackReleaseBranches = 16 -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategies.VersionInBranchName = 32 -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategyModule -GitVersion.VersionCalculation.VersionStrategyModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void -GitVersion.VersionCalculation.VersionStrategyModule.VersionStrategyModule() -> void -GitVersion.VersionField -GitVersion.VersionField.Major = 3 -> GitVersion.VersionField -GitVersion.VersionField.Minor = 2 -> GitVersion.VersionField -GitVersion.VersionField.None = 0 -> GitVersion.VersionField -GitVersion.VersionField.Patch = 1 -> GitVersion.VersionField -GitVersion.WarningException -GitVersion.WarningException.WarningException() -> void -GitVersion.WarningException.WarningException(string! message) -> void -GitVersion.WarningException.WarningException(string? message, System.Exception? innerException) -> void -GitVersion.WixInfo -GitVersion.WixInfo.UpdateWixVersionFile -> bool -override GitVersion.Git.BranchCommit.Equals(object? obj) -> bool -override GitVersion.Git.BranchCommit.GetHashCode() -> int -override GitVersion.Git.ReferenceName.Equals(object? obj) -> bool -override GitVersion.Git.ReferenceName.GetHashCode() -> int -override GitVersion.Git.ReferenceName.ToString() -> string! -override GitVersion.Helpers.LambdaKeyComparer.Compare(TSource? x, TSource? y) -> int -override GitVersion.SemanticVersion.Equals(object? obj) -> bool -override GitVersion.SemanticVersion.GetHashCode() -> int -override GitVersion.SemanticVersion.ToString() -> string! -override GitVersion.SemanticVersionBuildMetaData.Equals(object? obj) -> bool -override GitVersion.SemanticVersionBuildMetaData.GetHashCode() -> int -override GitVersion.SemanticVersionBuildMetaData.ToString() -> string! -override GitVersion.SemanticVersionPreReleaseTag.Equals(object? obj) -> bool -override GitVersion.SemanticVersionPreReleaseTag.GetHashCode() -> int -override GitVersion.SemanticVersionPreReleaseTag.ToString() -> string! -override GitVersion.SemanticVersionWithTag.ToString() -> string! -override GitVersion.VersionCalculation.BaseVersion.ToString() -> string! -override GitVersion.VersionCalculation.BaseVersionOperand.ToString() -> string! -override GitVersion.VersionCalculation.BaseVersionOperator.ToString() -> string! -override GitVersion.VersionCalculation.NextVersion.Equals(object? other) -> bool -override GitVersion.VersionCalculation.NextVersion.GetHashCode() -> int -override GitVersion.VersionCalculation.NextVersion.ToString() -> string! -static GitVersion.Configuration.ReferenceNameExtensions.TryGetSemanticVersion(this GitVersion.Git.ReferenceName! source, out (GitVersion.SemanticVersion! Value, string? Name) result, GitVersion.Configuration.EffectiveConfiguration! configuration) -> bool -static GitVersion.Configuration.ReferenceNameExtensions.TryGetSemanticVersion(this GitVersion.Git.ReferenceName! source, out (GitVersion.SemanticVersion! Value, string? Name) result, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> bool -static GitVersion.Extensions.AssemblyVersionsGeneratorExtensions.GetAssemblyFileVersion(this GitVersion.SemanticVersion! sv, GitVersion.Configuration.AssemblyFileVersioningScheme scheme) -> string? -static GitVersion.Extensions.AssemblyVersionsGeneratorExtensions.GetAssemblyVersion(this GitVersion.SemanticVersion! sv, GitVersion.Configuration.AssemblyVersioningScheme scheme) -> string? -static GitVersion.Extensions.CommonExtensions.NotNull(this T? value, string! name = "") -> T! -static GitVersion.Extensions.CommonExtensions.NotNullOrEmpty(this string? value, string! name = "") -> string! -static GitVersion.Extensions.CommonExtensions.NotNullOrWhitespace(this string? value, string! name = "") -> string! -static GitVersion.Extensions.DictionaryExtensions.GetOrAdd(this System.Collections.Generic.IDictionary! dict, TKey key, System.Func! getValue) -> TValue -static GitVersion.Extensions.EnumerableExtensions.AddRange(this System.Collections.Generic.ICollection! source, System.Collections.Generic.IEnumerable! items) -> void -static GitVersion.Extensions.EnumerableExtensions.OnlyOrDefault(this System.Collections.Generic.IEnumerable! source) -> T? -static GitVersion.Extensions.EnumerableExtensions.SingleOfType(this System.Collections.IEnumerable! source) -> T -static GitVersion.Extensions.GitExtensions.CreateGitLogArgs(int? maxCommits) -> string! -static GitVersion.Extensions.GitExtensions.DumpGraph(string! workingDirectory, System.Action? writer = null, int? maxCommits = null) -> void -static GitVersion.Extensions.IncrementStrategyExtensions.ToVersionField(this GitVersion.IncrementStrategy strategy) -> GitVersion.VersionField -static GitVersion.Extensions.ReadEmbeddedResourceExtensions.ReadAsStringFromEmbeddedResource(this string! resourceName, System.Reflection.Assembly! assembly) -> string! -static GitVersion.Extensions.ReadEmbeddedResourceExtensions.ReadAsStringFromEmbeddedResource(this string! resourceName) -> string! -static GitVersion.Extensions.ServiceCollectionExtensions.AddModule(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection, GitVersion.IGitVersionModule! gitVersionModule) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -static GitVersion.Extensions.ServiceCollectionExtensions.GetServiceForType(this System.IServiceProvider! serviceProvider) -> TService -static GitVersion.Extensions.StringExtensions.AppendLineFormat(this System.Text.StringBuilder! stringBuilder, string! format, params object![]! args) -> void -static GitVersion.Extensions.StringExtensions.IsEmpty(this string? value) -> bool -static GitVersion.Extensions.StringExtensions.IsEquivalentTo(this string! self, string? other) -> bool -static GitVersion.Extensions.StringExtensions.IsNullOrEmpty(this string? value) -> bool -static GitVersion.Extensions.StringExtensions.IsNullOrWhiteSpace(this string? value) -> bool -static GitVersion.Extensions.StringExtensions.RegexReplace(this string! input, string! pattern, string! replace, System.Text.RegularExpressions.RegexOptions options = System.Text.RegularExpressions.RegexOptions.None) -> string! -static GitVersion.Extensions.StringExtensions.WithPrefixIfNotNullOrEmpty(this string! value, string! prefix) -> string! -static GitVersion.Git.BranchCommit.operator !=(GitVersion.Git.BranchCommit left, GitVersion.Git.BranchCommit right) -> bool -static GitVersion.Git.BranchCommit.operator ==(GitVersion.Git.BranchCommit left, GitVersion.Git.BranchCommit right) -> bool -static GitVersion.Git.CommitExtensions.IsMergeCommit(this GitVersion.Git.ICommit! source) -> bool -static GitVersion.Git.ReferenceName.FromBranchName(string! branchName) -> GitVersion.Git.ReferenceName! -static GitVersion.Git.ReferenceName.operator !=(GitVersion.Git.ReferenceName? left, GitVersion.Git.ReferenceName? right) -> bool -static GitVersion.Git.ReferenceName.operator ==(GitVersion.Git.ReferenceName? left, GitVersion.Git.ReferenceName? right) -> bool -static GitVersion.Git.ReferenceName.Parse(string! canonicalName) -> GitVersion.Git.ReferenceName! -static GitVersion.Git.ReferenceName.TryParse(out GitVersion.Git.ReferenceName? value, string! canonicalName) -> bool -static GitVersion.Helpers.Disposable.Create(System.Action! disposer) -> System.IDisposable! -static GitVersion.Helpers.Disposable.Create(T value, System.Action! disposer) -> GitVersion.Helpers.IDisposable! -static GitVersion.Helpers.EncodingHelper.DetectEncoding(System.Collections.Generic.IList! bytes) -> System.Text.Encoding? -static GitVersion.Helpers.EncodingHelper.DetectEncoding(string? filename) -> System.Text.Encoding? -static GitVersion.Helpers.ServiceMessageEscapeHelper.EscapeValue(string? value) -> string? -static GitVersion.Logging.LogExtensions.Debug(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogAction! logAction) -> void -static GitVersion.Logging.LogExtensions.Debug(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogAction! logAction) -> void -static GitVersion.Logging.LogExtensions.Debug(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, string! format, params object![]! args) -> void -static GitVersion.Logging.LogExtensions.Debug(this GitVersion.Logging.ILog! log, string! format, params object![]! args) -> void -static GitVersion.Logging.LogExtensions.DiagnosticVerbosity(this GitVersion.Logging.ILog! log) -> System.IDisposable! -static GitVersion.Logging.LogExtensions.Error(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogAction! logAction) -> void -static GitVersion.Logging.LogExtensions.Error(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogAction! logAction) -> void -static GitVersion.Logging.LogExtensions.Error(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, string! format, params object![]! args) -> void -static GitVersion.Logging.LogExtensions.Error(this GitVersion.Logging.ILog! log, string! format, params object![]! args) -> void -static GitVersion.Logging.LogExtensions.Info(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogAction! logAction) -> void -static GitVersion.Logging.LogExtensions.Info(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogAction! logAction) -> void -static GitVersion.Logging.LogExtensions.Info(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, string! format, params object![]! args) -> void -static GitVersion.Logging.LogExtensions.Info(this GitVersion.Logging.ILog! log, string! format, params object![]! args) -> void -static GitVersion.Logging.LogExtensions.MinimalVerbosity(this GitVersion.Logging.ILog! log) -> System.IDisposable! -static GitVersion.Logging.LogExtensions.NormalVerbosity(this GitVersion.Logging.ILog! log) -> System.IDisposable! -static GitVersion.Logging.LogExtensions.QuietVerbosity(this GitVersion.Logging.ILog! log) -> System.IDisposable! -static GitVersion.Logging.LogExtensions.Verbose(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogAction! logAction) -> void -static GitVersion.Logging.LogExtensions.Verbose(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogAction! logAction) -> void -static GitVersion.Logging.LogExtensions.Verbose(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, string! format, params object![]! args) -> void -static GitVersion.Logging.LogExtensions.Verbose(this GitVersion.Logging.ILog! log, string! format, params object![]! args) -> void -static GitVersion.Logging.LogExtensions.VerboseVerbosity(this GitVersion.Logging.ILog! log) -> System.IDisposable! -static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogAction! logAction) -> void -static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogAction! logAction) -> void -static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, string! format, params object![]! args) -> void -static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! log, string! format, params object![]! args) -> void -static GitVersion.MergeMessage.TryParse(GitVersion.Git.ICommit! mergeCommit, GitVersion.Configuration.IGitVersionConfiguration! configuration, out GitVersion.MergeMessage? mergeMessage) -> bool -static GitVersion.SemanticVersion.Parse(string! version, string? tagPrefixRegex, GitVersion.SemanticVersionFormat versionFormat = GitVersion.SemanticVersionFormat.Strict) -> GitVersion.SemanticVersion! -static GitVersion.SemanticVersion.operator !=(GitVersion.SemanticVersion? v1, GitVersion.SemanticVersion? v2) -> bool -static GitVersion.SemanticVersion.operator <(GitVersion.SemanticVersion! v1, GitVersion.SemanticVersion! v2) -> bool -static GitVersion.SemanticVersion.operator <=(GitVersion.SemanticVersion! v1, GitVersion.SemanticVersion! v2) -> bool -static GitVersion.SemanticVersion.operator ==(GitVersion.SemanticVersion? v1, GitVersion.SemanticVersion? v2) -> bool -static GitVersion.SemanticVersion.operator >(GitVersion.SemanticVersion! v1, GitVersion.SemanticVersion! v2) -> bool -static GitVersion.SemanticVersion.operator >=(GitVersion.SemanticVersion! v1, GitVersion.SemanticVersion! v2) -> bool -static GitVersion.SemanticVersion.TryParse(string! version, string? tagPrefixRegex, out GitVersion.SemanticVersion? semanticVersion, GitVersion.SemanticVersionFormat format = GitVersion.SemanticVersionFormat.Strict) -> bool -static GitVersion.SemanticVersionBuildMetaData.Parse(string? buildMetaData) -> GitVersion.SemanticVersionBuildMetaData! -static GitVersion.SemanticVersionBuildMetaData.implicit operator GitVersion.SemanticVersionBuildMetaData!(string! preReleaseTag) -> GitVersion.SemanticVersionBuildMetaData! -static GitVersion.SemanticVersionBuildMetaData.implicit operator string?(GitVersion.SemanticVersionBuildMetaData? preReleaseTag) -> string? -static GitVersion.SemanticVersionBuildMetaData.operator !=(GitVersion.SemanticVersionBuildMetaData? left, GitVersion.SemanticVersionBuildMetaData? right) -> bool -static GitVersion.SemanticVersionBuildMetaData.operator ==(GitVersion.SemanticVersionBuildMetaData? left, GitVersion.SemanticVersionBuildMetaData? right) -> bool -static GitVersion.SemanticVersionPreReleaseTag.implicit operator GitVersion.SemanticVersionPreReleaseTag!(string? preReleaseTag) -> GitVersion.SemanticVersionPreReleaseTag! -static GitVersion.SemanticVersionPreReleaseTag.implicit operator string?(GitVersion.SemanticVersionPreReleaseTag? preReleaseTag) -> string? -static GitVersion.SemanticVersionPreReleaseTag.operator !=(GitVersion.SemanticVersionPreReleaseTag? left, GitVersion.SemanticVersionPreReleaseTag? right) -> bool -static GitVersion.SemanticVersionPreReleaseTag.operator <(GitVersion.SemanticVersionPreReleaseTag? left, GitVersion.SemanticVersionPreReleaseTag? right) -> bool -static GitVersion.SemanticVersionPreReleaseTag.operator <=(GitVersion.SemanticVersionPreReleaseTag? left, GitVersion.SemanticVersionPreReleaseTag? right) -> bool -static GitVersion.SemanticVersionPreReleaseTag.operator ==(GitVersion.SemanticVersionPreReleaseTag? left, GitVersion.SemanticVersionPreReleaseTag? right) -> bool -static GitVersion.SemanticVersionPreReleaseTag.operator >(GitVersion.SemanticVersionPreReleaseTag? left, GitVersion.SemanticVersionPreReleaseTag? right) -> bool -static GitVersion.SemanticVersionPreReleaseTag.operator >=(GitVersion.SemanticVersionPreReleaseTag? left, GitVersion.SemanticVersionPreReleaseTag? right) -> bool -static GitVersion.SemanticVersionPreReleaseTag.Parse(string? preReleaseTag) -> GitVersion.SemanticVersionPreReleaseTag! -static GitVersion.VersionCalculation.NextVersion.operator !=(GitVersion.VersionCalculation.NextVersion! left, GitVersion.VersionCalculation.NextVersion! right) -> bool -static GitVersion.VersionCalculation.NextVersion.operator <(GitVersion.VersionCalculation.NextVersion! left, GitVersion.VersionCalculation.NextVersion! right) -> bool -static GitVersion.VersionCalculation.NextVersion.operator <=(GitVersion.VersionCalculation.NextVersion! left, GitVersion.VersionCalculation.NextVersion! right) -> bool -static GitVersion.VersionCalculation.NextVersion.operator ==(GitVersion.VersionCalculation.NextVersion! left, GitVersion.VersionCalculation.NextVersion? right) -> bool -static GitVersion.VersionCalculation.NextVersion.operator >(GitVersion.VersionCalculation.NextVersion! left, GitVersion.VersionCalculation.NextVersion! right) -> bool -static GitVersion.VersionCalculation.NextVersion.operator >=(GitVersion.VersionCalculation.NextVersion! left, GitVersion.VersionCalculation.NextVersion! right) -> bool -static readonly GitVersion.Git.BranchCommit.Empty -> GitVersion.Git.BranchCommit -static readonly GitVersion.Helpers.Disposable.Empty -> System.IDisposable! -static readonly GitVersion.SemanticVersion.Empty -> GitVersion.SemanticVersion! -static readonly GitVersion.SemanticVersionBuildMetaData.Empty -> GitVersion.SemanticVersionBuildMetaData! -static readonly GitVersion.SemanticVersionPreReleaseTag.Empty -> GitVersion.SemanticVersionPreReleaseTag! diff --git a/src/GitVersion.LibGit2Sharp/PublicAPI.Shipped.txt b/src/GitVersion.LibGit2Sharp/PublicAPI.Shipped.txt index 7dc5c58110..b3106ca70c 100644 --- a/src/GitVersion.LibGit2Sharp/PublicAPI.Shipped.txt +++ b/src/GitVersion.LibGit2Sharp/PublicAPI.Shipped.txt @@ -1 +1,4 @@ #nullable enable +GitVersion.GitVersionLibGit2SharpModule +GitVersion.GitVersionLibGit2SharpModule.GitVersionLibGit2SharpModule() -> void +GitVersion.GitVersionLibGit2SharpModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void diff --git a/src/GitVersion.LibGit2Sharp/PublicAPI.Unshipped.txt b/src/GitVersion.LibGit2Sharp/PublicAPI.Unshipped.txt index b3106ca70c..7dc5c58110 100644 --- a/src/GitVersion.LibGit2Sharp/PublicAPI.Unshipped.txt +++ b/src/GitVersion.LibGit2Sharp/PublicAPI.Unshipped.txt @@ -1,4 +1 @@ #nullable enable -GitVersion.GitVersionLibGit2SharpModule -GitVersion.GitVersionLibGit2SharpModule.GitVersionLibGit2SharpModule() -> void -GitVersion.GitVersionLibGit2SharpModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void diff --git a/src/GitVersion.MsBuild/PublicAPI.Shipped.txt b/src/GitVersion.MsBuild/PublicAPI.Shipped.txt index 7dc5c58110..b395a292de 100644 --- a/src/GitVersion.MsBuild/PublicAPI.Shipped.txt +++ b/src/GitVersion.MsBuild/PublicAPI.Shipped.txt @@ -1 +1,104 @@ #nullable enable +abstract GitVersion.MsBuild.GitVersionTaskBase.OnExecute() -> bool +GitVersion.MsBuild.GitVersionMsBuildModule +GitVersion.MsBuild.GitVersionMsBuildModule.GitVersionMsBuildModule() -> void +GitVersion.MsBuild.GitVersionMsBuildModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void +GitVersion.MsBuild.GitVersionTaskBase +GitVersion.MsBuild.GitVersionTaskBase.BuildEngine.get -> Microsoft.Build.Framework.IBuildEngine! +GitVersion.MsBuild.GitVersionTaskBase.BuildEngine.set -> void +GitVersion.MsBuild.GitVersionTaskBase.Execute() -> bool +GitVersion.MsBuild.GitVersionTaskBase.GitVersionTaskBase() -> void +GitVersion.MsBuild.GitVersionTaskBase.HostObject.get -> Microsoft.Build.Framework.ITaskHost! +GitVersion.MsBuild.GitVersionTaskBase.HostObject.set -> void +GitVersion.MsBuild.GitVersionTaskBase.Log.get -> Microsoft.Build.Utilities.TaskLoggingHelper! +GitVersion.MsBuild.GitVersionTaskBase.Overrides.get -> System.Action? +GitVersion.MsBuild.GitVersionTaskBase.Overrides.set -> void +GitVersion.MsBuild.GitVersionTaskBase.SolutionDirectory.get -> string! +GitVersion.MsBuild.GitVersionTaskBase.SolutionDirectory.set -> void +GitVersion.MsBuild.GitVersionTaskBase.VersionFile.get -> string! +GitVersion.MsBuild.GitVersionTaskBase.VersionFile.set -> void +GitVersion.MsBuild.GitVersionTaskBase.WithOverrides(System.Action! overrides) -> void +GitVersion.MsBuild.Tasks.GenerateGitVersionInformation +GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.GenerateGitVersionInformation() -> void +GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.GitVersionInformationFilePath.get -> string! +GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.GitVersionInformationFilePath.set -> void +GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.IntermediateOutputPath.get -> string! +GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.IntermediateOutputPath.set -> void +GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.Language.get -> string! +GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.Language.set -> void +GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.ProjectFile.get -> string! +GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.ProjectFile.set -> void +GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.RootNamespace.get -> string! +GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.RootNamespace.set -> void +GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.UseProjectNamespaceForGitVersionInformation.get -> string? +GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.UseProjectNamespaceForGitVersionInformation.set -> void +GitVersion.MsBuild.Tasks.GetVersion +GitVersion.MsBuild.Tasks.GetVersion.AssemblySemFileVer.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.AssemblySemFileVer.set -> void +GitVersion.MsBuild.Tasks.GetVersion.AssemblySemVer.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.AssemblySemVer.set -> void +GitVersion.MsBuild.Tasks.GetVersion.BranchName.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.BranchName.set -> void +GitVersion.MsBuild.Tasks.GetVersion.BuildMetaData.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.BuildMetaData.set -> void +GitVersion.MsBuild.Tasks.GetVersion.CommitDate.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.CommitDate.set -> void +GitVersion.MsBuild.Tasks.GetVersion.CommitsSinceVersionSource.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.CommitsSinceVersionSource.set -> void +GitVersion.MsBuild.Tasks.GetVersion.EscapedBranchName.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.EscapedBranchName.set -> void +GitVersion.MsBuild.Tasks.GetVersion.FullBuildMetaData.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.FullBuildMetaData.set -> void +GitVersion.MsBuild.Tasks.GetVersion.FullSemVer.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.FullSemVer.set -> void +GitVersion.MsBuild.Tasks.GetVersion.GetVersion() -> void +GitVersion.MsBuild.Tasks.GetVersion.InformationalVersion.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.InformationalVersion.set -> void +GitVersion.MsBuild.Tasks.GetVersion.Major.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.Major.set -> void +GitVersion.MsBuild.Tasks.GetVersion.MajorMinorPatch.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.MajorMinorPatch.set -> void +GitVersion.MsBuild.Tasks.GetVersion.Minor.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.Minor.set -> void +GitVersion.MsBuild.Tasks.GetVersion.Patch.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.Patch.set -> void +GitVersion.MsBuild.Tasks.GetVersion.PreReleaseLabel.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.PreReleaseLabel.set -> void +GitVersion.MsBuild.Tasks.GetVersion.PreReleaseLabelWithDash.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.PreReleaseLabelWithDash.set -> void +GitVersion.MsBuild.Tasks.GetVersion.PreReleaseNumber.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.PreReleaseNumber.set -> void +GitVersion.MsBuild.Tasks.GetVersion.PreReleaseTag.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.PreReleaseTag.set -> void +GitVersion.MsBuild.Tasks.GetVersion.PreReleaseTagWithDash.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.PreReleaseTagWithDash.set -> void +GitVersion.MsBuild.Tasks.GetVersion.SemVer.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.SemVer.set -> void +GitVersion.MsBuild.Tasks.GetVersion.Sha.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.Sha.set -> void +GitVersion.MsBuild.Tasks.GetVersion.ShortSha.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.ShortSha.set -> void +GitVersion.MsBuild.Tasks.GetVersion.UncommittedChanges.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.UncommittedChanges.set -> void +GitVersion.MsBuild.Tasks.GetVersion.VersionSourceSha.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.VersionSourceSha.set -> void +GitVersion.MsBuild.Tasks.GetVersion.WeightedPreReleaseNumber.get -> string! +GitVersion.MsBuild.Tasks.GetVersion.WeightedPreReleaseNumber.set -> void +GitVersion.MsBuild.Tasks.UpdateAssemblyInfo +GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.AssemblyInfoTempFilePath.get -> string! +GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.AssemblyInfoTempFilePath.set -> void +GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.CompileFiles.get -> Microsoft.Build.Framework.ITaskItem![]! +GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.CompileFiles.set -> void +GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.IntermediateOutputPath.get -> string! +GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.IntermediateOutputPath.set -> void +GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.Language.get -> string! +GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.Language.set -> void +GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.ProjectFile.get -> string! +GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.ProjectFile.set -> void +GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.UpdateAssemblyInfo() -> void +GitVersion.MsBuild.Tasks.WriteVersionInfoToBuildLog +GitVersion.MsBuild.Tasks.WriteVersionInfoToBuildLog.WriteVersionInfoToBuildLog() -> void +override GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.OnExecute() -> bool +override GitVersion.MsBuild.Tasks.GetVersion.OnExecute() -> bool +override GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.OnExecute() -> bool +override GitVersion.MsBuild.Tasks.WriteVersionInfoToBuildLog.OnExecute() -> bool diff --git a/src/GitVersion.MsBuild/PublicAPI.Unshipped.txt b/src/GitVersion.MsBuild/PublicAPI.Unshipped.txt index 56f89d7613..7dc5c58110 100644 --- a/src/GitVersion.MsBuild/PublicAPI.Unshipped.txt +++ b/src/GitVersion.MsBuild/PublicAPI.Unshipped.txt @@ -1,104 +1 @@ #nullable enable -GitVersion.MsBuild.GitVersionMsBuildModule -GitVersion.MsBuild.GitVersionMsBuildModule.GitVersionMsBuildModule() -> void -GitVersion.MsBuild.GitVersionMsBuildModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void -GitVersion.MsBuild.GitVersionTaskBase -GitVersion.MsBuild.GitVersionTaskBase.BuildEngine.get -> Microsoft.Build.Framework.IBuildEngine! -GitVersion.MsBuild.GitVersionTaskBase.BuildEngine.set -> void -GitVersion.MsBuild.GitVersionTaskBase.Execute() -> bool -GitVersion.MsBuild.GitVersionTaskBase.GitVersionTaskBase() -> void -GitVersion.MsBuild.GitVersionTaskBase.HostObject.get -> Microsoft.Build.Framework.ITaskHost! -GitVersion.MsBuild.GitVersionTaskBase.HostObject.set -> void -GitVersion.MsBuild.GitVersionTaskBase.Log.get -> Microsoft.Build.Utilities.TaskLoggingHelper! -GitVersion.MsBuild.GitVersionTaskBase.Overrides.get -> System.Action? -GitVersion.MsBuild.GitVersionTaskBase.Overrides.set -> void -GitVersion.MsBuild.GitVersionTaskBase.SolutionDirectory.get -> string! -GitVersion.MsBuild.GitVersionTaskBase.SolutionDirectory.set -> void -GitVersion.MsBuild.GitVersionTaskBase.VersionFile.get -> string! -GitVersion.MsBuild.GitVersionTaskBase.VersionFile.set -> void -GitVersion.MsBuild.GitVersionTaskBase.WithOverrides(System.Action! overrides) -> void -GitVersion.MsBuild.Tasks.GenerateGitVersionInformation -GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.GenerateGitVersionInformation() -> void -GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.GitVersionInformationFilePath.get -> string! -GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.GitVersionInformationFilePath.set -> void -GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.IntermediateOutputPath.get -> string! -GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.IntermediateOutputPath.set -> void -GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.Language.get -> string! -GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.Language.set -> void -GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.ProjectFile.get -> string! -GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.ProjectFile.set -> void -GitVersion.MsBuild.Tasks.GetVersion -GitVersion.MsBuild.Tasks.GetVersion.AssemblySemFileVer.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.AssemblySemFileVer.set -> void -GitVersion.MsBuild.Tasks.GetVersion.AssemblySemVer.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.AssemblySemVer.set -> void -GitVersion.MsBuild.Tasks.GetVersion.BranchName.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.BranchName.set -> void -GitVersion.MsBuild.Tasks.GetVersion.BuildMetaData.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.BuildMetaData.set -> void -GitVersion.MsBuild.Tasks.GetVersion.CommitDate.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.CommitDate.set -> void -GitVersion.MsBuild.Tasks.GetVersion.CommitsSinceVersionSource.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.CommitsSinceVersionSource.set -> void -GitVersion.MsBuild.Tasks.GetVersion.EscapedBranchName.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.EscapedBranchName.set -> void -GitVersion.MsBuild.Tasks.GetVersion.FullBuildMetaData.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.FullBuildMetaData.set -> void -GitVersion.MsBuild.Tasks.GetVersion.FullSemVer.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.FullSemVer.set -> void -GitVersion.MsBuild.Tasks.GetVersion.GetVersion() -> void -GitVersion.MsBuild.Tasks.GetVersion.InformationalVersion.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.InformationalVersion.set -> void -GitVersion.MsBuild.Tasks.GetVersion.Major.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.Major.set -> void -GitVersion.MsBuild.Tasks.GetVersion.MajorMinorPatch.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.MajorMinorPatch.set -> void -GitVersion.MsBuild.Tasks.GetVersion.Minor.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.Minor.set -> void -GitVersion.MsBuild.Tasks.GetVersion.Patch.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.Patch.set -> void -GitVersion.MsBuild.Tasks.GetVersion.PreReleaseLabel.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.PreReleaseLabel.set -> void -GitVersion.MsBuild.Tasks.GetVersion.PreReleaseLabelWithDash.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.PreReleaseLabelWithDash.set -> void -GitVersion.MsBuild.Tasks.GetVersion.PreReleaseNumber.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.PreReleaseNumber.set -> void -GitVersion.MsBuild.Tasks.GetVersion.PreReleaseTag.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.PreReleaseTag.set -> void -GitVersion.MsBuild.Tasks.GetVersion.PreReleaseTagWithDash.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.PreReleaseTagWithDash.set -> void -GitVersion.MsBuild.Tasks.GetVersion.SemVer.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.SemVer.set -> void -GitVersion.MsBuild.Tasks.GetVersion.Sha.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.Sha.set -> void -GitVersion.MsBuild.Tasks.GetVersion.ShortSha.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.ShortSha.set -> void -GitVersion.MsBuild.Tasks.GetVersion.UncommittedChanges.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.UncommittedChanges.set -> void -GitVersion.MsBuild.Tasks.GetVersion.VersionSourceSha.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.VersionSourceSha.set -> void -GitVersion.MsBuild.Tasks.GetVersion.WeightedPreReleaseNumber.get -> string! -GitVersion.MsBuild.Tasks.GetVersion.WeightedPreReleaseNumber.set -> void -GitVersion.MsBuild.Tasks.UpdateAssemblyInfo -GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.AssemblyInfoTempFilePath.get -> string! -GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.AssemblyInfoTempFilePath.set -> void -GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.CompileFiles.get -> Microsoft.Build.Framework.ITaskItem![]! -GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.CompileFiles.set -> void -GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.IntermediateOutputPath.get -> string! -GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.IntermediateOutputPath.set -> void -GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.Language.get -> string! -GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.Language.set -> void -GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.ProjectFile.get -> string! -GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.ProjectFile.set -> void -GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.UpdateAssemblyInfo() -> void -GitVersion.MsBuild.Tasks.WriteVersionInfoToBuildLog -GitVersion.MsBuild.Tasks.WriteVersionInfoToBuildLog.WriteVersionInfoToBuildLog() -> void -abstract GitVersion.MsBuild.GitVersionTaskBase.OnExecute() -> bool -override GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.OnExecute() -> bool -override GitVersion.MsBuild.Tasks.GetVersion.OnExecute() -> bool -override GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.OnExecute() -> bool -override GitVersion.MsBuild.Tasks.WriteVersionInfoToBuildLog.OnExecute() -> bool -GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.UseProjectNamespaceForGitVersionInformation.get -> string? -GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.UseProjectNamespaceForGitVersionInformation.set -> void -GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.RootNamespace.get -> string! -GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.RootNamespace.set -> void diff --git a/src/GitVersion.Output/PublicAPI.Shipped.txt b/src/GitVersion.Output/PublicAPI.Shipped.txt index ab058de62d..52f0ea6886 100644 --- a/src/GitVersion.Output/PublicAPI.Shipped.txt +++ b/src/GitVersion.Output/PublicAPI.Shipped.txt @@ -1 +1,12 @@ -#nullable enable +#nullable enable +GitVersion.IGitVersionOutputTool +GitVersion.IGitVersionOutputTool.GenerateGitVersionInformation(GitVersion.OutputVariables.GitVersionVariables! variables, GitVersion.FileWriteInfo! fileWriteInfo, string? targetNamespace = null) -> void +GitVersion.IGitVersionOutputTool.OutputVariables(GitVersion.OutputVariables.GitVersionVariables! variables, bool updateBuildNumber) -> void +GitVersion.IGitVersionOutputTool.UpdateAssemblyInfo(GitVersion.OutputVariables.GitVersionVariables! variables) -> void +GitVersion.IGitVersionOutputTool.UpdateWixVersionFile(GitVersion.OutputVariables.GitVersionVariables! variables) -> void +GitVersion.Output.Attributes.JsonPropertyDescriptionAttribute +GitVersion.Output.Attributes.JsonPropertyDescriptionAttribute.Description.get -> string! +GitVersion.Output.Attributes.JsonPropertyDescriptionAttribute.JsonPropertyDescriptionAttribute(string! description) -> void +GitVersion.Output.GitVersionOutputModule +GitVersion.Output.GitVersionOutputModule.GitVersionOutputModule() -> void +GitVersion.Output.GitVersionOutputModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void diff --git a/src/GitVersion.Output/PublicAPI.Unshipped.txt b/src/GitVersion.Output/PublicAPI.Unshipped.txt index a3558a8293..7dc5c58110 100644 --- a/src/GitVersion.Output/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Output/PublicAPI.Unshipped.txt @@ -1,12 +1 @@ #nullable enable -GitVersion.IGitVersionOutputTool -GitVersion.IGitVersionOutputTool.GenerateGitVersionInformation(GitVersion.OutputVariables.GitVersionVariables! variables, GitVersion.FileWriteInfo! fileWriteInfo, string? targetNamespace = null) -> void -GitVersion.IGitVersionOutputTool.OutputVariables(GitVersion.OutputVariables.GitVersionVariables! variables, bool updateBuildNumber) -> void -GitVersion.IGitVersionOutputTool.UpdateAssemblyInfo(GitVersion.OutputVariables.GitVersionVariables! variables) -> void -GitVersion.IGitVersionOutputTool.UpdateWixVersionFile(GitVersion.OutputVariables.GitVersionVariables! variables) -> void -GitVersion.Output.Attributes.JsonPropertyDescriptionAttribute -GitVersion.Output.Attributes.JsonPropertyDescriptionAttribute.Description.get -> string! -GitVersion.Output.Attributes.JsonPropertyDescriptionAttribute.JsonPropertyDescriptionAttribute(string! description) -> void -GitVersion.Output.GitVersionOutputModule -GitVersion.Output.GitVersionOutputModule.GitVersionOutputModule() -> void -GitVersion.Output.GitVersionOutputModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void \ No newline at end of file diff --git a/src/mark-shipped.ps1 b/src/mark-shipped.ps1 index 79186da21a..df5047a785 100644 --- a/src/mark-shipped.ps1 +++ b/src/mark-shipped.ps1 @@ -1,4 +1,4 @@ -[CmdletBinding(PositionalBinding=$false)] +[CmdletBinding(PositionalBinding = $false)] param () Set-StrictMode -version 2.0 @@ -17,7 +17,7 @@ function MarkShipped([string]$dir) { foreach ($item in $unshipped) { if ($item.Length -gt 0) { - if ($item.StartsWith($removedPrefix)) { + if ( $item.StartsWith($removedPrefix)) { $item = $item.Substring($removedPrefix.Length) $removed += $item } @@ -27,7 +27,7 @@ function MarkShipped([string]$dir) { } } - $shipped | Sort-Object -Unique |Where-Object { -not $removed.Contains($_) } | Out-File $shippedFilePath -Encoding Ascii + $shipped | Sort-Object -Unique | Where-Object { -not $removed.Contains($_) } | Out-File $shippedFilePath -Encoding Ascii "#nullable enable" | Out-File "PublicAPI.empty.txt" -Encoding Ascii Copy-Item ./PublicAPI.empty.txt $unshippedFilePath } From cd89b91c1b298b1bf5f74d7477b8c8eb0bd1d822 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 18 Jul 2024 11:41:24 +0200 Subject: [PATCH 159/544] cleanup --- .github/workflows/format.yml | 4 +++- .github/workflows/release.yml | 10 +++++++--- docs/input/docs/learn/faq.md | 7 ------- docs/input/docs/reference/configuration.md | 10 ---------- docs/input/docs/reference/modes/manual-deployment.md | 2 +- mkdocs.yml | 6 ------ 6 files changed, 11 insertions(+), 28 deletions(-) delete mode 100644 mkdocs.yml diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index d67bface50..2e61a314b0 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -37,7 +37,9 @@ jobs: runs-on: ubuntu-latest name: DotNet Format steps: - - uses: actions/checkout@v4 + - + name: Checkout + uses: actions/checkout@v4 - name: Setup .NET SDK uses: actions/setup-dotnet@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 21297ee23c..033d0c2dbd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,15 +8,19 @@ jobs: name: Trigger ci flow runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - name: Get version + - + name: Checkout + uses: actions/checkout@v4 + - + name: Get version id: get-version shell: pwsh run: | # Finding the version from release tag $VERSION="${{ github.ref }}".Replace("refs/tags/", "") "version=$VERSION" >> $env:GITHUB_OUTPUT - - uses: peter-evans/repository-dispatch@v3 + - + uses: peter-evans/repository-dispatch@v3 with: token: ${{ secrets.RELEASE_GITHUB_TOKEN }} repository: ${{ github.repository }} diff --git a/docs/input/docs/learn/faq.md b/docs/input/docs/learn/faq.md index 631948c857..b179215d85 100644 --- a/docs/input/docs/learn/faq.md +++ b/docs/input/docs/learn/faq.md @@ -49,13 +49,6 @@ SemVer. If you want to fix the version, use `NuGetVersionV2` which will stay the same after NuGet 3.0 comes out -## How do I choose my branching strategy (GitFlow vs GitHubFlow) - -If you run `gitversion init` then choose `Getting started wizard` then choose -`Unsure, tell me more`, GitVersion will run through a series of questions which -will try and help point you towards a branching strategy and why you would use -it. - ## Merged branch names as version source When GitVersion considers previous commits to calculate a version number, it's diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index e185710262..bf1541109f 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -8,16 +8,6 @@ RedirectFrom: docs/configuration GitVersion, starting from version 3.0, is mainly powered by configuration and no longer has branching strategies hard-coded. -## Configuration tool - -If you run `gitversion init`, GitVersion will launch into a configuration tool, -which can help you configure GitVersion the way you want it. - -Once complete, the `init` command will create a `GitVersion.yml` file in the -working directory. It can be the root repository directory or any subdirectory -in case you have a single repository for more than one project or are restricted -to commit into a subdirectory. - :::{.alert .alert-info} **Note** diff --git a/docs/input/docs/reference/modes/manual-deployment.md b/docs/input/docs/reference/modes/manual-deployment.md index 2b9a7eeafb..9ea3383d94 100644 --- a/docs/input/docs/reference/modes/manual-deployment.md +++ b/docs/input/docs/reference/modes/manual-deployment.md @@ -15,7 +15,7 @@ remain on the same pre-released version until it has been deployed dedicatedly. The thing about manual deployment is that there will be _multiple_ candidates to deploy on testing and it is a human choice to deploy. This means that -GitVersion will build **the same semantic version** until that version is +GitVersion will build __the same semantic version__ until that version is deployed. For instance: * 1.1.0-2+1 diff --git a/mkdocs.yml b/mkdocs.yml deleted file mode 100644 index 6215b58620..0000000000 --- a/mkdocs.yml +++ /dev/null @@ -1,6 +0,0 @@ -site_name: GitVersion -theme: readthedocs -repo_url: https://github.com/GitTools/GitVersion - -pages: -- Home: index.md From b6772d16287adbc9bead09883d79b5b859659392 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 17 Jul 2024 20:20:59 +0200 Subject: [PATCH 160/544] #4017 - added Approval tests for default Configuration Workflows If the configuration for a workflow will change the unit test will fail and will require to accept the new changes. These changes are then copied to the docs --- docs/input/docs/workflows/GitFlow/v1.yml | 2 +- docs/input/docs/workflows/GitHubFlow/v1.yml | 8 +- .../docs/workflows/TrunkBased/preview1.yml | 33 +++- .../GitVersion.Configuration.Tests.csproj | 13 ++ .../Workflows/WorkflowsTests.cs | 36 ++++ .../Workflows/approved/GitFlow/v1.yml | 167 ++++++++++++++++++ .../Workflows/approved/GitHubFlow/v1.yml | 116 ++++++++++++ .../approved/TrunkBased/preview1.yml | 101 +++++++++++ .../GitVersion.Configuration.csproj | 17 +- .../Configuration/IConfigurationBuilder.cs | 2 +- src/GitVersion.Core/PublicAPI.Shipped.txt | 3 + 11 files changed, 471 insertions(+), 27 deletions(-) create mode 100644 src/GitVersion.Configuration.Tests/Workflows/WorkflowsTests.cs create mode 100644 src/GitVersion.Configuration.Tests/Workflows/approved/GitFlow/v1.yml create mode 100644 src/GitVersion.Configuration.Tests/Workflows/approved/GitHubFlow/v1.yml create mode 100644 src/GitVersion.Configuration.Tests/Workflows/approved/TrunkBased/preview1.yml diff --git a/docs/input/docs/workflows/GitFlow/v1.yml b/docs/input/docs/workflows/GitFlow/v1.yml index 897bb5e169..f839b27b94 100644 --- a/docs/input/docs/workflows/GitFlow/v1.yml +++ b/docs/input/docs/workflows/GitFlow/v1.yml @@ -1,4 +1,4 @@ -assembly-versioning-scheme: MajorMinorPatch +assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* diff --git a/docs/input/docs/workflows/GitHubFlow/v1.yml b/docs/input/docs/workflows/GitHubFlow/v1.yml index 4b3a4c9591..822fe7991f 100644 --- a/docs/input/docs/workflows/GitHubFlow/v1.yml +++ b/docs/input/docs/workflows/GitHubFlow/v1.yml @@ -1,4 +1,4 @@ -assembly-versioning-scheme: MajorMinorPatch +assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* @@ -57,12 +57,12 @@ branches: increment: Inherit prevent-increment: when-current-commit-tagged: false + track-merge-message: true regex: ^features?[/-](?.+) source-branches: - main - release is-source-branch-for: [] - track-merge-message: true is-main-branch: false pre-release-weight: 30000 pull-request: @@ -73,13 +73,13 @@ branches: of-merged-branch: true when-current-commit-tagged: false label-number-pattern: '[/-](?\d+)' + track-merge-message: true regex: ^(pull|pull\-requests|pr)[/-] source-branches: - main - release - feature is-source-branch-for: [] - track-merge-message: true pre-release-weight: 30000 unknown: mode: ManualDeployment @@ -87,6 +87,7 @@ branches: increment: Inherit prevent-increment: when-current-commit-tagged: false + track-merge-message: false regex: (?.+) source-branches: - main @@ -94,7 +95,6 @@ branches: - feature - pull-request is-source-branch-for: [] - track-merge-message: false is-main-branch: false ignore: sha: [] diff --git a/docs/input/docs/workflows/TrunkBased/preview1.yml b/docs/input/docs/workflows/TrunkBased/preview1.yml index cc9b59a1dd..07012e4dd6 100644 --- a/docs/input/docs/workflows/TrunkBased/preview1.yml +++ b/docs/input/docs/workflows/TrunkBased/preview1.yml @@ -1,4 +1,4 @@ -assembly-versioning-scheme: MajorMinorPatch +assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* @@ -12,8 +12,8 @@ merge-message-formats: {} update-build-number: true semantic-version-format: Strict strategies: -- Mainline - ConfiguredNextVersion +- Mainline branches: main: mode: ContinuousDeployment @@ -21,46 +21,65 @@ branches: increment: Patch prevent-increment: of-merged-branch: true - when-current-commit-tagged: true track-merge-target: false + track-merge-message: true regex: ^master$|^main$ source-branches: [] + is-source-branch-for: [] tracks-release-branches: false is-release-branch: false is-main-branch: true pre-release-weight: 55000 feature: + mode: ContinuousDelivery + label: '{BranchName}' increment: Minor - regex: ^features?[/-](?.+) prevent-increment: when-current-commit-tagged: false + track-merge-message: true + regex: ^features?[/-](?.+) source-branches: - main + is-source-branch-for: [] + is-main-branch: false pre-release-weight: 30000 hotfix: + mode: ContinuousDelivery + label: '{BranchName}' increment: Patch - regex: ^hotfix(es)?[/-](?.+) prevent-increment: when-current-commit-tagged: false + regex: ^hotfix(es)?[/-](?.+) source-branches: - main + is-source-branch-for: [] + is-release-branch: true + is-main-branch: false pre-release-weight: 30000 pull-request: mode: ContinuousDelivery label: PullRequest increment: Inherit + prevent-increment: + of-merged-branch: true + when-current-commit-tagged: false label-number-pattern: '[/-](?\d+)' + track-merge-message: true regex: ^(pull|pull\-requests|pr)[/-] source-branches: - main + - feature + - hotfix + is-source-branch-for: [] pre-release-weight: 30000 unknown: increment: Patch - regex: (?.+) prevent-increment: when-current-commit-tagged: false + regex: (?.+) source-branches: - main + is-source-branch-for: [] pre-release-weight: 30000 ignore: sha: [] @@ -75,6 +94,8 @@ track-merge-target: false track-merge-message: true commit-message-incrementing: Enabled regex: '' +source-branches: [] +is-source-branch-for: [] tracks-release-branches: false is-release-branch: false is-main-branch: false diff --git a/src/GitVersion.Configuration.Tests/GitVersion.Configuration.Tests.csproj b/src/GitVersion.Configuration.Tests/GitVersion.Configuration.Tests.csproj index 2b5ddb0b6c..fdfd126300 100644 --- a/src/GitVersion.Configuration.Tests/GitVersion.Configuration.Tests.csproj +++ b/src/GitVersion.Configuration.Tests/GitVersion.Configuration.Tests.csproj @@ -3,4 +3,17 @@ + + + + + + + + + + diff --git a/src/GitVersion.Configuration.Tests/Workflows/WorkflowsTests.cs b/src/GitVersion.Configuration.Tests/Workflows/WorkflowsTests.cs new file mode 100644 index 0000000000..801d5239c4 --- /dev/null +++ b/src/GitVersion.Configuration.Tests/Workflows/WorkflowsTests.cs @@ -0,0 +1,36 @@ +namespace GitVersion.Configuration.Tests.Configuration; + +[TestFixture] +public class WorkflowsTests +{ + private readonly ConfigurationSerializer serializer = new(); + + private static readonly object[][] Workflows = + [ + ["GitFlow/v1", GitFlowConfigurationBuilder.New], + ["GitHubFlow/v1", GitHubFlowConfigurationBuilder.New], + ["TrunkBased/preview1", TrunkBasedConfigurationBuilder.New] + ]; + + [Test(Description = "This test is to ensure that the configuration for workflow is up to date")] + [TestCaseSource(nameof(Workflows))] + public void CheckWorkflowsAreUpdated(string workflow, IConfigurationBuilder configurationBuilder) + { + var configuration = configurationBuilder.Build(); + + var serializedConfiguration = serializer.Serialize(configuration); + var segments = workflow.Split("/"); + var folderName = segments[0]; + var fileName = segments[^1]; + + serializedConfiguration.ShouldMatchApproved(builder => builder + .WithFilenameGenerator((_, _, type, extension) => FilenameGenerator(fileName, type, extension)) + .WithFileExtension("yml") + .SubFolder($"approved/{folderName}")); + } + + private static string FilenameGenerator(string fileName, string type, string ext) => + type == "approved" + ? $"{fileName}.{ext}" + : $"{fileName}.{type}.{ext}"; +} diff --git a/src/GitVersion.Configuration.Tests/Workflows/approved/GitFlow/v1.yml b/src/GitVersion.Configuration.Tests/Workflows/approved/GitFlow/v1.yml new file mode 100644 index 0000000000..f839b27b94 --- /dev/null +++ b/src/GitVersion.Configuration.Tests/Workflows/approved/GitFlow/v1.yml @@ -0,0 +1,167 @@ +assembly-versioning-scheme: MajorMinorPatch +assembly-file-versioning-scheme: MajorMinorPatch +tag-prefix: '[vV]?' +version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* +major-version-bump-message: '\+semver:\s?(breaking|major)' +minor-version-bump-message: '\+semver:\s?(feature|minor)' +patch-version-bump-message: '\+semver:\s?(fix|patch)' +no-bump-message: '\+semver:\s?(none|skip)' +tag-pre-release-weight: 60000 +commit-date-format: yyyy-MM-dd +merge-message-formats: {} +update-build-number: true +semantic-version-format: Strict +strategies: +- Fallback +- ConfiguredNextVersion +- MergeMessage +- TaggedCommit +- TrackReleaseBranches +- VersionInBranchName +branches: + develop: + mode: ContinuousDelivery + label: alpha + increment: Minor + prevent-increment: + when-current-commit-tagged: false + track-merge-target: true + track-merge-message: true + regex: ^dev(elop)?(ment)?$ + source-branches: + - main + is-source-branch-for: [] + tracks-release-branches: true + is-release-branch: false + is-main-branch: false + pre-release-weight: 0 + main: + label: '' + increment: Patch + prevent-increment: + of-merged-branch: true + track-merge-target: false + track-merge-message: true + regex: ^master$|^main$ + source-branches: [] + is-source-branch-for: [] + tracks-release-branches: false + is-release-branch: false + is-main-branch: true + pre-release-weight: 55000 + release: + mode: ManualDeployment + label: beta + increment: Minor + prevent-increment: + of-merged-branch: true + when-current-commit-tagged: false + track-merge-target: false + regex: ^releases?[/-](?.+) + source-branches: + - main + - support + is-source-branch-for: [] + tracks-release-branches: false + is-release-branch: true + is-main-branch: false + pre-release-weight: 30000 + feature: + mode: ManualDeployment + label: '{BranchName}' + increment: Inherit + prevent-increment: + when-current-commit-tagged: false + track-merge-message: true + regex: ^features?[/-](?.+) + source-branches: + - develop + - main + - release + - support + - hotfix + is-source-branch-for: [] + is-main-branch: false + pre-release-weight: 30000 + pull-request: + mode: ContinuousDelivery + label: PullRequest + increment: Inherit + prevent-increment: + of-merged-branch: true + when-current-commit-tagged: false + label-number-pattern: '[/-](?\d+)' + track-merge-message: true + regex: ^(pull|pull\-requests|pr)[/-] + source-branches: + - develop + - main + - release + - feature + - support + - hotfix + is-source-branch-for: [] + pre-release-weight: 30000 + hotfix: + mode: ManualDeployment + label: beta + increment: Inherit + prevent-increment: + when-current-commit-tagged: false + regex: ^hotfix(es)?[/-](?.+) + source-branches: + - main + - support + is-source-branch-for: [] + is-release-branch: true + is-main-branch: false + pre-release-weight: 30000 + support: + label: '' + increment: Patch + prevent-increment: + of-merged-branch: true + track-merge-target: false + regex: ^support[/-](?.+) + source-branches: + - main + is-source-branch-for: [] + tracks-release-branches: false + is-release-branch: false + is-main-branch: true + pre-release-weight: 55000 + unknown: + mode: ManualDeployment + label: '{BranchName}' + increment: Inherit + prevent-increment: + when-current-commit-tagged: true + regex: (?.+) + source-branches: + - main + - develop + - release + - feature + - pull-request + - hotfix + - support + is-source-branch-for: [] + is-main-branch: false +ignore: + sha: [] +mode: ContinuousDelivery +label: '{BranchName}' +increment: Inherit +prevent-increment: + of-merged-branch: false + when-branch-merged: false + when-current-commit-tagged: true +track-merge-target: false +track-merge-message: true +commit-message-incrementing: Enabled +regex: '' +source-branches: [] +is-source-branch-for: [] +tracks-release-branches: false +is-release-branch: false +is-main-branch: false diff --git a/src/GitVersion.Configuration.Tests/Workflows/approved/GitHubFlow/v1.yml b/src/GitVersion.Configuration.Tests/Workflows/approved/GitHubFlow/v1.yml new file mode 100644 index 0000000000..822fe7991f --- /dev/null +++ b/src/GitVersion.Configuration.Tests/Workflows/approved/GitHubFlow/v1.yml @@ -0,0 +1,116 @@ +assembly-versioning-scheme: MajorMinorPatch +assembly-file-versioning-scheme: MajorMinorPatch +tag-prefix: '[vV]?' +version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* +major-version-bump-message: '\+semver:\s?(breaking|major)' +minor-version-bump-message: '\+semver:\s?(feature|minor)' +patch-version-bump-message: '\+semver:\s?(fix|patch)' +no-bump-message: '\+semver:\s?(none|skip)' +tag-pre-release-weight: 60000 +commit-date-format: yyyy-MM-dd +merge-message-formats: {} +update-build-number: true +semantic-version-format: Strict +strategies: +- Fallback +- ConfiguredNextVersion +- MergeMessage +- TaggedCommit +- TrackReleaseBranches +- VersionInBranchName +branches: + main: + label: '' + increment: Patch + prevent-increment: + of-merged-branch: true + track-merge-target: false + track-merge-message: true + regex: ^master$|^main$ + source-branches: [] + is-source-branch-for: [] + tracks-release-branches: false + is-release-branch: false + is-main-branch: true + pre-release-weight: 55000 + release: + mode: ManualDeployment + label: beta + increment: Patch + prevent-increment: + of-merged-branch: true + when-branch-merged: false + when-current-commit-tagged: false + track-merge-target: false + track-merge-message: true + regex: ^releases?[/-](?.+) + source-branches: + - main + is-source-branch-for: [] + tracks-release-branches: false + is-release-branch: true + is-main-branch: false + pre-release-weight: 30000 + feature: + mode: ManualDeployment + label: '{BranchName}' + increment: Inherit + prevent-increment: + when-current-commit-tagged: false + track-merge-message: true + regex: ^features?[/-](?.+) + source-branches: + - main + - release + is-source-branch-for: [] + is-main-branch: false + pre-release-weight: 30000 + pull-request: + mode: ContinuousDelivery + label: PullRequest + increment: Inherit + prevent-increment: + of-merged-branch: true + when-current-commit-tagged: false + label-number-pattern: '[/-](?\d+)' + track-merge-message: true + regex: ^(pull|pull\-requests|pr)[/-] + source-branches: + - main + - release + - feature + is-source-branch-for: [] + pre-release-weight: 30000 + unknown: + mode: ManualDeployment + label: '{BranchName}' + increment: Inherit + prevent-increment: + when-current-commit-tagged: false + track-merge-message: false + regex: (?.+) + source-branches: + - main + - release + - feature + - pull-request + is-source-branch-for: [] + is-main-branch: false +ignore: + sha: [] +mode: ContinuousDelivery +label: '{BranchName}' +increment: Inherit +prevent-increment: + of-merged-branch: false + when-branch-merged: false + when-current-commit-tagged: true +track-merge-target: false +track-merge-message: true +commit-message-incrementing: Enabled +regex: '' +source-branches: [] +is-source-branch-for: [] +tracks-release-branches: false +is-release-branch: false +is-main-branch: false diff --git a/src/GitVersion.Configuration.Tests/Workflows/approved/TrunkBased/preview1.yml b/src/GitVersion.Configuration.Tests/Workflows/approved/TrunkBased/preview1.yml new file mode 100644 index 0000000000..07012e4dd6 --- /dev/null +++ b/src/GitVersion.Configuration.Tests/Workflows/approved/TrunkBased/preview1.yml @@ -0,0 +1,101 @@ +assembly-versioning-scheme: MajorMinorPatch +assembly-file-versioning-scheme: MajorMinorPatch +tag-prefix: '[vV]?' +version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* +major-version-bump-message: '\+semver:\s?(breaking|major)' +minor-version-bump-message: '\+semver:\s?(feature|minor)' +patch-version-bump-message: '\+semver:\s?(fix|patch)' +no-bump-message: '\+semver:\s?(none|skip)' +tag-pre-release-weight: 60000 +commit-date-format: yyyy-MM-dd +merge-message-formats: {} +update-build-number: true +semantic-version-format: Strict +strategies: +- ConfiguredNextVersion +- Mainline +branches: + main: + mode: ContinuousDeployment + label: '' + increment: Patch + prevent-increment: + of-merged-branch: true + track-merge-target: false + track-merge-message: true + regex: ^master$|^main$ + source-branches: [] + is-source-branch-for: [] + tracks-release-branches: false + is-release-branch: false + is-main-branch: true + pre-release-weight: 55000 + feature: + mode: ContinuousDelivery + label: '{BranchName}' + increment: Minor + prevent-increment: + when-current-commit-tagged: false + track-merge-message: true + regex: ^features?[/-](?.+) + source-branches: + - main + is-source-branch-for: [] + is-main-branch: false + pre-release-weight: 30000 + hotfix: + mode: ContinuousDelivery + label: '{BranchName}' + increment: Patch + prevent-increment: + when-current-commit-tagged: false + regex: ^hotfix(es)?[/-](?.+) + source-branches: + - main + is-source-branch-for: [] + is-release-branch: true + is-main-branch: false + pre-release-weight: 30000 + pull-request: + mode: ContinuousDelivery + label: PullRequest + increment: Inherit + prevent-increment: + of-merged-branch: true + when-current-commit-tagged: false + label-number-pattern: '[/-](?\d+)' + track-merge-message: true + regex: ^(pull|pull\-requests|pr)[/-] + source-branches: + - main + - feature + - hotfix + is-source-branch-for: [] + pre-release-weight: 30000 + unknown: + increment: Patch + prevent-increment: + when-current-commit-tagged: false + regex: (?.+) + source-branches: + - main + is-source-branch-for: [] + pre-release-weight: 30000 +ignore: + sha: [] +mode: ContinuousDelivery +label: '{BranchName}' +increment: Inherit +prevent-increment: + of-merged-branch: false + when-branch-merged: false + when-current-commit-tagged: true +track-merge-target: false +track-merge-message: true +commit-message-incrementing: Enabled +regex: '' +source-branches: [] +is-source-branch-for: [] +tracks-release-branches: false +is-release-branch: false +is-main-branch: false diff --git a/src/GitVersion.Configuration/GitVersion.Configuration.csproj b/src/GitVersion.Configuration/GitVersion.Configuration.csproj index cf3b09fcfe..75a9ad34e1 100644 --- a/src/GitVersion.Configuration/GitVersion.Configuration.csproj +++ b/src/GitVersion.Configuration/GitVersion.Configuration.csproj @@ -30,20 +30,7 @@ - - - - - - - - - - - - - - - + + diff --git a/src/GitVersion.Core/Configuration/IConfigurationBuilder.cs b/src/GitVersion.Core/Configuration/IConfigurationBuilder.cs index 1eabfff749..e6827f7a0a 100644 --- a/src/GitVersion.Core/Configuration/IConfigurationBuilder.cs +++ b/src/GitVersion.Core/Configuration/IConfigurationBuilder.cs @@ -1,6 +1,6 @@ namespace GitVersion.Configuration; -internal interface IConfigurationBuilder +public interface IConfigurationBuilder { void AddOverride(IReadOnlyDictionary value); diff --git a/src/GitVersion.Core/PublicAPI.Shipped.txt b/src/GitVersion.Core/PublicAPI.Shipped.txt index 55ad0b8489..78e07b591c 100644 --- a/src/GitVersion.Core/PublicAPI.Shipped.txt +++ b/src/GitVersion.Core/PublicAPI.Shipped.txt @@ -107,6 +107,9 @@ GitVersion.Configuration.IBranchConfiguration.SourceBranches.get -> System.Colle GitVersion.Configuration.IBranchConfiguration.TrackMergeMessage.get -> bool? GitVersion.Configuration.IBranchConfiguration.TrackMergeTarget.get -> bool? GitVersion.Configuration.IBranchConfiguration.TracksReleaseBranches.get -> bool? +GitVersion.Configuration.IConfigurationBuilder +GitVersion.Configuration.IConfigurationBuilder.AddOverride(System.Collections.Generic.IReadOnlyDictionary! value) -> void +GitVersion.Configuration.IConfigurationBuilder.Build() -> GitVersion.Configuration.IGitVersionConfiguration! GitVersion.Configuration.IConfigurationFileLocator GitVersion.Configuration.IConfigurationFileLocator.GetConfigurationFile(string? directory) -> string? GitVersion.Configuration.IConfigurationFileLocator.Verify(string? workingDirectory, string? projectRootDirectory) -> void From d75cc93f16d540a90199edc2150e6ed655ce9559 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 18 Jul 2024 11:33:40 +0200 Subject: [PATCH 161/544] #4017 - use MarkdownSnippets tool to embed `.yml` files as code snippet in markdown --- .github/workflows/mkdocs.yml | 42 ++ build/CI.sln | 1 + .../mdsource/configuration.source.md | 570 ++++++++++++++++++ 3 files changed, 613 insertions(+) create mode 100644 .github/workflows/mkdocs.yml create mode 100644 docs/input/docs/reference/mdsource/configuration.source.md diff --git a/.github/workflows/mkdocs.yml b/.github/workflows/mkdocs.yml new file mode 100644 index 0000000000..83550f71b6 --- /dev/null +++ b/.github/workflows/mkdocs.yml @@ -0,0 +1,42 @@ +name: Markdown Update +on: + push: + +env: + DOTNET_ROLL_FORWARD: "Major" + DOTNET_CLI_TELEMETRY_OPTOUT: 1 + DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 + DOTNET_NOLOGO: 1 + +defaults: + run: + shell: pwsh + +jobs: + docs: + name: Update Markdown (embedded snippets) + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Run MarkdownSnippets + run: | + dotnet tool install --global MarkdownSnippets.Tool + mdsnippets --write-header false + working-directory: ${{ github.workspace }}/docs/input + - + name: Check for changes + id: status + run: | + if ($null -ne (git status --porcelain)) { echo "has_changes=1"; echo "has_changes=1" >> $env:GITHUB_OUTPUT } + - + name: Push changes + run: | + git add --verbose . + git config user.name 'Artur Stolear' + git config user.email 'artur.stolear@gmail.com' + git commit -m 'Docs changes' --allow-empty + git push --force + if: steps.status.outputs.has_changes == '1' \ No newline at end of file diff --git a/build/CI.sln b/build/CI.sln index 67ace32076..4a5f522977 100644 --- a/build/CI.sln +++ b/build/CI.sln @@ -42,6 +42,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{ ..\.github\workflows\_unit_tests.yml = ..\.github\workflows\_unit_tests.yml ..\.github\workflows\stale.yml = ..\.github\workflows\stale.yml ..\.github\workflows\winget.yml = ..\.github\workflows\winget.yml + ..\.github\workflows\mkdocs.yml = ..\.github\workflows\mkdocs.yml ..\.github\dependabot.yml = ..\.github\dependabot.yml EndProjectSection EndProject diff --git a/docs/input/docs/reference/mdsource/configuration.source.md b/docs/input/docs/reference/mdsource/configuration.source.md new file mode 100644 index 0000000000..74b76fa054 --- /dev/null +++ b/docs/input/docs/reference/mdsource/configuration.source.md @@ -0,0 +1,570 @@ +--- +Order: 10 +Title: Configuration +Description: Details about how GitVersion can be configured to suit your needs +RedirectFrom: docs/configuration +--- + +GitVersion, starting from version 3.0, is mainly powered by configuration and no +longer has branching strategies hard-coded. + +:::{.alert .alert-info} +**Note** + +GitVersion ships with internal default configuration which works with +GitHubFlow and GitFlow, probably with others too. +::: + +The `develop` branch is set to `ContinuousDeployment` mode by default as we have +found that is generally what is needed when using GitFlow. + +To see the effective configuration (defaults and overrides), you can run +`gitversion /showConfig`. + +## Global configuration + +The following supported workflow configurations are available in GitVersion and can be referenced by the workflow property: + +- GitFlow (GitFlow/v1) +- GitHubFlow (GitHubFlow/v1) +- TrunkBased (TrunkBased/preview1) + +Example of using a `GitHubFlow` workflow with a different `tag-prefix`: + +```yaml +workflow: GitHubFlow/v1 +tag-prefix: '[abc]' +``` + +The built-in configuration for the `GitFlow` workflow (`workflow: GitFlow/v1`) looks like: + +snippet: /docs/workflows/GitFlow/v1.yml + +The supported built-in configuration for the `GitHubFlow` workflow (`workflow: GitHubFlow/v1`) looks like: + +snippet: /docs/workflows/GitHubFlow/v1.yml + +The preview built-in configuration (experimental usage only) for the `TrunkBased` workflow (`workflow: TrunkBased/preview1`) looks like: + +snippet: /docs/workflows/TrunkBased/preview1.yml + +The details of the available options are as follows: + +### workflow + +The base template of the configuration to use. Possible values are `GitFlow/v1` or `GitHubFlow/v1`. Defaults to `GitFlow/v1` if not set. To create a configuration from scratch without using a base template, please specify an empty string. + +### next-version + +Allows you to bump the next version explicitly. Useful for bumping `main` or a +feature branch with breaking changes (i.e., a major increment), indicating what +the next `git tag` is going to be. + +`next-version` is not a permanent replacement for `git tag` and should only be +used intermittently. Since version 5.5 GitVersion supports `next-version` with +`mode: Mainline` and should not be treated as a "base version". + +If you are using `next-version` and are experiencing weird versioning behaviour, +please remove it, create a `git tag` with an appropriate version number on an +appropriate historical commit and see if that resolves any versioning issues +you may have. + +### assembly-versioning-scheme + +When updating assembly info, `assembly-versioning-scheme` tells GitVersion how +to treat the `AssemblyVersion` attribute. Useful to lock the major when using +Strong Naming. Note: you can use `None` to skip updating the `AssemblyVersion` +while still updating the `AssemblyFileVersion` and `AssemblyInformationVersion` +attributes. Valid values: `MajorMinorPatchTag`, `MajorMinorPatch`, `MajorMinor`, +`Major`, `None`. + +### assembly-file-versioning-scheme + +When updating assembly info, `assembly-file-versioning-scheme` tells GitVersion +how to treat the `AssemblyFileVersion` attribute. Note: you can use `None` to +skip updating the `AssemblyFileVersion` while still updating the +`AssemblyVersion` and `AssemblyInformationVersion` attributes. Valid values: +`MajorMinorPatchTag`, `MajorMinorPatch`, `MajorMinor`, `Major`, `None`. + +### assembly-file-versioning-format + +Specifies the format of `AssemblyFileVersion` and +overwrites the value of `assembly-file-versioning-scheme`. + +Expressions in curly braces reference one of the [variables][variables] +or a process-scoped environment variable (when prefixed with `env:`). For example, + +```yaml +# use a variable if non-null or a fallback value otherwise +assembly-file-versioning-format: '{Major}.{Minor}.{Patch}.{WeightedPreReleaseNumber ?? 0}' + +# use an environment variable or raise an error if not available +assembly-file-versioning-format: '{Major}.{Minor}.{Patch}.{env:BUILD_NUMBER}' + +# use an environment variable if available or a fallback value otherwise +assembly-file-versioning-format: '{Major}.{Minor}.{Patch}.{env:BUILD_NUMBER ?? 42}' +``` + +### assembly-versioning-format + +Specifies the format of `AssemblyVersion` and +overwrites the value of `assembly-versioning-scheme`. +Follows the same formatting semantics as `assembly-file-versioning-format`. + +### assembly-informational-format + +Specifies the format of `AssemblyInformationalVersion`. +Follows the same formatting semantics as `assembly-file-versioning-format`. +The default value is `{InformationalVersion}`. + +### mode + +Sets the `mode` of how GitVersion should create a new version. Read more at +[deployment modes][modes]. + +### increment + +The part of the SemVer to increment when GitVersion detects it needs to be +increased, such as for commits after a tag: `Major`, `Minor`, `Patch`, `None`. + +The special value `Inherit` means that GitVersion should find the parent branch +(i.e. the branch where the current branch was branched from), and use its values +for [increment](#increment) or other branch related properties. + +### tag-prefix + +A regular expression which is used to trim Git tags before processing (e.g., +v1.0.0). The default value is `[vV]`. + +### version-in-branch-pattern + +A regular expression which is used to determine the version number in the branch +name or commit message (e.g., v1.0.0-LTS). This setting only applies on branches +where the option `is-release-branch` is set to `true`. The default value is +`(?[vV]?\d+(\.\d+)?(\.\d+)?).*`. + +### major-version-bump-message + +The regex to match commit messages with to perform a major version increment. +Default set to `'\+semver:\s?(breaking|major)'`, which will match occurrences of +`+semver: major` and `+semver: breaking` in a commit message. + +### minor-version-bump-message + +The regex to match commit messages with to perform a minor version increment. +Default set to `'\+semver:\s?(feature|minor)'`, which will match occurrences of +`+semver: feature` and `+semver: minor` in a commit message. + +### patch-version-bump-message + +The regex to match commit messages with to perform a patch version increment. +Default set to `'\+semver:\s?(fix|patch)'`, which will match occurrences of +`+semver: fix` and `+semver: patch` in a commit message. + +### no-bump-message + +Used to tell GitVersion not to increment when in Mainline development mode. +Default `\+semver:\s?(none|skip)`, which will match occurrences of `+semver: +none` and `+semver: skip` + +When a commit matches **both** the `no-bump-message` **and** any combination of +the `version-bump-message`, `no-bump-message` takes precedence and no increment is applied. + +### tag-pre-release-weight + +The pre-release weight in case of tagged commits. If the value is not set in the +configuration, a default weight of 60000 is used instead. If the +`WeightedPreReleaseNumber` [variable][variables] is 0 and this parameter is set, +its value is used. This helps if your branching model is GitFlow and the last +release build, which is often tagged, can utilize this parameter to produce a +monotonically increasing build number. + +### commit-message-incrementing + +Sets whether it should be possible to increment the version with special syntax +in the commit message. See the `*-version-bump-message` options above for +details on the syntax. Default set to `Enabled`; set to `Disabled` to disable. + +### commit-date-format + +Sets the format which will be used to format the `CommitDate` output variable. + +### ignore + +The header property for the `ignore` configuration. + +:::{.alert .alert-info} +**Note:** When ignoring a commit or a range of commits, they are only ignored in +the search for a [version source][version-sources], not when calculating other +parts of the version number, such as build metadata. +::: + +#### sha + +A sequence of SHAs to be excluded from the version calculations. Useful when +there is a rogue commit in history yielding a bad version. You can use either +style below: + +```yaml +ignore: + sha: [e7bc24c0f34728a25c9187b8d0b041d935763e3a, 764e16321318f2fdb9cdeaa56d1156a1cba307d7] +``` + +or + +```yaml +ignore: + sha: + - e7bc24c0f34728a25c9187b8d0b041d935763e3a + - 764e16321318f2fdb9cdeaa56d1156a1cba307d7 +``` + +#### commits-before + +Date and time in the format `yyyy-MM-ddTHH:mm:ss` (eg `commits-before: +2015-10-23T12:23:15`) to setup an exclusion range. Effectively any commit before +`commits-before` will be ignored. + +### merge-message-formats + +Custom merge message formats to enable identification of merge messages that do not +follow the built-in conventions. Entries should be added as key-value pairs where +the value is a regular expression. +e.g. + +```yaml +merge-message-formats: + tfs: '^Merged (?:PR (?\d+)): Merge (?.+) to (?.+)' +``` + +The regular expression should contain the following capture groups: + +- `SourceBranch` - Identifies the source branch of the merge +- `TargetBranch` - Identifies the target branch of the merge +- `PullRequestNumber` - Captures the pull-request number + +Custom merge message formats are evaluated _before_ any built in formats. +Support for [Conventional Commits][conventional-commits] can be +[configured][conventional-commits-config]. + +### update-build-number + +Configures GitVersion to update the build number or not when running on a build server. + +## Branch configuration + +Then we have branch specific configuration, which looks something like this: + +:::{.alert .alert-info} +**Note** + +v4 changed from using regexes for keys, to named configs +::: + +If you have branch specific configuration upgrading to v4 will force you to +upgrade. + +```yaml +branches: + main: + regex: ^master$|^main$ + mode: ContinuousDelivery + label: '' + increment: Patch + prevent-increment-of-merged-branch-version: true + track-merge-target: false + source-branches: [ 'develop', 'release' ] + tracks-release-branches: false + is-release-branch: false + is-main-branch: true + pre-release-weight: 55000 + develop: + regex: ^dev(elop)?(ment)?$ + mode: ContinuousDeployment + label: alpha + increment: Minor + prevent-increment-of-merged-branch-version: false + track-merge-target: true + source-branches: [] + tracks-release-branches: true + is-release-branch: false + is-main-branch: false + pre-release-weight: 0 + release: + regex: ^releases?[/-] + mode: ContinuousDelivery + label: beta + increment: None + prevent-increment-of-merged-branch-version: true + track-merge-target: false + source-branches: [ 'develop', 'main', 'support', 'release' ] + tracks-release-branches: false + is-release-branch: true + is-main-branch: false + pre-release-weight: 30000 + feature: + regex: ^features?[/-] + mode: ContinuousDelivery + label: '{BranchName}' + increment: Inherit + source-branches: [ 'develop', 'main', 'release', 'feature', 'support', 'hotfix' ] + pre-release-weight: 30000 + pull-request: + regex: ^(pull|pull\-requests|pr)[/-] + mode: ContinuousDelivery + label: PullRequest + increment: Inherit + label-number-pattern: '[/-](?\d+)[-/]' + source-branches: [ 'develop', 'main', 'release', 'feature', 'support', 'hotfix' ] + pre-release-weight: 30000 + hotfix: + regex: ^hotfix(es)?[/-] + mode: ContinuousDelivery + label: beta + increment: Inherit + source-branches: [ 'release', 'main', 'support', 'hotfix' ] + pre-release-weight: 30000 + support: + regex: ^support[/-] + mode: ContinuousDelivery + label: '' + increment: Patch + prevent-increment-of-merged-branch-version: true + track-merge-target: false + source-branches: [ 'main' ] + tracks-release-branches: false + is-release-branch: false + is-main-branch: true + pre-release-weight: 55000 +``` + +If you don't specify the regex, the built-in for that branch config will be +used (recommended). + +We don't envision many people needing to change most of these configuration +values, but here they are if you need to: + +### regex + +This is the regex which is used to match the current branch to the correct +branch configuration. + +[Named groups](https://learn.microsoft.com/en-us/dotnet/standard/base-types/grouping-constructs-in-regular-expressions#named-matched-subexpressions) can be used to dynamically label pre-releases based on the branch name, or parts of it. See [Label](#label) for more details and examples. + +### source-branches + +Because Git commits only refer to parent commits (not branches) GitVersion +sometimes cannot tell which branch the current branch was branched from. + +Take this commit graph + +```shell +* release/v1.0.0 * feature/foo +| ________________/ +|/ +* +* +* (main) +``` + +By looking at this graph, you cannot tell which of these scenarios happened: + +- feature/foo branches off release/v1.0.0 + - Branch release/v1.0.0 from main + - Branch feature/foo from release/v1.0.0 + - Add a commit to both release/v1.0.0 and feature/foo + - release/v1.0.0 is the base for feature/foo +- release/v1.0.0 branches off feature/foo + - Branch feature/foo from main + - Branch release/v1.0.0 from feature/foo + - Add a commit to both release/v1.0.0 and feature/foo + - feature/foo is the base for release/v1.0.0 + +Or put more simply, you cannot tell which branch was created first, +`release/v1.0.0` or `feature/foo`. + +To resolve this issue, we give GitVersion a hint about our branching workflows +by telling it what types of branches a branch can be created from. For example, +feature branches are, by default, configured to have the following source +branches: + +`source-branches: ['main', 'develop', 'feature', 'hotfix', 'support']` + +This means that we will never bother to evaluate pull request branches as merge +base options and being explicit in this way also improves the performance of +GitVersion. + +### is-source-branch-for + +The reverse of `source-branches`. This property was introduced to keep it easy +to extend GitVersion's config. + +It exists to make it easier to extend GitVersion's configuration. If only +`source-branches` exists and you add a new branch type, for instance +`unstable/`, you then need to re-define the `source-branches` configuration +value for existing branches (like feature/) to now include the new unstable +branch. + +A complete example: + +```yaml +branches: + unstable: + regex: ... + is-source-branch-for: ['main', 'develop', 'feature', 'hotfix', 'support'] +``` + +Without this configuration value you would have to do: + +```yaml +branches: + unstable: + regex: + feature: + source-branches: ['unstable', 'develop', 'feature', 'hotfix', 'support'] + release: + source-branches: ['unstable', 'develop'] + etc... +``` + +### branches + +The header for all the individual branch configuration. + +### mode + +Same as for the [global configuration, explained above](#mode). + +### label + +The pre-release label to use for this branch. Use the value `{BranchName}` as a placeholder to +insert the value of the named group `BranchName` from the [regular expression](#regex). + +For example: branch `feature/foo` would become a pre-release label +of `alpha.foo` with `label: 'alpha.{BranchName}'` and `regex: '^features?[/-](?.+)'`. + +Another example: branch `features/sc-12345/some-description` would become a pre-release label of `sc-12345` with `label: '{StoryNo}'` and `regex: '^features?[/-](?sc-\d+)[-/].+'`. + +**Note:** To clear a default use an empty string: `label: ''` + +### increment + +Same as for the [global configuration, explained above](#increment). + +### prevent-increment-of-merged-branch + +The increment of the branch merged to will be ignored, regardless of whether the merged branch has a version number or not, when this branch related property is set to true on the target branch. + +When `release-2.0.0` is merged into main, we want main to build `2.0.0`. If +`release-2.0.0` is merged into develop we want it to build `2.1.0`, this option +prevents incrementing after a versioned branch is merged. + +In a GitFlow-based repository, setting this option can have implications on the +`CommitsSinceVersionSource` output variable. It can rule out a potentially +better version source proposed by the `MergeMessageBaseVersionStrategy`. For +more details and an in-depth analysis, please see [the discussion][2506]. + +### prevent-increment-when-branch-merged + +The increment of the merged branch will be ignored when this branch related property is set to `true` on the source branch. + +### prevent-increment-when-current-commit-tagged + +This branch related property controls the behvior whether to use the tagged (value set to true) or the incremented (value set to false) semantic version. Defaults to true. + +### label-number-pattern + +Pull requests require us to extract the pre-release number out of the branch +name so `refs/pulls/534/merge` builds as `PullRequest.534`. This is a regex with +a named capture group called `number`. + +If the branch `mode` is set to `ContinuousDeployment`, then the extracted +`number` is appended to the name of the pre-release label and the number portion +is the number of commits since the last label. This enables consecutive commits to +the pull request branch to generate unique full semantic version numbers when +the branch is configured to use ContinuousDeployment mode. + +**Example usage:** + +```yaml +branches: + pull-request: + mode: ContinuousDeployment + label: PullRequest + increment: Inherit + track-merge-target: true + label-number-pattern: '[/-](?\d+)[-/]' +``` + +### track-merge-target + +Strategy which will look for tagged merge commits directly off the current +branch. For example `develop` → `release/1.0.0` → merge into `main` and tag +`1.0.0`. The tag is _not_ on develop, but develop should be version `1.0.0` now. + +### track-merge-message + +This property is a branch related property and gives the user the possibility to control the behavior of whether the merge +commit message will be interpreted as a next version or not. Consider we have a main branch and a `release/1.0.0` branch and +merge changes from `release/1.0.0` to the `main` branch. If `track-merge-message` is set to `true` then the next version will +be `1.0.0` otherwise `0.0.1`. + +### tracks-release-branches + +Indicates this branch config represents develop in GitFlow. + +### is-release-branch + +Indicates this branch config represents a release branch in GitFlow. + +### is-main-branch + +This indicates that this branch is a main branch. By default `main` and `support/*` are main branches. + +### pre-release-weight + +Provides a way to translate the `PreReleaseLabel` ([variables][variables]) to a numeric +value in order to avoid version collisions across different branches. For +example, a release branch created after "1.2.3-alpha.55" results in +"1.2.3-beta.1" and thus e.g. "1.2.3-alpha.4" and "1.2.3-beta.4" would have the +same file version: "1.2.3.4". One of the ways to use this value is to set +`assembly-file-versioning-format: +{Major}.{Minor}.{Patch}.{WeightedPreReleaseNumber}`. If the `pre-release-weight` +is set, it would be added to the `PreReleaseNumber` to get a final +`AssemblySemFileVer`, otherwise a branch specific default for +`pre-release-weight` will be used in the calculation. Related Issues [1145][1145] +and [1366][1366]. + +### semantic-version-format + +Specifies the semantic version format that is used when parsing the string. +Can be `Strict` - using the [regex](https://regex101.com/r/Ly7O1x/3/) +or `Loose` the old way of parsing. The default if not specified is `Strict` +Example of invalid `Strict`, but valid `Loose` + +``` log +1.2-alpha4 +01.02.03-rc03 +1.2.3.4 +``` + +### strategies + +Specifies which version strategy implementation (one ore more) will be used to determine the next version. Following values are supported and can be combined: + +- Fallback +- ConfiguredNextVersion +- MergeMessage +- TaggedCommit +- TrackReleaseBranches +- VersionInBranchName +- TrunkBased + +[1145]: https://github.com/GitTools/GitVersion/issues/1145 +[1366]: https://github.com/GitTools/GitVersion/issues/1366 +[2506]: https://github.com/GitTools/GitVersion/pull/2506#issuecomment-754754037 +[conventional-commits-config]: /docs/reference/version-increments#conventional-commit-messages +[conventional-commits]: https://www.conventionalcommits.org/ +[modes]: /docs/reference/modes +[variables]: /docs/reference/variables +[version-sources]: /docs/reference/version-sources From b367b0231e8616eb5ba86193d51ef9e66a70226d Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 18 Jul 2024 15:08:34 +0200 Subject: [PATCH 162/544] #4017 - ignore *source.md files on docs publishing --- build/docs/BuildLifetime.cs | 10 +++++++--- build/docs/Tasks/PublishDocs.cs | 2 +- docs/config.wyam | 1 - 3 files changed, 8 insertions(+), 5 deletions(-) delete mode 100644 docs/config.wyam diff --git a/build/docs/BuildLifetime.cs b/build/docs/BuildLifetime.cs index 262ef513bc..db7ab45317 100644 --- a/build/docs/BuildLifetime.cs +++ b/build/docs/BuildLifetime.cs @@ -20,14 +20,18 @@ public override void Setup(BuildContext context, ISetupContext info) Theme = "Samson", OutputPath = context.MakeAbsolute(Paths.ArtifactsDocs.Combine("preview")), RootPath = context.MakeAbsolute(Paths.Docs), - ConfigurationFile = context.MakeAbsolute(Paths.Docs.CombineWithFilePath("config.wyam")), Settings = new Dictionary { { "BaseEditUrl", "https://github.com/gittools/GitVersion/tree/main/docs/input/" }, { "SourceFiles", context.MakeAbsolute(Paths.Src) + "/**/{!bin,!obj,!packages,!*.Tests,!GitTools.*,}/**/*.cs" }, { "Title", "GitVersion" }, - { "IncludeGlobalNamespace", false } - } + { "IncludeGlobalNamespace", false }, + { "IgnoreFolders", "**/mdsource" } + }, + EnvironmentVariables = new Dictionary + { + { "DOTNET_ROLL_FORWARD", "Major" }, + }, }; context.StartGroup("Build Setup"); diff --git a/build/docs/Tasks/PublishDocs.cs b/build/docs/Tasks/PublishDocs.cs index 23f0e29056..c4463d3cb6 100644 --- a/build/docs/Tasks/PublishDocs.cs +++ b/build/docs/Tasks/PublishDocs.cs @@ -58,7 +58,7 @@ private static bool AnyDocsChanged(ICakeContext context) var filesChanged = context.GitDiff(Paths.Root, sourceCommit.Sha); const string path = "docs/"; - var docFileChanged = filesChanged.Any(file => file.OldPath.StartsWith(path) || file.Path.StartsWith(path) || file.Path.Contains("config.wyam")); + var docFileChanged = filesChanged.Any(file => file.OldPath.StartsWith(path) || file.Path.StartsWith(path)); return docFileChanged; } diff --git a/docs/config.wyam b/docs/config.wyam deleted file mode 100644 index c242a361ce..0000000000 --- a/docs/config.wyam +++ /dev/null @@ -1 +0,0 @@ -Pipelines["RenderPages"].Replace("WriteMetadata", new Headings(2)); From a7a6e01a1d91f7e2427bddc1c1cc9e58187cb58f Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 18 Jul 2024 13:09:03 +0000 Subject: [PATCH 163/544] #4017 - Docs changes --- docs/input/docs/reference/configuration.md | 55 +++++++++++++++++----- 1 file changed, 44 insertions(+), 11 deletions(-) diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index bf1541109f..35e874cd32 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -38,7 +38,9 @@ tag-prefix: '[abc]' The built-in configuration for the `GitFlow` workflow (`workflow: GitFlow/v1`) looks like: -```yaml + + +```yml assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' @@ -207,10 +209,14 @@ tracks-release-branches: false is-release-branch: false is-main-branch: false ``` +snippet source | anchor + The supported built-in configuration for the `GitHubFlow` workflow (`workflow: GitHubFlow/v1`) looks like: -```yaml + + +```yml assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' @@ -270,12 +276,12 @@ branches: increment: Inherit prevent-increment: when-current-commit-tagged: false + track-merge-message: true regex: ^features?[/-](?.+) source-branches: - main - release is-source-branch-for: [] - track-merge-message: true is-main-branch: false pre-release-weight: 30000 pull-request: @@ -286,13 +292,13 @@ branches: of-merged-branch: true when-current-commit-tagged: false label-number-pattern: '[/-](?\d+)' + track-merge-message: true regex: ^(pull|pull\-requests|pr)[/-] source-branches: - main - release - feature is-source-branch-for: [] - track-merge-message: true pre-release-weight: 30000 unknown: mode: ManualDeployment @@ -300,6 +306,7 @@ branches: increment: Inherit prevent-increment: when-current-commit-tagged: false + track-merge-message: false regex: (?.+) source-branches: - main @@ -307,7 +314,6 @@ branches: - feature - pull-request is-source-branch-for: [] - track-merge-message: false is-main-branch: false ignore: sha: [] @@ -328,10 +334,14 @@ tracks-release-branches: false is-release-branch: false is-main-branch: false ``` +snippet source | anchor + The preview built-in configuration (experimental usage only) for the `TrunkBased` workflow (`workflow: TrunkBased/preview1`) looks like: -```yaml + + +```yml assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' @@ -346,8 +356,8 @@ merge-message-formats: {} update-build-number: true semantic-version-format: Strict strategies: -- Mainline - ConfiguredNextVersion +- Mainline branches: main: mode: ContinuousDeployment @@ -355,46 +365,65 @@ branches: increment: Patch prevent-increment: of-merged-branch: true - when-current-commit-tagged: true track-merge-target: false + track-merge-message: true regex: ^master$|^main$ source-branches: [] + is-source-branch-for: [] tracks-release-branches: false is-release-branch: false is-main-branch: true pre-release-weight: 55000 feature: + mode: ContinuousDelivery + label: '{BranchName}' increment: Minor - regex: ^features?[/-](?.+) prevent-increment: when-current-commit-tagged: false + track-merge-message: true + regex: ^features?[/-](?.+) source-branches: - main + is-source-branch-for: [] + is-main-branch: false pre-release-weight: 30000 hotfix: + mode: ContinuousDelivery + label: '{BranchName}' increment: Patch - regex: ^hotfix(es)?[/-](?.+) prevent-increment: when-current-commit-tagged: false + regex: ^hotfix(es)?[/-](?.+) source-branches: - main + is-source-branch-for: [] + is-release-branch: true + is-main-branch: false pre-release-weight: 30000 pull-request: mode: ContinuousDelivery label: PullRequest increment: Inherit + prevent-increment: + of-merged-branch: true + when-current-commit-tagged: false label-number-pattern: '[/-](?\d+)' + track-merge-message: true regex: ^(pull|pull\-requests|pr)[/-] source-branches: - main + - feature + - hotfix + is-source-branch-for: [] pre-release-weight: 30000 unknown: increment: Patch - regex: (?.+) prevent-increment: when-current-commit-tagged: false + regex: (?.+) source-branches: - main + is-source-branch-for: [] pre-release-weight: 30000 ignore: sha: [] @@ -409,10 +438,14 @@ track-merge-target: false track-merge-message: true commit-message-incrementing: Enabled regex: '' +source-branches: [] +is-source-branch-for: [] tracks-release-branches: false is-release-branch: false is-main-branch: false ``` +snippet source | anchor + The details of the available options are as follows: From 083204bb9ed08a0144ac8fe1546813ce73c0b1bd Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 18 Jul 2024 15:49:23 +0200 Subject: [PATCH 164/544] #4017 - fix Html-Proofer --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 3aea86e6e8..6eb678197f 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -110,7 +110,7 @@ jobs: uses: chabad360/htmlproofer@master with: directory: ./artifacts/docs/preview - arguments: --ignore-urls /api/,/docs/ --allow-hash-href --assume-extension --disable-external --no-check_external_hash + arguments: --ignore-urls /api/,/docs/ --allow-hash-href --allow-missing-href --assume-extension --disable-external --no-check_external_hash - name: '[Reviewdog Reporter]' id: reporter From 6098afea85a7d87cf1e56eef6153a575f14cb9fd Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Fri, 19 Jul 2024 22:31:31 +0200 Subject: [PATCH 165/544] (build) improve build constants --- .github/workflows/_unit_tests.yml | 6 +++--- build/.run/Artifacts DotnetTool Test.run.xml | 2 +- build/.run/Artifacts MsBuildCore Test.run.xml | 2 +- build/.run/Artifacts Native Test.run.xml | 2 +- build/.run/Artifacts Prepare.run.xml | 2 +- build/.run/Artifacts Test.run.xml | 2 +- build/artifacts/BuildLifetime.cs | 2 +- build/artifacts/Tasks/ArtifactsMsBuildFullTest.cs | 3 ++- build/build/Tasks/BuildPrepare.cs | 4 ++-- build/build/Tasks/Package/PackagePrepare.cs | 2 +- build/build/Tasks/Test/UnitTest.cs | 8 ++++---- build/common/Utilities/Constants.cs | 8 +------- build/common/Utilities/ContextExtensions.cs | 2 +- build/docker/BuildLifetime.cs | 2 +- 14 files changed, 21 insertions(+), 26 deletions(-) diff --git a/.github/workflows/_unit_tests.yml b/.github/workflows/_unit_tests.yml index a45dd15db9..59aff4df34 100644 --- a/.github/workflows/_unit_tests.yml +++ b/.github/workflows/_unit_tests.yml @@ -7,14 +7,14 @@ env: jobs: unit_test: - name: ${{ matrix.os }} - ${{ matrix.targetFramework }} + name: ${{ matrix.os }} - net${{ matrix.targetFramework }} env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} strategy: fail-fast: false matrix: os: [windows-latest, ubuntu-latest, macos-13, macos-14] - targetFramework: [ 'net8.0', 'net7.0', 'net6.0' ] + targetFramework: [ '6.0', '7.0', '8.0' ] runs-on: ${{ matrix.os }} steps: @@ -34,6 +34,6 @@ jobs: - name: Test Summary uses: test-summary/action@v2.4 - if: matrix.targetFramework == 'net8.0' + if: matrix.targetFramework == '8.0' with: paths: artifacts/test-results/*.results.xml diff --git a/build/.run/Artifacts DotnetTool Test.run.xml b/build/.run/Artifacts DotnetTool Test.run.xml index 20fd374236..d23b2b8ed0 100644 --- a/build/.run/Artifacts DotnetTool Test.run.xml +++ b/build/.run/Artifacts DotnetTool Test.run.xml @@ -1,7 +1,7 @@

public void MakeShallow() { - GitTestExtensions.ExecuteGitCmd($"-C {RepositoryPath} pull --depth 1"); - GitTestExtensions.ExecuteGitCmd($"-C {RepositoryPath} gc --prune=all"); + GitTestExtensions.ExecuteGitCmd($"-C {RepositoryPath} pull --depth 1", "."); + GitTestExtensions.ExecuteGitCmd($"-C {RepositoryPath} gc --prune=all", "."); } public void Fetch(string remote, FetchOptions? options = null) diff --git a/src/GitVersion.Testing/GitTestExtensions.cs b/src/GitVersion.Testing/GitTestExtensions.cs index ed920fabb0..1c5f1f3420 100644 --- a/src/GitVersion.Testing/GitTestExtensions.cs +++ b/src/GitVersion.Testing/GitTestExtensions.cs @@ -69,7 +69,7 @@ public static Commit CreatePullRequestRef(this IRepository repository, string fr return commit; } - public static void ExecuteGitCmd(string gitCmd, Action? writer = null) + public static void ExecuteGitCmd(string gitCmd, string workingDirectory, Action? writer = null) { var output = new StringBuilder(); try @@ -80,7 +80,7 @@ public static void ExecuteGitCmd(string gitCmd, Action? writer = null) null, "git", gitCmd, - "."); + workingDirectory); } catch (FileNotFoundException exception) when (exception.FileName == "git") { diff --git a/src/GitVersion.Testing/GitVersion.Testing.csproj b/src/GitVersion.Testing/GitVersion.Testing.csproj index 98f9a03956..48fca60324 100644 --- a/src/GitVersion.Testing/GitVersion.Testing.csproj +++ b/src/GitVersion.Testing/GitVersion.Testing.csproj @@ -1,4 +1,4 @@ - + false @@ -7,6 +7,5 @@ - diff --git a/src/GitVersion.Core/Helpers/ProcessHelper.cs b/src/GitVersion.Testing/Helpers/ProcessHelper.cs similarity index 99% rename from src/GitVersion.Core/Helpers/ProcessHelper.cs rename to src/GitVersion.Testing/Helpers/ProcessHelper.cs index 7706fe1324..b5f269ce95 100644 --- a/src/GitVersion.Core/Helpers/ProcessHelper.cs +++ b/src/GitVersion.Testing/Helpers/ProcessHelper.cs @@ -1,9 +1,9 @@ using System.ComponentModel; using System.Runtime.InteropServices; -namespace GitVersion.Helpers; +namespace GitVersion.Testing; -internal static class ProcessHelper +public static class ProcessHelper { private static readonly object LockObject = new(); diff --git a/src/mark-shipped.ps1 b/src/mark-shipped.ps1 old mode 100644 new mode 100755 index df5047a785..45d6270d36 --- a/src/mark-shipped.ps1 +++ b/src/mark-shipped.ps1 @@ -1,3 +1,5 @@ +#! /usr/bin/env pwsh + [CmdletBinding(PositionalBinding = $false)] param () From 70ee4e0b38be487e7b42d70a134fb3a71a34ef11 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 9 Aug 2024 15:19:44 +0000 Subject: [PATCH 182/544] (deps): Bump NUnit.Analyzers Bumps the analyzers group with 1 update in the /src directory: [NUnit.Analyzers](https://github.com/nunit/nunit.analyzers). Updates `NUnit.Analyzers` from 4.2.0 to 4.3.0 - [Release notes](https://github.com/nunit/nunit.analyzers/releases) - [Changelog](https://github.com/nunit/nunit.analyzers/blob/master/CHANGES.md) - [Commits](https://github.com/nunit/nunit.analyzers/compare/4.2.0...4.3.0) --- updated-dependencies: - dependency-name: NUnit.Analyzers dependency-type: direct:production update-type: version-update:semver-minor dependency-group: analyzers ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- .../Tasks/GenerateGitVersionInformationTest.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index d733d56241..7ddb66dae2 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -32,7 +32,7 @@ - + diff --git a/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs b/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs index cd9a1c7588..a98a3d224e 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs @@ -245,7 +245,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); var fileContent = File.ReadAllText(generatedFilePath); - TestContext.WriteLine(fileContent); + TestContext.Out.WriteLine(fileContent); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Major), "1")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Minor), "2")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Patch), "4")); From bcdbb435ed5bb72620ef936b2d3615664ab66916 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Aug 2024 15:55:39 +0000 Subject: [PATCH 183/544] (deps): Bump NUnit from 4.1.0 to 4.2.0 in /src Bumps [NUnit](https://github.com/nunit/nunit) from 4.1.0 to 4.2.0. - [Release notes](https://github.com/nunit/nunit/releases) - [Changelog](https://github.com/nunit/nunit/blob/main/CHANGES.md) - [Commits](https://github.com/nunit/nunit/compare/4.1.0...4.2.0) --- updated-dependencies: - dependency-name: NUnit dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 7ddb66dae2..f737860217 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -31,7 +31,7 @@ - + From ab990ea5bc72468efeb128da36ece06347a15075 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Fri, 23 Aug 2024 21:36:32 +0200 Subject: [PATCH 184/544] update dotnet sdk to 8.0.401 --- build/common/Utilities/Tools.cs | 2 +- global.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/common/Utilities/Tools.cs b/build/common/Utilities/Tools.cs index f6bbbbf68f..96aa0e5a60 100644 --- a/build/common/Utilities/Tools.cs +++ b/build/common/Utilities/Tools.cs @@ -6,6 +6,6 @@ public class Tools public static readonly Dictionary Versions = new() { - { CodecovUploaderCmd, "0.7.3" }, + { CodecovUploaderCmd, "0.8.0" } }; } diff --git a/global.json b/global.json index e367ffcf00..f615276dd3 100644 --- a/global.json +++ b/global.json @@ -5,6 +5,6 @@ "src" ], "sdk": { - "version": "8.0.303" + "version": "8.0.401" } } From 654638dd5a3b8a293dc1a075bb0d83bc8071a544 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 Aug 2024 20:00:53 +0000 Subject: [PATCH 185/544] (deps): Bump NUnit from 4.2.0 to 4.2.1 in /src Bumps [NUnit](https://github.com/nunit/nunit) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/nunit/nunit/releases) - [Changelog](https://github.com/nunit/nunit/blob/main/CHANGES.md) - [Commits](https://github.com/nunit/nunit/compare/4.2.0...4.2.1) --- updated-dependencies: - dependency-name: NUnit dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index f737860217..68fc7bc2ad 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -31,7 +31,7 @@ - + From 6722b7189e203959e22d88f9a3e59cc6085bf2e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 24 Aug 2024 06:19:24 +0000 Subject: [PATCH 186/544] (deps): Bump the microsoft group across 2 directories with 4 updates Bumps the microsoft group with 1 update in the /new-cli directory: [Microsoft.CodeAnalysis.CSharp](https://github.com/dotnet/roslyn). Bumps the microsoft group with 4 updates in the /src directory: [Microsoft.CodeAnalysis.CSharp](https://github.com/dotnet/roslyn), [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest), [Microsoft.Build](https://github.com/dotnet/msbuild) and [Microsoft.Build.Utilities.Core](https://github.com/dotnet/msbuild). Updates `Microsoft.CodeAnalysis.CSharp` from 4.10.0 to 4.11.0 - [Release notes](https://github.com/dotnet/roslyn/releases) - [Changelog](https://github.com/dotnet/roslyn/blob/main/docs/Breaking%20API%20Changes.md) - [Commits](https://github.com/dotnet/roslyn/commits) Updates `Microsoft.CodeAnalysis.CSharp` from 4.10.0 to 4.11.0 - [Release notes](https://github.com/dotnet/roslyn/releases) - [Changelog](https://github.com/dotnet/roslyn/blob/main/docs/Breaking%20API%20Changes.md) - [Commits](https://github.com/dotnet/roslyn/commits) Updates `Microsoft.NET.Test.Sdk` from 17.10.0 to 17.11.0 - [Release notes](https://github.com/microsoft/vstest/releases) - [Changelog](https://github.com/microsoft/vstest/blob/main/docs/releases.md) - [Commits](https://github.com/microsoft/vstest/compare/v17.10.0...v17.11.0) Updates `Microsoft.Build` from 17.10.4 to 17.11.4 - [Release notes](https://github.com/dotnet/msbuild/releases) - [Changelog](https://github.com/dotnet/msbuild/blob/main/documentation/Changelog.md) - [Commits](https://github.com/dotnet/msbuild/compare/v17.10.4...v17.11.4) Updates `Microsoft.Build.Utilities.Core` from 17.10.4 to 17.11.4 - [Release notes](https://github.com/dotnet/msbuild/releases) - [Changelog](https://github.com/dotnet/msbuild/blob/main/documentation/Changelog.md) - [Commits](https://github.com/dotnet/msbuild/compare/v17.10.4...v17.11.4) --- updated-dependencies: - dependency-name: Microsoft.CodeAnalysis.CSharp dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: Microsoft.CodeAnalysis.CSharp dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: Microsoft.NET.Test.Sdk dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: Microsoft.Build dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: Microsoft.Build.Utilities.Core dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- src/Directory.Packages.props | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 324ebd07a9..6283af3557 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -6,7 +6,7 @@ - + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 68fc7bc2ad..ea65da4ed0 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -6,9 +6,9 @@ - - - + + + @@ -22,13 +22,13 @@ - - + + - + From c2946bc736229207037dca14ef1d72e44a9c5b0e Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 26 Aug 2024 22:37:40 +0200 Subject: [PATCH 187/544] update winget link --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 85f868ad1a..b9498ad3b2 100644 --- a/README.md +++ b/README.md @@ -65,13 +65,12 @@ from The Noun Project. [choco-badge]: https://img.shields.io/chocolatey/v/gitversion.portable.svg?logo=nuget [gvt]: https://www.nuget.org/packages/GitVersion.MsBuild [gvt-badge]: https://img.shields.io/nuget/v/GitVersion.MsBuild.svg?logo=nuget -[gitversiontask]: https://www.nuget.org/packages/GitVersionTask/ [gvgt]: https://www.nuget.org/packages/GitVersion.Tool [gvgt-badge]: https://img.shields.io/nuget/v/GitVersion.Tool.svg?logo=nuget [brew]: https://formulae.brew.sh/formula/gitversion [brew-badge]: https://img.shields.io/homebrew/v/gitversion.svg?logo=homebrew [winget]: https://github.com/microsoft/winget-pkgs/tree/master/manifests/g/GitTools/GitVersion -[winget-badge]: https://img.shields.io/badge/winget-v6.0.0-blue.svg?logo=microsoft +[winget-badge]: https://img.shields.io/badge/winget-v6.0.2-blue.svg?logo=microsoft [dockerhub]: https://hub.docker.com/r/gittools/gitversion/ [dockerhub-badge]: https://img.shields.io/docker/pulls/gittools/gitversion.svg?logo=docker [az-pipeline-task]: https://marketplace.visualstudio.com/items?itemName=gittools.gittools From f07f4e05674aad4f5676ee583700c679749699bb Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Fri, 30 Aug 2024 10:32:03 +0200 Subject: [PATCH 188/544] add link to docs version 5.12.0 --- .github/workflows/docs.yml | 2 +- docs/input/_Navbar.cshtml | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 docs/input/_Navbar.cshtml diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 6eb678197f..bc3fb3b7aa 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -110,7 +110,7 @@ jobs: uses: chabad360/htmlproofer@master with: directory: ./artifacts/docs/preview - arguments: --ignore-urls /api/,/docs/ --allow-hash-href --allow-missing-href --assume-extension --disable-external --no-check_external_hash + arguments: --ignore-urls /api/,/docs/,/5.12.0/ --allow-hash-href --allow-missing-href --assume-extension --disable-external --no-check_external_hash - name: '[Reviewdog Reporter]' id: reporter diff --git a/docs/input/_Navbar.cshtml b/docs/input/_Navbar.cshtml new file mode 100644 index 0000000000..3a1031af19 --- /dev/null +++ b/docs/input/_Navbar.cshtml @@ -0,0 +1,13 @@ +@{ + List> pages = new List> + { + Tuple.Create("Documentation", Context.GetLink("docs")), + Tuple.Create("API", Context.GetLink("api")), + Tuple.Create(" 5.12.0", "/5.12.0/docs"), + }; + foreach(Tuple p in pages) + { + string active = Context.GetLink(Document).StartsWith(p.Item2) ? "active" : null; +
  • @Html.Raw(p.Item1)
  • + } +} \ No newline at end of file From de1638bdf6363391336b65a4fc8abb4bf40ec4b3 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Fri, 30 Aug 2024 14:10:52 +0200 Subject: [PATCH 189/544] format html after the docs are generated before pushing --- build/Directory.Packages.props | 1 + build/docs/Tasks/PublishDocs.cs | 2 ++ build/docs/docs.csproj | 1 + docs/input/docs/learn/branching-strategies/githubflow/index.md | 2 +- 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/build/Directory.Packages.props b/build/Directory.Packages.props index 3632fa589a..e9174ae972 100644 --- a/build/Directory.Packages.props +++ b/build/Directory.Packages.props @@ -13,6 +13,7 @@ + diff --git a/build/docs/Tasks/PublishDocs.cs b/build/docs/Tasks/PublishDocs.cs index c4463d3cb6..7fa1ce3c9a 100644 --- a/build/docs/Tasks/PublishDocs.cs +++ b/build/docs/Tasks/PublishDocs.cs @@ -1,4 +1,5 @@ using Cake.Git; +using Cake.Npx; using Cake.Wyam; using Common.Utilities; @@ -80,6 +81,7 @@ private static void PublishDocumentation(BuildContext context) context.WyamSettings.OutputPath = publishFolder; context.WyamSettings.NoClean = true; context.Wyam(context.WyamSettings); + context.Npx("prettier", arguments: "--write **/*.html", configureSettings: settings => settings.WorkingDirectory = publishFolder); } var schemaTargetDir = publishFolder.Combine("schemas"); diff --git a/build/docs/docs.csproj b/build/docs/docs.csproj index a210fc579f..0fcfc39a3f 100644 --- a/build/docs/docs.csproj +++ b/build/docs/docs.csproj @@ -8,6 +8,7 @@ +
    diff --git a/docs/input/docs/learn/branching-strategies/githubflow/index.md b/docs/input/docs/learn/branching-strategies/githubflow/index.md index 89ae283bfa..a0c76e72d0 100644 --- a/docs/input/docs/learn/branching-strategies/githubflow/index.md +++ b/docs/input/docs/learn/branching-strategies/githubflow/index.md @@ -15,7 +15,7 @@ GitHubFlow is in a nutshell: 2. Create a feature branch `git checkout -b myFeatureBranch` 3. Do the feature/work 4. Push feature branch to [origin](/docs/learn/git-setup#origin) -5. Create pull request from origin/ -> upstream/main +5. Create pull request from origin/{featureBranch} -> upstream/main 6. Review, fix raised comments, merge your PR or even better, get someone else to. The main rule of GitHub Flow is that main should _always_ be deployable. From a25d30e66115caf4bb5d0013b19370b879c475ab Mon Sep 17 00:00:00 2001 From: Alexander Rose Date: Tue, 3 Sep 2024 09:13:58 +0200 Subject: [PATCH 190/544] create regression test --- ...rlyOutputNamespaceDeclaration.approved.txt | 59 +++++++++++++++++++ .../Output/GitVersionInfoGeneratorTests.cs | 40 +++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt diff --git a/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt b/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt new file mode 100644 index 0000000000..14109e5d29 --- /dev/null +++ b/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// GitVersion +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +#if NET20 || NET35 || NETCOREAPP1_0 || NETCOREAPP1_1 || NETSTANDARD1_0 || NETSTANDARD1_1 || NETSTANDARD1_2 || NETSTANDARD1_3 || NETSTANDARD1_4 || NETSTANDARD1_5 || NETSTANDARD1_6 +namespace System.Diagnostics.CodeAnalysis +{ + [global::System.AttributeUsage( + global::System.AttributeTargets.Assembly | + global::System.AttributeTargets.Class | + global::System.AttributeTargets.Struct | + global::System.AttributeTargets.Constructor | + global::System.AttributeTargets.Method | + global::System.AttributeTargets.Property | + global::System.AttributeTargets.Event, + Inherited = false, AllowMultiple = false)] + internal sealed class ExcludeFromCodeCoverageAttribute : global::System.Attribute { } +} +#endif + +namespace My.Custom.Namespace +{ + [global::System.Runtime.CompilerServices.CompilerGenerated] + [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] + static class GitVersionInformation + { + public const string AssemblySemFileVer = "1.2.3.0"; + public const string AssemblySemVer = "1.2.3.0"; + public const string BranchName = "feature1"; + public const string BuildMetaData = "5"; + public const string CommitDate = "2014-03-06"; + public const string CommitsSinceVersionSource = "5"; + public const string EscapedBranchName = "feature1"; + public const string FullBuildMetaData = "5.Branch.feature1.Sha.commitSha"; + public const string FullSemVer = "1.2.3-unstable.4+5"; + public const string InformationalVersion = "1.2.3-unstable.4+5.Branch.feature1.Sha.commitSha"; + public const string Major = "1"; + public const string MajorMinorPatch = "1.2.3"; + public const string Minor = "2"; + public const string Patch = "3"; + public const string PreReleaseLabel = "unstable"; + public const string PreReleaseLabelWithDash = "-unstable"; + public const string PreReleaseNumber = "4"; + public const string PreReleaseTag = "unstable.4"; + public const string PreReleaseTagWithDash = "-unstable.4"; + public const string SemVer = "1.2.3-unstable.4"; + public const string Sha = "commitSha"; + public const string ShortSha = "commitShortSha"; + public const string UncommittedChanges = "0"; + public const string VersionSourceSha = "versionSourceSha"; + public const string WeightedPreReleaseNumber = "4"; + } +} diff --git a/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs b/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs index e4b8964326..2fa8cb6a09 100644 --- a/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs +++ b/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs @@ -49,4 +49,44 @@ public void ShouldCreateFile(string fileExtension) DirectoryHelper.DeleteDirectory(directory); } + + /// + /// Regression test for issue #4196 (https://github.com/GitTools/GitVersion/issues/4196) + /// + [TestCase] + public void ShouldProperlyOutputNamespaceDeclaration() + { + const string fileExtension = "cs"; + const string targetNamespace = "My.Custom.Namespace"; + + var directory = PathHelper.Combine(PathHelper.GetTempPath(), "GitVersionInfoGeneratorTests", Guid.NewGuid().ToString()); + if (!Directory.Exists(directory)) + Directory.CreateDirectory(directory); + var fileName = "GitVersionInformation.g." + fileExtension; + var fullPath = PathHelper.Combine(directory, fileName); + + var semanticVersion = new SemanticVersion + { + Major = 1, + Minor = 2, + Patch = 3, + PreReleaseTag = "unstable4", + BuildMetaData = new("versionSourceSha", 5, + "feature1", "commitSha", "commitShortSha", DateTimeOffset.Parse("2014-03-06 23:59:59Z"), 0) + }; + + var sp = ConfigureServices(); + + var fileSystem = sp.GetRequiredService(); + var variableProvider = sp.GetRequiredService(); + + var variables = variableProvider.GetVariablesFor(semanticVersion, EmptyConfigurationBuilder.New.Build(), 0); + using var generator = sp.GetRequiredService(); + + generator.Execute(variables, new(directory, fileName, fileExtension, targetNamespace)); + + fileSystem.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved", fileExtension))); + + DirectoryHelper.DeleteDirectory(directory); + } } From be4810c4daa65bd4d045d2f1e6ae5c9f2a83f9a6 Mon Sep 17 00:00:00 2001 From: Alexander Rose Date: Tue, 3 Sep 2024 09:15:24 +0200 Subject: [PATCH 191/544] fix syntax error --- src/GitVersion.Output/GitVersionInfo/GitVersionInfoGenerator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GitVersion.Output/GitVersionInfo/GitVersionInfoGenerator.cs b/src/GitVersion.Output/GitVersionInfo/GitVersionInfoGenerator.cs index 2756280988..683ede16e3 100644 --- a/src/GitVersion.Output/GitVersionInfo/GitVersionInfoGenerator.cs +++ b/src/GitVersion.Output/GitVersionInfo/GitVersionInfoGenerator.cs @@ -61,7 +61,7 @@ public void Execute(GitVersionVariables variables, GitVersionInfoContext context string getTargetNamespace(string extension) => extension switch { ".vb" => context.TargetNamespace ?? "Global", - ".cs" => context.TargetNamespace != null ? $"{PathHelper.NewLine}namespace {context.TargetNamespace};" : "", + ".cs" => context.TargetNamespace != null ? $"{PathHelper.NewLine}namespace {context.TargetNamespace}" : "", ".fs" => context.TargetNamespace ?? "global", _ => targetNamespaceSentinelValue, }; From ec6080a3929010d5d5736d043c38f704e79ec159 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 08:41:18 +0000 Subject: [PATCH 192/544] (deps): Bump YamlDotNet from 16.0.0 to 16.1.0 in /src Bumps [YamlDotNet](https://github.com/aaubry/YamlDotNet) from 16.0.0 to 16.1.0. - [Release notes](https://github.com/aaubry/YamlDotNet/releases) - [Commits](https://github.com/aaubry/YamlDotNet/compare/v16.0.0...v16.1.0) --- updated-dependencies: - dependency-name: YamlDotNet dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index ea65da4ed0..9aca5e03ac 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -36,7 +36,7 @@ - + \ No newline at end of file From 46a5ad40161006932d3faeb7c482f6a2047cb07a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 14:52:22 +0000 Subject: [PATCH 193/544] (deps): Bump NUnit from 4.2.1 to 4.2.2 in /src Bumps [NUnit](https://github.com/nunit/nunit) from 4.2.1 to 4.2.2. - [Release notes](https://github.com/nunit/nunit/releases) - [Changelog](https://github.com/nunit/nunit/blob/main/CHANGES.md) - [Commits](https://github.com/nunit/nunit/compare/4.2.1...4.2.2) --- updated-dependencies: - dependency-name: NUnit dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 9aca5e03ac..74eafb24a1 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -31,7 +31,7 @@ - + From 2eed1b767c646e35a1a1b6595b60cec9914ff115 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 15:48:34 +0000 Subject: [PATCH 194/544] (deps): Bump Microsoft.NET.Test.Sdk Bumps the microsoft group with 1 update in the /src directory: [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest). Updates `Microsoft.NET.Test.Sdk` from 17.11.0 to 17.11.1 - [Release notes](https://github.com/microsoft/vstest/releases) - [Changelog](https://github.com/microsoft/vstest/blob/main/docs/releases.md) - [Commits](https://github.com/microsoft/vstest/compare/v17.11.0...v17.11.1) --- updated-dependencies: - dependency-name: Microsoft.NET.Test.Sdk dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 74eafb24a1..fd7269f72e 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -28,7 +28,7 @@ - + From e507abf4bb52def91706698c528f58a62bd4c951 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Fri, 30 Aug 2024 16:41:09 +0200 Subject: [PATCH 195/544] Move regex patterns to a common file --- .../GitVersion.Common.csproj | 1 + .../ArgumentParserExtensions.cs | 12 ++- .../BranchConfiguration.cs | 4 +- .../Builders/BranchConfigurationBuilder.cs | 2 +- .../Builders/ConfigurationBuilderBase.cs | 2 +- .../Builders/GitFlowConfigurationBuilder.cs | 27 +++--- .../GitHubFlowConfigurationBuilder.cs | 21 ++--- .../TrunkBasedConfigurationBuilder.cs | 29 +++---- .../GitVersionConfiguration.cs | 19 +++-- .../IntegrationTests/IgnoreCommitScenarios.cs | 24 +++--- .../NextVersionCalculatorTests.cs | 2 +- src/GitVersion.Core/Core/RegexPatterns.cs | 83 +++++++++++++++++++ .../Helpers/StringFormatWith.cs | 9 +- src/GitVersion.Core/Logging/Log.cs | 5 +- src/GitVersion.Core/MergeMessage.cs | 23 ++--- src/GitVersion.Core/SemVer/SemanticVersion.cs | 14 +--- .../SemVer/SemanticVersionBuildMetaData.cs | 10 +-- .../SemVer/SemanticVersionPreReleaseTag.cs | 8 +- .../IncrementStrategyFinder.cs | 28 ++----- .../Mainline/NonTrunk/CommitOnNonTrunk.cs | 2 +- .../NonTrunk/CommitOnNonTrunkBranchedBase.cs | 2 +- .../CommitOnNonTrunkWithPreReleaseTagBase.cs | 2 +- .../CommitOnNonTrunkWithStableTagBase.cs | 2 +- .../LastCommitOnNonTrunkWithPreReleaseTag.cs | 2 +- .../LastCommitOnNonTrunkWithStableTag.cs | 2 +- .../NonTrunk/LastMergeCommitOnNonTrunk.cs | 2 +- .../Mainline/Trunk/CommitOnTrunk.cs | 2 +- .../Trunk/CommitOnTrunkBranchedBase.cs | 2 +- .../CommitOnTrunkWithPreReleaseTagBase.cs | 2 +- .../Trunk/CommitOnTrunkWithStableTagBase.cs | 2 +- .../LastCommitOnTrunkWithPreReleaseTag.cs | 2 +- .../Trunk/LastCommitOnTrunkWithStableTag.cs | 2 +- .../Mainline/Trunk/MergeCommitOnTrunkBase.cs | 4 +- .../NextVersionCalculator.cs | 2 +- .../ConfiguredNextVersionVersionStrategy.cs | 2 +- .../FallbacktVersionStrategy.cs | 4 +- .../TaggedCommitVersionStrategy.cs | 2 +- .../TrackReleaseBranchesVersionStrategy.cs | 2 +- .../VersionInBranchNameVersionStrategy.cs | 2 +- .../AssemblyInfo/AssemblyInfoFileUpdater.cs | 19 ++--- 40 files changed, 222 insertions(+), 164 deletions(-) create mode 100644 src/GitVersion.Core/Core/RegexPatterns.cs diff --git a/new-cli/GitVersion.Common/GitVersion.Common.csproj b/new-cli/GitVersion.Common/GitVersion.Common.csproj index f17ab3ec19..96f23e8568 100644 --- a/new-cli/GitVersion.Common/GitVersion.Common.csproj +++ b/new-cli/GitVersion.Common/GitVersion.Common.csproj @@ -6,6 +6,7 @@ + diff --git a/src/GitVersion.App/ArgumentParserExtensions.cs b/src/GitVersion.App/ArgumentParserExtensions.cs index 8370c70d28..d2b9d1f5b0 100644 --- a/src/GitVersion.App/ArgumentParserExtensions.cs +++ b/src/GitVersion.App/ArgumentParserExtensions.cs @@ -1,4 +1,4 @@ -using System.Text.RegularExpressions; +using GitVersion.Core; using GitVersion.Helpers; namespace GitVersion; @@ -39,9 +39,13 @@ public static bool IsValidPath(this string? path) } public static bool IsSwitchArgument(this string? value) - => value != null - && (value.StartsWith('-') || value.StartsWith('/')) - && !Regex.Match(value, @"/\w+:").Success; //Exclude msbuild & project parameters in form /blah:, which should be parsed as values, not switch names. + { + var patternRegex = RegexPatterns.Common.SwitchArgumentRegex; + return value != null + && (value.StartsWith('-') || value.StartsWith('/')) + && !patternRegex.Match(value).Success; + //Exclude msbuild & project parameters in form /blah:, which should be parsed as values, not switch names. + } public static bool IsSwitch(this string? value, string switchName) { diff --git a/src/GitVersion.Configuration/BranchConfiguration.cs b/src/GitVersion.Configuration/BranchConfiguration.cs index 6547ea51ac..b49054a7d3 100644 --- a/src/GitVersion.Configuration/BranchConfiguration.cs +++ b/src/GitVersion.Configuration/BranchConfiguration.cs @@ -90,7 +90,7 @@ public virtual IBranchConfiguration Inherit(IBranchConfiguration configuration) Increment = Increment == IncrementStrategy.Inherit ? configuration.Increment : Increment, DeploymentMode = DeploymentMode ?? configuration.DeploymentMode, Label = Label ?? configuration.Label, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = PreventIncrement.OfMergedBranch ?? configuration.PreventIncrement.OfMergedBranch, WhenBranchMerged = PreventIncrement.WhenBranchMerged ?? configuration.PreventIncrement.WhenBranchMerged, @@ -117,7 +117,7 @@ public virtual IBranchConfiguration Inherit(EffectiveConfiguration configuration Increment = Increment == IncrementStrategy.Inherit ? configuration.Increment : Increment, DeploymentMode = DeploymentMode ?? configuration.DeploymentMode, Label = Label ?? configuration.Label, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = PreventIncrement.OfMergedBranch ?? configuration.PreventIncrementOfMergedBranch, WhenBranchMerged = PreventIncrement.WhenBranchMerged ?? configuration.PreventIncrementWhenBranchMerged, diff --git a/src/GitVersion.Configuration/Builders/BranchConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/BranchConfigurationBuilder.cs index d3ac3080dd..db36d2b006 100644 --- a/src/GitVersion.Configuration/Builders/BranchConfigurationBuilder.cs +++ b/src/GitVersion.Configuration/Builders/BranchConfigurationBuilder.cs @@ -177,7 +177,7 @@ public virtual BranchConfigurationBuilder WithConfiguration(IBranchConfiguration IsMainBranch = isMainBranch, IsReleaseBranch = isReleaseBranch, LabelNumberPattern = labelNumberPattern, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = preventIncrementOfMergedBranch, WhenBranchMerged = preventIncrementWhenBranchMerged, diff --git a/src/GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs b/src/GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs index bef65714d7..465b16c59c 100644 --- a/src/GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs +++ b/src/GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs @@ -423,7 +423,7 @@ public virtual IGitVersionConfiguration Build() IsMainBranch = this.isMainBranch, IsReleaseBranch = this.isReleaseBranch, LabelNumberPattern = this.labelNumberPattern, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = this.preventIncrementOfMergedBranch, WhenBranchMerged = this.preventIncrementWhenBranchMerged, diff --git a/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs index e29e124530..b7ed9aff44 100644 --- a/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs +++ b/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs @@ -1,3 +1,4 @@ +using GitVersion.Core; using GitVersion.VersionCalculation; namespace GitVersion.Configuration; @@ -13,10 +14,10 @@ private GitFlowConfigurationBuilder() AssemblyFileVersioningScheme = ConfigurationConstants.DefaultAssemblyFileVersioningScheme, AssemblyVersioningScheme = ConfigurationConstants.DefaultAssemblyVersioningScheme, CommitDateFormat = ConfigurationConstants.DefaultCommitDateFormat, - MajorVersionBumpMessage = IncrementStrategyFinder.DefaultMajorPattern, - MinorVersionBumpMessage = IncrementStrategyFinder.DefaultMinorPattern, - NoBumpMessage = IncrementStrategyFinder.DefaultNoBumpPattern, - PatchVersionBumpMessage = IncrementStrategyFinder.DefaultPatchPattern, + MajorVersionBumpMessage = RegexPatterns.VersionCalculation.DefaultMajorPattern, + MinorVersionBumpMessage = RegexPatterns.VersionCalculation.DefaultMinorPattern, + NoBumpMessage = RegexPatterns.VersionCalculation.DefaultNoBumpPattern, + PatchVersionBumpMessage = RegexPatterns.VersionCalculation.DefaultPatchPattern, SemanticVersionFormat = ConfigurationConstants.DefaultSemanticVersionFormat, VersionStrategies = ConfigurationConstants.DefaultVersionStrategies, TagPrefix = ConfigurationConstants.DefaultTagPrefix, @@ -28,7 +29,7 @@ private GitFlowConfigurationBuilder() Label = ConfigurationConstants.BranchNamePlaceholder, Increment = IncrementStrategy.Inherit, CommitMessageIncrementing = CommitMessageIncrementMode.Enabled, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = false, WhenBranchMerged = false, @@ -48,7 +49,7 @@ private GitFlowConfigurationBuilder() RegularExpression = DevelopBranch.RegexPattern, SourceBranches = [this.MainBranch.Name], Label = "alpha", - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { WhenCurrentCommitTagged = false }, @@ -66,7 +67,7 @@ private GitFlowConfigurationBuilder() RegularExpression = MainBranch.RegexPattern, SourceBranches = [], Label = string.Empty, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = true }, @@ -89,7 +90,7 @@ private GitFlowConfigurationBuilder() this.SupportBranch.Name, ], Label = "beta", - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = true, WhenCurrentCommitTagged = false @@ -115,7 +116,7 @@ private GitFlowConfigurationBuilder() this.HotfixBranch.Name ], Label = ConfigurationConstants.BranchNamePlaceholder, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { WhenCurrentCommitTagged = false }, @@ -139,7 +140,7 @@ private GitFlowConfigurationBuilder() this.HotfixBranch.Name ], Label = "PullRequest", - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = true, WhenCurrentCommitTagged = false @@ -154,7 +155,7 @@ private GitFlowConfigurationBuilder() Increment = IncrementStrategy.Inherit, RegularExpression = HotfixBranch.RegexPattern, DeploymentMode = DeploymentMode.ManualDeployment, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { WhenCurrentCommitTagged = false }, @@ -175,7 +176,7 @@ private GitFlowConfigurationBuilder() RegularExpression = SupportBranch.RegexPattern, SourceBranches = [this.MainBranch.Name], Label = string.Empty, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = true }, @@ -202,7 +203,7 @@ private GitFlowConfigurationBuilder() this.SupportBranch.Name ], Label = ConfigurationConstants.BranchNamePlaceholder, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { WhenCurrentCommitTagged = true }, diff --git a/src/GitVersion.Configuration/Builders/GitHubFlowConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/GitHubFlowConfigurationBuilder.cs index 3b67f085f8..8af099bcdc 100644 --- a/src/GitVersion.Configuration/Builders/GitHubFlowConfigurationBuilder.cs +++ b/src/GitVersion.Configuration/Builders/GitHubFlowConfigurationBuilder.cs @@ -1,3 +1,4 @@ +using GitVersion.Core; using GitVersion.VersionCalculation; namespace GitVersion.Configuration; @@ -13,10 +14,10 @@ private GitHubFlowConfigurationBuilder() AssemblyFileVersioningScheme = ConfigurationConstants.DefaultAssemblyFileVersioningScheme, AssemblyVersioningScheme = ConfigurationConstants.DefaultAssemblyVersioningScheme, CommitDateFormat = ConfigurationConstants.DefaultCommitDateFormat, - MajorVersionBumpMessage = IncrementStrategyFinder.DefaultMajorPattern, - MinorVersionBumpMessage = IncrementStrategyFinder.DefaultMinorPattern, - NoBumpMessage = IncrementStrategyFinder.DefaultNoBumpPattern, - PatchVersionBumpMessage = IncrementStrategyFinder.DefaultPatchPattern, + MajorVersionBumpMessage = RegexPatterns.VersionCalculation.DefaultMajorPattern, + MinorVersionBumpMessage = RegexPatterns.VersionCalculation.DefaultMinorPattern, + NoBumpMessage = RegexPatterns.VersionCalculation.DefaultNoBumpPattern, + PatchVersionBumpMessage = RegexPatterns.VersionCalculation.DefaultPatchPattern, SemanticVersionFormat = ConfigurationConstants.DefaultSemanticVersionFormat, VersionStrategies = ConfigurationConstants.DefaultVersionStrategies, TagPrefix = ConfigurationConstants.DefaultTagPrefix, @@ -26,7 +27,7 @@ private GitHubFlowConfigurationBuilder() DeploymentMode = DeploymentMode.ContinuousDelivery, Label = ConfigurationConstants.BranchNamePlaceholder, Increment = IncrementStrategy.Inherit, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = false, WhenBranchMerged = false, @@ -45,7 +46,7 @@ private GitHubFlowConfigurationBuilder() { Label = string.Empty, Increment = IncrementStrategy.Patch, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = true }, @@ -64,7 +65,7 @@ private GitHubFlowConfigurationBuilder() DeploymentMode = DeploymentMode.ManualDeployment, Label = "beta", Increment = IncrementStrategy.Patch, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = true, WhenBranchMerged = false, @@ -88,7 +89,7 @@ private GitHubFlowConfigurationBuilder() DeploymentMode = DeploymentMode.ManualDeployment, Label = ConfigurationConstants.BranchNamePlaceholder, Increment = IncrementStrategy.Inherit, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { WhenCurrentCommitTagged = false }, @@ -108,7 +109,7 @@ private GitHubFlowConfigurationBuilder() DeploymentMode = DeploymentMode.ContinuousDelivery, Label = "PullRequest", Increment = IncrementStrategy.Inherit, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = true, WhenCurrentCommitTagged = false @@ -130,7 +131,7 @@ private GitHubFlowConfigurationBuilder() DeploymentMode = DeploymentMode.ManualDeployment, Label = ConfigurationConstants.BranchNamePlaceholder, Increment = IncrementStrategy.Inherit, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { WhenCurrentCommitTagged = false }, diff --git a/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs index c6e5047b67..c1fbcdf519 100644 --- a/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs +++ b/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs @@ -1,3 +1,4 @@ +using GitVersion.Core; using GitVersion.VersionCalculation; namespace GitVersion.Configuration; @@ -8,15 +9,15 @@ internal sealed class TrunkBasedConfigurationBuilder : ConfigurationBuilderBase< private TrunkBasedConfigurationBuilder() { - WithConfiguration(new GitVersionConfiguration() + WithConfiguration(new GitVersionConfiguration { AssemblyFileVersioningScheme = ConfigurationConstants.DefaultAssemblyFileVersioningScheme, AssemblyVersioningScheme = ConfigurationConstants.DefaultAssemblyVersioningScheme, CommitDateFormat = ConfigurationConstants.DefaultCommitDateFormat, - MajorVersionBumpMessage = IncrementStrategyFinder.DefaultMajorPattern, - MinorVersionBumpMessage = IncrementStrategyFinder.DefaultMinorPattern, - NoBumpMessage = IncrementStrategyFinder.DefaultNoBumpPattern, - PatchVersionBumpMessage = IncrementStrategyFinder.DefaultPatchPattern, + MajorVersionBumpMessage = RegexPatterns.VersionCalculation.DefaultMajorPattern, + MinorVersionBumpMessage = RegexPatterns.VersionCalculation.DefaultMinorPattern, + NoBumpMessage = RegexPatterns.VersionCalculation.DefaultNoBumpPattern, + PatchVersionBumpMessage = RegexPatterns.VersionCalculation.DefaultPatchPattern, SemanticVersionFormat = ConfigurationConstants.DefaultSemanticVersionFormat, VersionStrategies = [ VersionStrategies.ConfiguredNextVersion, @@ -31,7 +32,7 @@ private TrunkBasedConfigurationBuilder() Label = ConfigurationConstants.BranchNamePlaceholder, Increment = IncrementStrategy.Inherit, CommitMessageIncrementing = CommitMessageIncrementMode.Enabled, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = false, WhenBranchMerged = false, @@ -44,12 +45,12 @@ private TrunkBasedConfigurationBuilder() IsMainBranch = false }); - WithBranch(MainBranch.Name).WithConfiguration(new BranchConfiguration() + WithBranch(MainBranch.Name).WithConfiguration(new BranchConfiguration { DeploymentMode = DeploymentMode.ContinuousDeployment, Label = string.Empty, Increment = IncrementStrategy.Patch, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = true }, @@ -63,12 +64,12 @@ private TrunkBasedConfigurationBuilder() PreReleaseWeight = 55000 }); - WithBranch(FeatureBranch.Name).WithConfiguration(new BranchConfiguration() + WithBranch(FeatureBranch.Name).WithConfiguration(new BranchConfiguration { DeploymentMode = DeploymentMode.ContinuousDelivery, Label = ConfigurationConstants.BranchNamePlaceholder, Increment = IncrementStrategy.Minor, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { WhenCurrentCommitTagged = false }, @@ -82,12 +83,12 @@ private TrunkBasedConfigurationBuilder() PreReleaseWeight = 30000 }); - WithBranch(HotfixBranch.Name).WithConfiguration(new BranchConfiguration() + WithBranch(HotfixBranch.Name).WithConfiguration(new BranchConfiguration { DeploymentMode = DeploymentMode.ContinuousDelivery, Label = ConfigurationConstants.BranchNamePlaceholder, Increment = IncrementStrategy.Patch, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { WhenCurrentCommitTagged = false }, @@ -106,7 +107,7 @@ private TrunkBasedConfigurationBuilder() DeploymentMode = DeploymentMode.ContinuousDelivery, Label = "PullRequest", Increment = IncrementStrategy.Inherit, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = true, WhenCurrentCommitTagged = false @@ -126,7 +127,7 @@ private TrunkBasedConfigurationBuilder() WithBranch(UnknownBranch.Name).WithConfiguration(new BranchConfiguration { Increment = IncrementStrategy.Patch, - PreventIncrement = new PreventIncrementConfiguration() + PreventIncrement = new PreventIncrementConfiguration { WhenCurrentCommitTagged = false }, diff --git a/src/GitVersion.Configuration/GitVersionConfiguration.cs b/src/GitVersion.Configuration/GitVersionConfiguration.cs index 1c2360d3a7..ee6981920c 100644 --- a/src/GitVersion.Configuration/GitVersionConfiguration.cs +++ b/src/GitVersion.Configuration/GitVersionConfiguration.cs @@ -1,6 +1,7 @@ using System.Globalization; using System.Text.RegularExpressions; using GitVersion.Configuration.Attributes; +using GitVersion.Core; using GitVersion.Extensions; using GitVersion.VersionCalculation; using static GitVersion.Configuration.ConfigurationConstants; @@ -49,7 +50,7 @@ internal sealed record GitVersionConfiguration : BranchConfiguration, IGitVersio public string? VersionInBranchPattern { get; internal set; } [JsonIgnore] - public Regex VersionInBranchRegex => versionInBranchRegex ??= new Regex(GetVersionInBranchPattern(), RegexOptions.Compiled); + public Regex VersionInBranchRegex => versionInBranchRegex ??= new(GetVersionInBranchPattern(), RegexOptions.Compiled); private Regex? versionInBranchRegex; private string GetVersionInBranchPattern() @@ -72,26 +73,26 @@ public string? NextVersion private string? nextVersion; [JsonPropertyName("major-version-bump-message")] - [JsonPropertyDescription($"The regular expression to match commit messages with to perform a major version increment. Defaults to '{IncrementStrategyFinder.DefaultMajorPattern}'")] - [JsonPropertyDefault(IncrementStrategyFinder.DefaultMajorPattern)] + [JsonPropertyDescription($"The regular expression to match commit messages with to perform a major version increment. Defaults to '{RegexPatterns.VersionCalculation.DefaultMajorPattern}'")] + [JsonPropertyDefault(RegexPatterns.VersionCalculation.DefaultMajorPattern)] [JsonPropertyFormat(Format.Regex)] public string? MajorVersionBumpMessage { get; internal set; } [JsonPropertyName("minor-version-bump-message")] - [JsonPropertyDescription($"The regular expression to match commit messages with to perform a minor version increment. Defaults to '{IncrementStrategyFinder.DefaultMinorPattern}'")] - [JsonPropertyDefault(IncrementStrategyFinder.DefaultMinorPattern)] + [JsonPropertyDescription($"The regular expression to match commit messages with to perform a minor version increment. Defaults to '{RegexPatterns.VersionCalculation.DefaultMinorPattern}'")] + [JsonPropertyDefault(RegexPatterns.VersionCalculation.DefaultMinorPattern)] [JsonPropertyFormat(Format.Regex)] public string? MinorVersionBumpMessage { get; internal set; } [JsonPropertyName("patch-version-bump-message")] - [JsonPropertyDescription($"The regular expression to match commit messages with to perform a patch version increment. Defaults to '{IncrementStrategyFinder.DefaultPatchPattern}'")] - [JsonPropertyDefault(IncrementStrategyFinder.DefaultPatchPattern)] + [JsonPropertyDescription($"The regular expression to match commit messages with to perform a patch version increment. Defaults to '{RegexPatterns.VersionCalculation.DefaultPatchPattern}'")] + [JsonPropertyDefault(RegexPatterns.VersionCalculation.DefaultPatchPattern)] [JsonPropertyFormat(Format.Regex)] public string? PatchVersionBumpMessage { get; internal set; } [JsonPropertyName("no-bump-message")] - [JsonPropertyDescription($"Used to tell GitVersion not to increment when in Mainline development mode. Defaults to '{IncrementStrategyFinder.DefaultNoBumpPattern}'")] - [JsonPropertyDefault(IncrementStrategyFinder.DefaultNoBumpPattern)] + [JsonPropertyDescription($"Used to tell GitVersion not to increment when in Mainline development mode. Defaults to '{RegexPatterns.VersionCalculation.DefaultNoBumpPattern}'")] + [JsonPropertyDefault(RegexPatterns.VersionCalculation.DefaultNoBumpPattern)] [JsonPropertyFormat(Format.Regex)] public string? NoBumpMessage { get; internal set; } diff --git a/src/GitVersion.Core.Tests/IntegrationTests/IgnoreCommitScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/IgnoreCommitScenarios.cs index 0ab82ba0e8..e1f567e92f 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/IgnoreCommitScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/IgnoreCommitScenarios.cs @@ -63,7 +63,7 @@ public void GivenTrunkBasedWorkflowWithIgnoreConfigurationForCommitThenVersionSh fixture.MakeACommit("D"); var configuration = TrunkBasedConfigurationBuilder.New - .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitB.Sha] }) + .WithIgnoreConfiguration(new IgnoreConfiguration { Shas = [commitB.Sha] }) .Build(); // ✅ succeeds as expected @@ -81,7 +81,7 @@ public void GivenTrunkBasedWorkflowWithIgnoreConfigurationForCommitBAndCommitPar fixture.MakeACommit("D"); var configuration = TrunkBasedConfigurationBuilder.New - .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitB.Sha] }) + .WithIgnoreConfiguration(new IgnoreConfiguration { Shas = [commitB.Sha] }) .Build(); // ✅ succeeds as expected @@ -98,7 +98,7 @@ public void GivenTrunkBasedWorkflowWithIgnoreConfigurationForCommitCAndCommitPar var commitC = fixture.Repository.MakeACommit("C"); var configuration = TrunkBasedConfigurationBuilder.New - .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitC.Sha] }) + .WithIgnoreConfiguration(new IgnoreConfiguration { Shas = [commitC.Sha] }) .Build(); // ✅ succeeds as expected @@ -117,7 +117,7 @@ public void GivenTrunkBasedWorkflowWithIgnoreConfigurationForTaggedCommitThenTag fixture.MakeACommit("D"); var configuration = TrunkBasedConfigurationBuilder.New - .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitC.Sha] }) + .WithIgnoreConfiguration(new IgnoreConfiguration { Shas = [commitC.Sha] }) .Build(); // ✅ succeeds as expected @@ -136,7 +136,7 @@ public void GivenTrunkBasedWorkflowWithIgnoreConfigurationBeforeCommitWithTagThe fixture.MakeACommit("D"); var configuration = TrunkBasedConfigurationBuilder.New - .WithIgnoreConfiguration(new IgnoreConfiguration() { Before = commitC.Committer.When }) + .WithIgnoreConfiguration(new IgnoreConfiguration { Before = commitC.Committer.When }) .Build(); // ✅ succeeds as expected @@ -155,7 +155,7 @@ public void GivenTrunkBasedWorkflowWithIgnoreConfigurationOfCommitBThenTagShould var commitB = fixture.Repository.MakeACommit("B"); var configuration = TrunkBasedConfigurationBuilder.New - .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitB.Sha] }) + .WithIgnoreConfiguration(new IgnoreConfiguration { Shas = [commitB.Sha] }) .WithBranch("main", b => b.WithIncrement(IncrementStrategy.Patch) .WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged) .WithDeploymentMode(GitVersion.VersionCalculation.DeploymentMode.ContinuousDelivery) @@ -213,7 +213,7 @@ public void GivenGitHubFlowWorkflowWithIgnoreConfigurationForCommitThenVersionSh fixture.MakeACommit("D"); var configuration = GitHubFlowConfigurationBuilder.New - .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitB.Sha] }) + .WithIgnoreConfiguration(new IgnoreConfiguration { Shas = [commitB.Sha] }) .Build(); // ✅ succeeds as expected @@ -231,7 +231,7 @@ public void GivenGitHubFlowWorkflowWithIgnoreConfigurationForCommitBAndCommitPar fixture.MakeACommit("D"); var configuration = GitHubFlowConfigurationBuilder.New - .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitB.Sha] }) + .WithIgnoreConfiguration(new IgnoreConfiguration { Shas = [commitB.Sha] }) .Build(); // ✅ succeeds as expected @@ -248,7 +248,7 @@ public void GivenGitHubFlowWorkflowWithIgnoreConfigurationForCommitCAndCommitPar var commitC = fixture.Repository.MakeACommit("C"); var configuration = GitHubFlowConfigurationBuilder.New - .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitC.Sha] }) + .WithIgnoreConfiguration(new IgnoreConfiguration { Shas = [commitC.Sha] }) .Build(); // ✅ succeeds as expected @@ -267,7 +267,7 @@ public void GivenGitHubFlowWorkflowWithIgnoreConfigurationForTaggedCommitThenTag fixture.MakeACommit("D"); var configuration = GitHubFlowConfigurationBuilder.New - .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitC.Sha] }) + .WithIgnoreConfiguration(new IgnoreConfiguration { Shas = [commitC.Sha] }) .Build(); // ✅ succeeds as expected @@ -286,7 +286,7 @@ public void GivenGitHubFlowWorkflowWithIgnoreConfigurationBeforeCommitWithTagThe fixture.MakeACommit("D"); var configuration = GitHubFlowConfigurationBuilder.New - .WithIgnoreConfiguration(new IgnoreConfiguration() { Before = commitC.Committer.When }) + .WithIgnoreConfiguration(new IgnoreConfiguration { Before = commitC.Committer.When }) .Build(); // ✅ succeeds as expected @@ -305,7 +305,7 @@ public void GivenGitHubFlowWorkflowWithIgnoreConfigurationOfCommitBThenTagShould var commitB = fixture.Repository.MakeACommit("B"); var configuration = GitHubFlowConfigurationBuilder.New - .WithIgnoreConfiguration(new IgnoreConfiguration() { Shas = [commitB.Sha] }) + .WithIgnoreConfiguration(new IgnoreConfiguration { Shas = [commitB.Sha] }) .WithBranch("main", b => b.WithPreventIncrementWhenCurrentCommitTagged(preventIncrementWhenCurrentCommitTagged)) .Build(); diff --git a/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs index 369ad1ade6..af8dd75d35 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs @@ -30,7 +30,7 @@ public void DoesNotIncrementWhenBaseVersionSaysNotTo() { using var contextBuilder = new GitVersionContextBuilder(); - var overrideConfiguration = new Dictionary() + var overrideConfiguration = new Dictionary { { "next-version", "1.0.0" } }; diff --git a/src/GitVersion.Core/Core/RegexPatterns.cs b/src/GitVersion.Core/Core/RegexPatterns.cs new file mode 100644 index 0000000000..821163cfcf --- /dev/null +++ b/src/GitVersion.Core/Core/RegexPatterns.cs @@ -0,0 +1,83 @@ +using System.Text.RegularExpressions; + +namespace GitVersion.Core; + +internal static class RegexPatterns +{ + internal static class Common + { + public static readonly Regex SwitchArgumentRegex = new(@"/\w+:", RegexOptions.Compiled); + public static readonly Regex ObscurePasswordRegex = new("(https?://)(.+)(:.+@)", RegexOptions.Compiled); + + // This regex matches an expression to replace. + // - env:ENV name OR a member name + // - optional fallback value after " ?? " + // - the fallback value should be a quoted string, but simple unquoted text is allowed for back compat + public static readonly Regex ExpandTokensRegex = new("""{((env:(?\w+))|(?\w+))(\s+(\?\?)??\s+((?\w+)|"(?.*)"))??}""", RegexOptions.Compiled); + } + + internal static class MergeMessage + { + public static readonly Regex DefaultMergeMessageRegex = new(@"^Merge (branch|tag) '(?[^']*)'(?: into (?[^\s]*))*", RegexOptions.IgnoreCase | RegexOptions.Compiled); + public static readonly Regex SmartGitMergeMessageRegex = new(@"^Finish (?[^\s]*)(?: into (?[^\s]*))*", RegexOptions.IgnoreCase | RegexOptions.Compiled); + public static readonly Regex BitBucketPullMergeMessageRegex = new(@"^Merge pull request #(?\d+) (from|in) (?.*) from (?[^\s]*) to (?[^\s]*)", RegexOptions.IgnoreCase | RegexOptions.Compiled); + public static readonly Regex BitBucketPullv7MergeMessageRegex = new(@"^Pull request #(?\d+).*\r?\n\r?\nMerge in (?.*) from (?[^\s]*) to (?[^\s]*)", RegexOptions.IgnoreCase | RegexOptions.Compiled); + public static readonly Regex BitBucketCloudPullMergeMessageRegex = new(@"^Merged in (?[^\s]*) \(pull request #(?\d+)\)", RegexOptions.IgnoreCase | RegexOptions.Compiled); + public static readonly Regex GitHubPullMergeMessageRegex = new(@"^Merge pull request #(?\d+) (from|in) (?:[^\s\/]+\/)?(?[^\s]*)(?: into (?[^\s]*))*", RegexOptions.IgnoreCase | RegexOptions.Compiled); + public static readonly Regex RemoteTrackingMergeMessageRegex = new(@"^Merge remote-tracking branch '(?[^\s]*)'(?: into (?[^\s]*))*", RegexOptions.IgnoreCase | RegexOptions.Compiled); + public static readonly Regex AzureDevOpsPullMergeMessageRegex = new(@"^Merge pull request (?\d+) from (?[^\s]*) into (?[^\s]*)", RegexOptions.IgnoreCase | RegexOptions.Compiled); + } + + internal static class Output + { + public static readonly Regex AssemblyVersionRegex = new(@"AssemblyVersion(Attribute)?\s*\(.*\)\s*"); + public static readonly Regex AssemblyInfoVersionRegex = new(@"AssemblyInformationalVersion(Attribute)?\s*\(.*\)\s*"); + public static readonly Regex AssemblyFileVersionRegex = new(@"AssemblyFileVersion(Attribute)?\s*\(.*\)\s*"); + public static readonly Regex CsharpAssemblyAttributeRegex = new(@"(\s*\[\s*assembly:\s*(?:.*)\s*\]\s*$(\r?\n)?)", RegexOptions.Multiline); + public static readonly Regex FsharpAssemblyAttributeRegex = new(@"(\s*\[\s*\\s*\]\s*$(\r?\n)?)", RegexOptions.Multiline); + public static readonly Regex VisualBasicAssemblyAttributeRegex = new(@"(\s*\\s*$(\r?\n)?)", RegexOptions.Multiline); + } + + internal static class VersionCalculation + { + //language=regexp + public const string DefaultMajorPattern = @"\+semver:\s?(breaking|major)"; + + //language=regexp + public const string DefaultMinorPattern = @"\+semver:\s?(feature|minor)"; + + //language=regexp + public const string DefaultPatchPattern = @"\+semver:\s?(fix|patch)"; + + //language=regexp + public const string DefaultNoBumpPattern = @"\+semver:\s?(none|skip)"; + + public static readonly Regex DefaultMajorPatternRegex = new(DefaultMajorPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); + public static readonly Regex DefaultMinorPatternRegex = new(DefaultMinorPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); + public static readonly Regex DefaultPatchPatternRegex = new(DefaultPatchPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); + public static readonly Regex DefaultNoBumpPatternRegex = new(DefaultNoBumpPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); + } + + internal static class SemanticVersion + { + // uses the git-semver spec https://github.com/semver/semver/blob/master/semver.md + public static readonly Regex ParseStrictRegex = new( + @"^(?0|[1-9]\d*)\.(?0|[1-9]\d*)\.(?0|[1-9]\d*)(?:-(?(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$", + RegexOptions.Compiled | RegexOptions.IgnoreCase); + + public static readonly Regex ParseLooseRegex = new( + @"^(?(?\d+)(\.(?\d+))?(\.(?\d+))?)(\.(?\d+))?(-(?[^\+]*))?(\+(?.*))?$", + RegexOptions.Compiled | RegexOptions.IgnoreCase); + + public static readonly Regex ParseBuildMetaDataRegex = new( + @"(?\d+)?(\.?Branch(Name)?\.(?[^\.]+))?(\.?Sha?\.(?[^\.]+))?(?.*)", + RegexOptions.Compiled | RegexOptions.IgnoreCase); + + public static readonly Regex FormatBuildMetaDataRegex = new("[^0-9A-Za-z-.]", + RegexOptions.Compiled | RegexOptions.IgnoreCase); + + public static readonly Regex ParsePreReleaseTagRegex = new( + @"(?.*?)\.?(?\d+)?$", + RegexOptions.Compiled | RegexOptions.IgnoreCase); + } +} diff --git a/src/GitVersion.Core/Helpers/StringFormatWith.cs b/src/GitVersion.Core/Helpers/StringFormatWith.cs index 01ee127982..c6732c24c5 100644 --- a/src/GitVersion.Core/Helpers/StringFormatWith.cs +++ b/src/GitVersion.Core/Helpers/StringFormatWith.cs @@ -1,16 +1,11 @@ using System.Linq.Expressions; using System.Text.RegularExpressions; +using GitVersion.Core; namespace GitVersion.Helpers; internal static class StringFormatWithExtension { - // This regex matches an expression to replace. - // - env:ENV name OR a member name - // - optional fallback value after " ?? " - // - the fallback value should be a quoted string, but simple unquoted text is allowed for back compat - private static readonly Regex TokensRegex = new(@"{((env:(?\w+))|(?\w+))(\s+(\?\?)??\s+((?\w+)|""(?.*)""))??}", RegexOptions.Compiled); - /// /// Formats the , replacing each expression wrapped in curly braces /// with the corresponding property from the or . @@ -45,7 +40,7 @@ public static string FormatWith(this string template, T? source, IEnvironment throw new ArgumentNullException(nameof(source)); } - foreach (Match match in TokensRegex.Matches(template).Cast()) + foreach (Match match in RegexPatterns.Common.ExpandTokensRegex.Matches(template).Cast()) { string propertyValue; string? fallback = match.Groups["fallback"].Success ? match.Groups["fallback"].Value : null; diff --git a/src/GitVersion.Core/Logging/Log.cs b/src/GitVersion.Core/Logging/Log.cs index fbe9357f8d..d5dc15e39b 100644 --- a/src/GitVersion.Core/Logging/Log.cs +++ b/src/GitVersion.Core/Logging/Log.cs @@ -1,5 +1,5 @@ using System.Globalization; -using System.Text.RegularExpressions; +using GitVersion.Core; using GitVersion.Helpers; namespace GitVersion.Logging; @@ -7,7 +7,6 @@ namespace GitVersion.Logging; internal sealed class Log(params ILogAppender[] appenders) : ILog { private IEnumerable appenders = appenders; - private readonly Regex obscurePasswordRegex = new("(https?://)(.+)(:.+@)", RegexOptions.Compiled); private readonly StringBuilder sb = new(); private string currentIndentation = string.Empty; private const string Indentation = " "; @@ -59,7 +58,7 @@ public IDisposable IndentLog(string operationDescription) private string FormatMessage(string message, string level) { - var obscuredMessage = this.obscurePasswordRegex.Replace(message, "$1$2:*******@"); + var obscuredMessage = RegexPatterns.Common.ObscurePasswordRegex.Replace(message, "$1$2:*******@"); var timestamp = $"{DateTime.Now:yy-MM-dd H:mm:ss:ff}"; return string.Format(CultureInfo.InvariantCulture, "{0}{1} [{2}] {3}", this.currentIndentation, level, timestamp, obscuredMessage); } diff --git a/src/GitVersion.Core/MergeMessage.cs b/src/GitVersion.Core/MergeMessage.cs index 9dfe4416bf..036fb7c177 100644 --- a/src/GitVersion.Core/MergeMessage.cs +++ b/src/GitVersion.Core/MergeMessage.cs @@ -1,6 +1,7 @@ using System.Diagnostics.CodeAnalysis; using System.Text.RegularExpressions; using GitVersion.Configuration; +using GitVersion.Core; using GitVersion.Extensions; using GitVersion.Git; @@ -10,14 +11,14 @@ public class MergeMessage { private static readonly IList DefaultFormats = [ - new("Default", @"^Merge (branch|tag) '(?[^']*)'(?: into (?[^\s]*))*"), - new("SmartGit", @"^Finish (?[^\s]*)(?: into (?[^\s]*))*"), - new("BitBucketPull", @"^Merge pull request #(?\d+) (from|in) (?.*) from (?[^\s]*) to (?[^\s]*)"), - new("BitBucketPullv7", @"^Pull request #(?\d+).*\r?\n\r?\nMerge in (?.*) from (?[^\s]*) to (?[^\s]*)"), - new("BitBucketCloudPull", @"^Merged in (?[^\s]*) \(pull request #(?\d+)\)"), - new("GitHubPull", @"^Merge pull request #(?\d+) (from|in) (?:[^\s\/]+\/)?(?[^\s]*)(?: into (?[^\s]*))*"), - new("RemoteTracking", @"^Merge remote-tracking branch '(?[^\s]*)'(?: into (?[^\s]*))*"), - new("AzureDevOpsPull", @"^Merge pull request (?\d+) from (?[^\s]*) into (?[^\s]*)") + new("Default", RegexPatterns.MergeMessage.DefaultMergeMessageRegex), + new("SmartGit", RegexPatterns.MergeMessage.SmartGitMergeMessageRegex), + new("BitBucketPull", RegexPatterns.MergeMessage.BitBucketPullMergeMessageRegex), + new("BitBucketPullv7", RegexPatterns.MergeMessage.BitBucketPullv7MergeMessageRegex), + new("BitBucketCloudPull", RegexPatterns.MergeMessage.BitBucketCloudPullMergeMessageRegex), + new("GitHubPull", RegexPatterns.MergeMessage.GitHubPullMergeMessageRegex), + new("RemoteTracking", RegexPatterns.MergeMessage.RemoteTrackingMergeMessageRegex), + new("AzureDevOpsPull", RegexPatterns.MergeMessage.AzureDevOpsPullMergeMessageRegex) ]; public MergeMessage(string mergeMessage, IGitVersionConfiguration configuration) @@ -29,7 +30,7 @@ public MergeMessage(string mergeMessage, IGitVersionConfiguration configuration) // Concatenate configuration formats with the defaults. // Ensure configurations are processed first. var allFormats = configuration.MergeMessageFormats - .Select(x => new MergeMessageFormat(x.Key, x.Value)) + .Select(x => new MergeMessageFormat(x.Key, new(x.Value, RegexOptions.IgnoreCase | RegexOptions.Compiled))) .Concat(DefaultFormats); foreach (var format in allFormats) @@ -75,11 +76,11 @@ public MergeMessage(string mergeMessage, IGitVersionConfiguration configuration) return null; } - private class MergeMessageFormat(string name, string pattern) + private class MergeMessageFormat(string name, Regex pattern) { public string Name { get; } = name; - public Regex Pattern { get; } = new(pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled); + public Regex Pattern { get; } = pattern; } private ReferenceName GetMergedBranchName(string mergedBranch) diff --git a/src/GitVersion.Core/SemVer/SemanticVersion.cs b/src/GitVersion.Core/SemVer/SemanticVersion.cs index 130d21d72e..beeb96321c 100644 --- a/src/GitVersion.Core/SemVer/SemanticVersion.cs +++ b/src/GitVersion.Core/SemVer/SemanticVersion.cs @@ -1,6 +1,7 @@ using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Text.RegularExpressions; +using GitVersion.Core; using GitVersion.Extensions; namespace GitVersion; @@ -9,15 +10,6 @@ public class SemanticVersion : IFormattable, IComparable, IEqua { public static readonly SemanticVersion Empty = new(); - // uses the git-semver spec https://github.com/semver/semver/blob/master/semver.md - private static readonly Regex ParseSemVerStrict = new( - @"^(?0|[1-9]\d*)\.(?0|[1-9]\d*)\.(?0|[1-9]\d*)(?:-(?(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$", - RegexOptions.Compiled | RegexOptions.IgnoreCase); - - private static readonly Regex ParseSemVerLoose = new( - @"^(?(?\d+)(\.(?\d+))?(\.(?\d+))?)(\.(?\d+))?(-(?[^\+]*))?(\+(?.*))?$", - RegexOptions.Compiled | RegexOptions.IgnoreCase); - public long Major { get; init; } public long Minor { get; init; } @@ -176,7 +168,7 @@ public static bool TryParse(string version, string? tagPrefixRegex, private static bool TryParseStrict(string version, [NotNullWhen(true)] out SemanticVersion? semanticVersion) { - var parsed = ParseSemVerStrict.Match(version); + var parsed = RegexPatterns.SemanticVersion.ParseStrictRegex.Match(version); if (!parsed.Success) { @@ -198,7 +190,7 @@ private static bool TryParseStrict(string version, [NotNullWhen(true)] out Seman private static bool TryParseLoose(string version, [NotNullWhen(true)] out SemanticVersion? semanticVersion) { - var parsed = ParseSemVerLoose.Match(version); + var parsed = RegexPatterns.SemanticVersion.ParseLooseRegex.Match(version); if (!parsed.Success) { diff --git a/src/GitVersion.Core/SemVer/SemanticVersionBuildMetaData.cs b/src/GitVersion.Core/SemVer/SemanticVersionBuildMetaData.cs index 734a0e2436..5ae4086543 100644 --- a/src/GitVersion.Core/SemVer/SemanticVersionBuildMetaData.cs +++ b/src/GitVersion.Core/SemVer/SemanticVersionBuildMetaData.cs @@ -1,5 +1,5 @@ using System.Globalization; -using System.Text.RegularExpressions; +using GitVersion.Core; using GitVersion.Extensions; using GitVersion.Helpers; @@ -9,10 +9,6 @@ public class SemanticVersionBuildMetaData : IFormattable, IEquatable\d+)?(\.?Branch(Name)?\.(?[^\.]+))?(\.?Sha?\.(?[^\.]+))?(?.*)", - RegexOptions.Compiled | RegexOptions.IgnoreCase); - private static readonly LambdaEqualityHelper EqualityHelper = new(x => x.CommitsSinceTag, x => x.Branch, x => x.Sha); @@ -115,7 +111,7 @@ public static SemanticVersionBuildMetaData Parse(string? buildMetaData) if (buildMetaData.IsNullOrEmpty()) return Empty; - var parsed = ParseRegex.Match(buildMetaData); + var parsed = RegexPatterns.SemanticVersion.ParseBuildMetaDataRegex.Match(buildMetaData); long? buildMetaDataCommitsSinceTag = null; long? buildMetaDataCommitsSinceVersionSource = null; @@ -151,7 +147,7 @@ public static SemanticVersionBuildMetaData Parse(string? buildMetaData) private static string FormatMetaDataPart(string value) { if (!value.IsNullOrEmpty()) - value = Regex.Replace(value, "[^0-9A-Za-z-.]", "-"); + value = RegexPatterns.SemanticVersion.FormatBuildMetaDataRegex.Replace(value, "-"); return value; } } diff --git a/src/GitVersion.Core/SemVer/SemanticVersionPreReleaseTag.cs b/src/GitVersion.Core/SemVer/SemanticVersionPreReleaseTag.cs index cd26afde4e..f8cb19ce42 100644 --- a/src/GitVersion.Core/SemVer/SemanticVersionPreReleaseTag.cs +++ b/src/GitVersion.Core/SemVer/SemanticVersionPreReleaseTag.cs @@ -1,5 +1,5 @@ using System.Globalization; -using System.Text.RegularExpressions; +using GitVersion.Core; using GitVersion.Extensions; using GitVersion.Helpers; @@ -11,10 +11,6 @@ public sealed class SemanticVersionPreReleaseTag : private static readonly StringComparer IgnoreCaseComparer = StringComparer.InvariantCultureIgnoreCase; public static readonly SemanticVersionPreReleaseTag Empty = new(); - private static readonly Regex ParseRegex = new( - @"(?.*?)\.?(?\d+)?$", - RegexOptions.Compiled | RegexOptions.IgnoreCase); - private static readonly LambdaEqualityHelper EqualityHelper = new(x => x.Name, x => x.Number); @@ -74,7 +70,7 @@ public static SemanticVersionPreReleaseTag Parse(string? preReleaseTag) { if (preReleaseTag.IsNullOrEmpty()) return Empty; - var match = ParseRegex.Match(preReleaseTag); + var match = RegexPatterns.SemanticVersion.ParsePreReleaseTagRegex.Match(preReleaseTag); if (!match.Success) { // TODO check how to log this diff --git a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs index eb528f0253..957974df4a 100644 --- a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs @@ -10,21 +10,11 @@ namespace GitVersion.VersionCalculation; internal class IncrementStrategyFinder(IGitRepository repository, ITaggedSemanticVersionRepository taggedSemanticVersionRepository) : IIncrementStrategyFinder { - public const string DefaultMajorPattern = @"\+semver:\s?(breaking|major)"; - public const string DefaultMinorPattern = @"\+semver:\s?(feature|minor)"; - public const string DefaultPatchPattern = @"\+semver:\s?(fix|patch)"; - public const string DefaultNoBumpPattern = @"\+semver:\s?(none|skip)"; - private static readonly ConcurrentDictionary CompiledRegexCache = new(); private readonly Dictionary commitIncrementCache = []; private readonly Dictionary> headCommitsMapCache = []; private readonly Dictionary headCommitsCache = []; - private static readonly Regex DefaultMajorPatternRegex = new(DefaultMajorPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); - private static readonly Regex DefaultMinorPatternRegex = new(DefaultMinorPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); - private static readonly Regex DefaultPatchPatternRegex = new(DefaultPatchPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); - private static readonly Regex DefaultNoBumpPatternRegex = new(DefaultNoBumpPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); - private readonly IGitRepository repository = repository.NotNull(); private readonly ITaggedSemanticVersionRepository taggedSemanticVersionRepository = taggedSemanticVersionRepository.NotNull(); @@ -59,10 +49,10 @@ public VersionField DetermineIncrementedField( { commits.NotNull(); - var majorRegex = TryGetRegexOrDefault(majorVersionBumpMessage, DefaultMajorPatternRegex); - var minorRegex = TryGetRegexOrDefault(minorVersionBumpMessage, DefaultMinorPatternRegex); - var patchRegex = TryGetRegexOrDefault(patchVersionBumpMessage, DefaultPatchPatternRegex); - var none = TryGetRegexOrDefault(noBumpMessage, DefaultNoBumpPatternRegex); + var majorRegex = TryGetRegexOrDefault(majorVersionBumpMessage, RegexPatterns.VersionCalculation.DefaultMajorPatternRegex); + var minorRegex = TryGetRegexOrDefault(minorVersionBumpMessage, RegexPatterns.VersionCalculation.DefaultMinorPatternRegex); + var patchRegex = TryGetRegexOrDefault(patchVersionBumpMessage, RegexPatterns.VersionCalculation.DefaultPatchPatternRegex); + var none = TryGetRegexOrDefault(noBumpMessage, RegexPatterns.VersionCalculation.DefaultNoBumpPatternRegex); var increments = commits .Select(c => GetIncrementFromCommit(c, majorRegex, minorRegex, patchRegex, none)) @@ -93,7 +83,7 @@ public VersionField DetermineIncrementedField( if (configuration.CommitMessageIncrementing == CommitMessageIncrementMode.MergeMessageOnly) { - commits = commits.Where(c => c.Parents.Count() > 1); + commits = commits.Where(c => c.Parents.Count > 1); } return GetIncrementForCommits( @@ -242,10 +232,10 @@ public VersionField GetIncrementForcedByCommit(ICommit commit, IGitVersionConfig commit.NotNull(); configuration.NotNull(); - var majorRegex = TryGetRegexOrDefault(configuration.MajorVersionBumpMessage, DefaultMajorPatternRegex); - var minorRegex = TryGetRegexOrDefault(configuration.MinorVersionBumpMessage, DefaultMinorPatternRegex); - var patchRegex = TryGetRegexOrDefault(configuration.PatchVersionBumpMessage, DefaultPatchPatternRegex); - var none = TryGetRegexOrDefault(configuration.NoBumpMessage, DefaultNoBumpPatternRegex); + var majorRegex = TryGetRegexOrDefault(configuration.MajorVersionBumpMessage, RegexPatterns.VersionCalculation.DefaultMajorPatternRegex); + var minorRegex = TryGetRegexOrDefault(configuration.MinorVersionBumpMessage, RegexPatterns.VersionCalculation.DefaultMinorPatternRegex); + var patchRegex = TryGetRegexOrDefault(configuration.PatchVersionBumpMessage, RegexPatterns.VersionCalculation.DefaultPatchPatternRegex); + var none = TryGetRegexOrDefault(configuration.NoBumpMessage, RegexPatterns.VersionCalculation.DefaultNoBumpPatternRegex); return GetIncrementFromCommit(commit, majorRegex, minorRegex, patchRegex, none) ?? VersionField.None; } diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunk.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunk.cs index 9b05e8cb88..0284350b91 100644 --- a/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunk.cs @@ -26,7 +26,7 @@ public IEnumerable GetIncrements( if (commit.Successor is null) { - yield return new BaseVersionOperator() + yield return new BaseVersionOperator { Source = GetType().Name, BaseVersionSource = context.BaseVersionSource, diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkBranchedBase.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkBranchedBase.cs index b926b41957..371cf513d6 100644 --- a/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkBranchedBase.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkBranchedBase.cs @@ -24,7 +24,7 @@ public virtual IEnumerable GetIncrements( context.Label = iterationEffectiveConfiguration.GetBranchSpecificLabel(iteration.BranchName, null) ?? context.Label; context.ForceIncrement = true; - yield return new BaseVersionOperator() + yield return new BaseVersionOperator { Source = GetType().Name, BaseVersionSource = null, diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs index d3cb4690fd..7c1c5c841a 100644 --- a/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithPreReleaseTagBase.cs @@ -15,7 +15,7 @@ public virtual IEnumerable GetIncrements( { context.BaseVersionSource = commit.Value; - yield return new BaseVersionOperand() + yield return new BaseVersionOperand { Source = GetType().Name, BaseVersionSource = context.BaseVersionSource, diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs index 89b7ef9f5d..37e3b68a49 100644 --- a/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/CommitOnNonTrunkWithStableTagBase.cs @@ -15,7 +15,7 @@ public virtual IEnumerable GetIncrements( { context.BaseVersionSource = commit.Value; - yield return new BaseVersionOperand() + yield return new BaseVersionOperand { Source = GetType().Name, BaseVersionSource = context.BaseVersionSource, diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastCommitOnNonTrunkWithPreReleaseTag.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastCommitOnNonTrunkWithPreReleaseTag.cs index 3316057741..5555fa3d93 100644 --- a/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastCommitOnNonTrunkWithPreReleaseTag.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastCommitOnNonTrunkWithPreReleaseTag.cs @@ -16,7 +16,7 @@ public override IEnumerable GetIncrements( yield return item; } - yield return new BaseVersionOperator() + yield return new BaseVersionOperator { Source = GetType().Name, BaseVersionSource = context.BaseVersionSource, diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastCommitOnNonTrunkWithStableTag.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastCommitOnNonTrunkWithStableTag.cs index c9fbed2946..a9eeff4b76 100644 --- a/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastCommitOnNonTrunkWithStableTag.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastCommitOnNonTrunkWithStableTag.cs @@ -16,7 +16,7 @@ public override IEnumerable GetIncrements( yield return item; } - yield return new BaseVersionOperator() + yield return new BaseVersionOperator { Source = GetType().Name, BaseVersionSource = context.BaseVersionSource, diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastMergeCommitOnNonTrunk.cs b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastMergeCommitOnNonTrunk.cs index 960b7c8002..4069f79444 100644 --- a/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastMergeCommitOnNonTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/NonTrunk/LastMergeCommitOnNonTrunk.cs @@ -17,7 +17,7 @@ public override IEnumerable GetIncrements( yield return item; } - yield return new BaseVersionOperator() + yield return new BaseVersionOperator { Source = GetType().Name, BaseVersionSource = context.BaseVersionSource, diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunk.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunk.cs index ad49fb058e..152b81577e 100644 --- a/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunk.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunk.cs @@ -24,7 +24,7 @@ public IEnumerable GetIncrements( context.Label ??= effectiveConfiguration.GetBranchSpecificLabel(commit.BranchName, null); context.ForceIncrement = true; - yield return new BaseVersionOperator() + yield return new BaseVersionOperator { Source = GetType().Name, BaseVersionSource = context.BaseVersionSource, diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkBranchedBase.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkBranchedBase.cs index c56cdea82e..ac2afa04a0 100644 --- a/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkBranchedBase.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkBranchedBase.cs @@ -31,7 +31,7 @@ public virtual IEnumerable GetIncrements( context.Label = iterationEffectiveConfiguration.GetBranchSpecificLabel(iteration.BranchName, null) ?? context.Label; context.ForceIncrement = true; - yield return new BaseVersionOperator() + yield return new BaseVersionOperator { Source = GetType().Name, BaseVersionSource = context.BaseVersionSource, diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs index 27e63c5205..b47e21886d 100644 --- a/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithPreReleaseTagBase.cs @@ -13,7 +13,7 @@ public virtual IEnumerable GetIncrements( { context.BaseVersionSource = commit.Value; - yield return new BaseVersionOperand() + yield return new BaseVersionOperand { Source = GetType().Name, BaseVersionSource = context.BaseVersionSource, diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithStableTagBase.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithStableTagBase.cs index bd1eae48d2..f9ca1a445b 100644 --- a/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithStableTagBase.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/CommitOnTrunkWithStableTagBase.cs @@ -14,7 +14,7 @@ public virtual IEnumerable GetIncrements( { context.BaseVersionSource = commit.Value; - yield return new BaseVersionOperand() + yield return new BaseVersionOperand { Source = GetType().Name, SemanticVersion = context.SemanticVersion.NotNull(), diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs index 7612974e9e..a625357f74 100644 --- a/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/LastCommitOnTrunkWithPreReleaseTag.cs @@ -26,7 +26,7 @@ public override IEnumerable GetIncrements( context.Label = effectiveConfiguration.GetBranchSpecificLabel(commit.BranchName, null); context.ForceIncrement = false; - yield return new BaseVersionOperator() + yield return new BaseVersionOperator { Source = GetType().Name, BaseVersionSource = context.BaseVersionSource, diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/LastCommitOnTrunkWithStableTag.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/LastCommitOnTrunkWithStableTag.cs index 525ee1f6b5..4b2df17267 100644 --- a/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/LastCommitOnTrunkWithStableTag.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/LastCommitOnTrunkWithStableTag.cs @@ -20,7 +20,7 @@ public override IEnumerable GetIncrements( { context.ForceIncrement = true; - yield return new BaseVersionOperator() + yield return new BaseVersionOperator { Source = GetType().Name, BaseVersionSource = context.BaseVersionSource, diff --git a/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/MergeCommitOnTrunkBase.cs b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/MergeCommitOnTrunkBase.cs index f731d26a7d..c625137232 100644 --- a/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/MergeCommitOnTrunkBase.cs +++ b/src/GitVersion.Core/VersionCalculation/Mainline/Trunk/MergeCommitOnTrunkBase.cs @@ -52,7 +52,7 @@ public virtual IEnumerable GetIncrements( if (context.SemanticVersion is not null) { - yield return new BaseVersionOperand() + yield return new BaseVersionOperand { Source = GetType().Name, BaseVersionSource = context.BaseVersionSource, @@ -60,7 +60,7 @@ public virtual IEnumerable GetIncrements( }; } - yield return new BaseVersionOperator() + yield return new BaseVersionOperator { Source = GetType().Name, BaseVersionSource = context.BaseVersionSource, diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs index 2c14c3ba54..41e16691e5 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs @@ -202,7 +202,7 @@ private NextVersion CalculateNextVersion(IBranch branch, IGitVersionConfiguratio BaseVersion calculatedBase = new() { - Operand = new BaseVersionOperand() + Operand = new BaseVersionOperand { Source = maxVersion.BaseVersion.Source, BaseVersionSource = latestBaseVersionSource, diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/ConfiguredNextVersionVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/ConfiguredNextVersionVersionStrategy.cs index 0cca57e4f3..1fa219988c 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/ConfiguredNextVersionVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/ConfiguredNextVersionVersionStrategy.cs @@ -34,7 +34,7 @@ public IEnumerable GetBaseVersions(EffectiveBranchConfiguration con BaseVersionOperator? operation = null; if (!semanticVersion.IsPreRelease || label is not null && semanticVersion.PreReleaseTag.Name != label) { - operation = new BaseVersionOperator() + operation = new BaseVersionOperator { Increment = VersionField.None, ForceIncrement = false, diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/FallbacktVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/FallbacktVersionStrategy.cs index bdc8e2d377..31858d5a4d 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/FallbacktVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/FallbacktVersionStrategy.cs @@ -49,9 +49,9 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur label: label ); - yield return new BaseVersion() + yield return new BaseVersion { - Operator = new BaseVersionOperator() + Operator = new BaseVersionOperator { Source = "Fallback base version", BaseVersionSource = baseVersionSource, diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs index c13012deb2..73aa3104f2 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs @@ -62,7 +62,7 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur yield return new BaseVersion( $"Git tag '{semanticVersionWithTag.Tag.Name.Friendly}'", semanticVersionWithTag.Value, baseVersionSource) { - Operator = new BaseVersionOperator() + Operator = new BaseVersionOperator { Increment = increment, ForceIncrement = false, diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrackReleaseBranchesVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrackReleaseBranchesVersionStrategy.cs index ac2f1291a3..fbafaddaf9 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrackReleaseBranchesVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TrackReleaseBranchesVersionStrategy.cs @@ -63,7 +63,7 @@ private bool TryGetBaseVersion( result = new BaseVersion( "Release branch exists -> " + baseVersion.Source, baseVersion.SemanticVersion, baseVersionSource) { - Operator = new BaseVersionOperator() + Operator = new BaseVersionOperator { Increment = increment, ForceIncrement = false, diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs index 512b73c11e..8c6af0f781 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs @@ -49,7 +49,7 @@ public bool TryGetBaseVersion(EffectiveBranchConfiguration configuration, [NotNu baseVersion = new BaseVersion("Version in branch name", result.Value) { - Operator = new BaseVersionOperator() + Operator = new BaseVersionOperator { Increment = VersionField.None, ForceIncrement = false, diff --git a/src/GitVersion.Output/AssemblyInfo/AssemblyInfoFileUpdater.cs b/src/GitVersion.Output/AssemblyInfo/AssemblyInfoFileUpdater.cs index 725edfb9c4..e731eb72a3 100644 --- a/src/GitVersion.Output/AssemblyInfo/AssemblyInfoFileUpdater.cs +++ b/src/GitVersion.Output/AssemblyInfo/AssemblyInfoFileUpdater.cs @@ -1,4 +1,5 @@ using System.Text.RegularExpressions; +using GitVersion.Core; using GitVersion.Extensions; using GitVersion.Helpers; using GitVersion.Logging; @@ -13,17 +14,13 @@ internal sealed class AssemblyInfoFileUpdater(ILog log, IFileSystem fileSystem) private readonly List restoreBackupTasks = []; private readonly List cleanupBackupTasks = []; - private readonly IDictionary assemblyAttributeRegexes = new Dictionary + private readonly Dictionary assemblyAttributeRegexes = new() { - {".cs", new Regex( @"(\s*\[\s*assembly:\s*(?:.*)\s*\]\s*$(\r?\n)?)", RegexOptions.Multiline) }, - {".fs", new Regex( @"(\s*\[\s*\\s*\]\s*$(\r?\n)?)", RegexOptions.Multiline) }, - {".vb", new Regex( @"(\s*\\s*$(\r?\n)?)", RegexOptions.Multiline) } + {".cs", RegexPatterns.Output.CsharpAssemblyAttributeRegex }, + {".fs", RegexPatterns.Output.FsharpAssemblyAttributeRegex }, + {".vb", RegexPatterns.Output.VisualBasicAssemblyAttributeRegex } }; - private readonly Regex assemblyVersionRegex = new(@"AssemblyVersion(Attribute)?\s*\(.*\)\s*"); - private readonly Regex assemblyInfoVersionRegex = new(@"AssemblyInformationalVersion(Attribute)?\s*\(.*\)\s*"); - private readonly Regex assemblyFileVersionRegex = new(@"AssemblyFileVersion(Attribute)?\s*\(.*\)\s*"); - private const string NewLine = "\r\n"; private readonly TemplateManager templateManager = new(TemplateType.AssemblyInfo); @@ -67,17 +64,17 @@ public void Execute(GitVersionVariables variables, AssemblyInfoContext context) if (!assemblyVersion.IsNullOrWhiteSpace()) { - fileContents = ReplaceOrInsertAfterLastAssemblyAttributeOrAppend(this.assemblyVersionRegex, fileContents, assemblyVersionString, assemblyInfoFile.Extension, ref appendedAttributes); + fileContents = ReplaceOrInsertAfterLastAssemblyAttributeOrAppend(RegexPatterns.Output.AssemblyVersionRegex, fileContents, assemblyVersionString, assemblyInfoFile.Extension, ref appendedAttributes); } if (!assemblyFileVersion.IsNullOrWhiteSpace()) { - fileContents = ReplaceOrInsertAfterLastAssemblyAttributeOrAppend(this.assemblyFileVersionRegex, fileContents, assemblyFileVersionString, assemblyInfoFile.Extension, ref appendedAttributes); + fileContents = ReplaceOrInsertAfterLastAssemblyAttributeOrAppend(RegexPatterns.Output.AssemblyFileVersionRegex, fileContents, assemblyFileVersionString, assemblyInfoFile.Extension, ref appendedAttributes); } if (!assemblyInfoVersion.IsNullOrWhiteSpace()) { - fileContents = ReplaceOrInsertAfterLastAssemblyAttributeOrAppend(this.assemblyInfoVersionRegex, fileContents, assemblyInfoVersionString, assemblyInfoFile.Extension, ref appendedAttributes); + fileContents = ReplaceOrInsertAfterLastAssemblyAttributeOrAppend(RegexPatterns.Output.AssemblyInfoVersionRegex, fileContents, assemblyInfoVersionString, assemblyInfoFile.Extension, ref appendedAttributes); } if (appendedAttributes) From a959326614ee385fc1ff81646c89dec3b647aa67 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Fri, 13 Sep 2024 11:44:19 +0200 Subject: [PATCH 196/544] Move regex patterns to a common file --- src/GitVersion.Core/Core/RegexPatterns.cs | 52 +++++++++++------------ 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/GitVersion.Core/Core/RegexPatterns.cs b/src/GitVersion.Core/Core/RegexPatterns.cs index 821163cfcf..3b57dc5c4f 100644 --- a/src/GitVersion.Core/Core/RegexPatterns.cs +++ b/src/GitVersion.Core/Core/RegexPatterns.cs @@ -6,36 +6,36 @@ internal static class RegexPatterns { internal static class Common { - public static readonly Regex SwitchArgumentRegex = new(@"/\w+:", RegexOptions.Compiled); - public static readonly Regex ObscurePasswordRegex = new("(https?://)(.+)(:.+@)", RegexOptions.Compiled); + public static Regex SwitchArgumentRegex { get; } = new(@"/\w+:", RegexOptions.Compiled); + public static Regex ObscurePasswordRegex { get; } = new("(https?://)(.+)(:.+@)", RegexOptions.Compiled); // This regex matches an expression to replace. // - env:ENV name OR a member name // - optional fallback value after " ?? " // - the fallback value should be a quoted string, but simple unquoted text is allowed for back compat - public static readonly Regex ExpandTokensRegex = new("""{((env:(?\w+))|(?\w+))(\s+(\?\?)??\s+((?\w+)|"(?.*)"))??}""", RegexOptions.Compiled); + public static Regex ExpandTokensRegex { get; } = new("""{((env:(?\w+))|(?\w+))(\s+(\?\?)??\s+((?\w+)|"(?.*)"))??}""", RegexOptions.Compiled); } internal static class MergeMessage { - public static readonly Regex DefaultMergeMessageRegex = new(@"^Merge (branch|tag) '(?[^']*)'(?: into (?[^\s]*))*", RegexOptions.IgnoreCase | RegexOptions.Compiled); - public static readonly Regex SmartGitMergeMessageRegex = new(@"^Finish (?[^\s]*)(?: into (?[^\s]*))*", RegexOptions.IgnoreCase | RegexOptions.Compiled); - public static readonly Regex BitBucketPullMergeMessageRegex = new(@"^Merge pull request #(?\d+) (from|in) (?.*) from (?[^\s]*) to (?[^\s]*)", RegexOptions.IgnoreCase | RegexOptions.Compiled); - public static readonly Regex BitBucketPullv7MergeMessageRegex = new(@"^Pull request #(?\d+).*\r?\n\r?\nMerge in (?.*) from (?[^\s]*) to (?[^\s]*)", RegexOptions.IgnoreCase | RegexOptions.Compiled); - public static readonly Regex BitBucketCloudPullMergeMessageRegex = new(@"^Merged in (?[^\s]*) \(pull request #(?\d+)\)", RegexOptions.IgnoreCase | RegexOptions.Compiled); - public static readonly Regex GitHubPullMergeMessageRegex = new(@"^Merge pull request #(?\d+) (from|in) (?:[^\s\/]+\/)?(?[^\s]*)(?: into (?[^\s]*))*", RegexOptions.IgnoreCase | RegexOptions.Compiled); - public static readonly Regex RemoteTrackingMergeMessageRegex = new(@"^Merge remote-tracking branch '(?[^\s]*)'(?: into (?[^\s]*))*", RegexOptions.IgnoreCase | RegexOptions.Compiled); - public static readonly Regex AzureDevOpsPullMergeMessageRegex = new(@"^Merge pull request (?\d+) from (?[^\s]*) into (?[^\s]*)", RegexOptions.IgnoreCase | RegexOptions.Compiled); + public static Regex DefaultMergeMessageRegex { get; } = new(@"^Merge (branch|tag) '(?[^']*)'(?: into (?[^\s]*))*", RegexOptions.IgnoreCase | RegexOptions.Compiled); + public static Regex SmartGitMergeMessageRegex { get; } = new(@"^Finish (?[^\s]*)(?: into (?[^\s]*))*", RegexOptions.IgnoreCase | RegexOptions.Compiled); + public static Regex BitBucketPullMergeMessageRegex { get; } = new(@"^Merge pull request #(?\d+) (from|in) (?.*) from (?[^\s]*) to (?[^\s]*)", RegexOptions.IgnoreCase | RegexOptions.Compiled); + public static Regex BitBucketPullv7MergeMessageRegex { get; } = new(@"^Pull request #(?\d+).*\r?\n\r?\nMerge in (?.*) from (?[^\s]*) to (?[^\s]*)", RegexOptions.IgnoreCase | RegexOptions.Compiled); + public static Regex BitBucketCloudPullMergeMessageRegex { get; } = new(@"^Merged in (?[^\s]*) \(pull request #(?\d+)\)", RegexOptions.IgnoreCase | RegexOptions.Compiled); + public static Regex GitHubPullMergeMessageRegex { get; } = new(@"^Merge pull request #(?\d+) (from|in) (?:[^\s\/]+\/)?(?[^\s]*)(?: into (?[^\s]*))*", RegexOptions.IgnoreCase | RegexOptions.Compiled); + public static Regex RemoteTrackingMergeMessageRegex { get; } = new(@"^Merge remote-tracking branch '(?[^\s]*)'(?: into (?[^\s]*))*", RegexOptions.IgnoreCase | RegexOptions.Compiled); + public static Regex AzureDevOpsPullMergeMessageRegex { get; } = new(@"^Merge pull request (?\d+) from (?[^\s]*) into (?[^\s]*)", RegexOptions.IgnoreCase | RegexOptions.Compiled); } internal static class Output { - public static readonly Regex AssemblyVersionRegex = new(@"AssemblyVersion(Attribute)?\s*\(.*\)\s*"); - public static readonly Regex AssemblyInfoVersionRegex = new(@"AssemblyInformationalVersion(Attribute)?\s*\(.*\)\s*"); - public static readonly Regex AssemblyFileVersionRegex = new(@"AssemblyFileVersion(Attribute)?\s*\(.*\)\s*"); - public static readonly Regex CsharpAssemblyAttributeRegex = new(@"(\s*\[\s*assembly:\s*(?:.*)\s*\]\s*$(\r?\n)?)", RegexOptions.Multiline); - public static readonly Regex FsharpAssemblyAttributeRegex = new(@"(\s*\[\s*\\s*\]\s*$(\r?\n)?)", RegexOptions.Multiline); - public static readonly Regex VisualBasicAssemblyAttributeRegex = new(@"(\s*\\s*$(\r?\n)?)", RegexOptions.Multiline); + public static Regex AssemblyVersionRegex { get; } = new(@"AssemblyVersion(Attribute)?\s*\(.*\)\s*"); + public static Regex AssemblyInfoVersionRegex { get; } = new(@"AssemblyInformationalVersion(Attribute)?\s*\(.*\)\s*"); + public static Regex AssemblyFileVersionRegex { get; } = new(@"AssemblyFileVersion(Attribute)?\s*\(.*\)\s*"); + public static Regex CsharpAssemblyAttributeRegex { get; } = new(@"(\s*\[\s*assembly:\s*(?:.*)\s*\]\s*$(\r?\n)?)", RegexOptions.Multiline); + public static Regex FsharpAssemblyAttributeRegex { get; } = new(@"(\s*\[\s*\\s*\]\s*$(\r?\n)?)", RegexOptions.Multiline); + public static Regex VisualBasicAssemblyAttributeRegex { get; } = new(@"(\s*\\s*$(\r?\n)?)", RegexOptions.Multiline); } internal static class VersionCalculation @@ -52,31 +52,31 @@ internal static class VersionCalculation //language=regexp public const string DefaultNoBumpPattern = @"\+semver:\s?(none|skip)"; - public static readonly Regex DefaultMajorPatternRegex = new(DefaultMajorPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); - public static readonly Regex DefaultMinorPatternRegex = new(DefaultMinorPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); - public static readonly Regex DefaultPatchPatternRegex = new(DefaultPatchPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); - public static readonly Regex DefaultNoBumpPatternRegex = new(DefaultNoBumpPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); + public static Regex DefaultMajorPatternRegex { get; } = new(DefaultMajorPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); + public static Regex DefaultMinorPatternRegex { get; } = new(DefaultMinorPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); + public static Regex DefaultPatchPatternRegex { get; } = new(DefaultPatchPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); + public static Regex DefaultNoBumpPatternRegex { get; } = new(DefaultNoBumpPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); } internal static class SemanticVersion { // uses the git-semver spec https://github.com/semver/semver/blob/master/semver.md - public static readonly Regex ParseStrictRegex = new( + public static Regex ParseStrictRegex { get; } = new( @"^(?0|[1-9]\d*)\.(?0|[1-9]\d*)\.(?0|[1-9]\d*)(?:-(?(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$", RegexOptions.Compiled | RegexOptions.IgnoreCase); - public static readonly Regex ParseLooseRegex = new( + public static Regex ParseLooseRegex { get; } = new( @"^(?(?\d+)(\.(?\d+))?(\.(?\d+))?)(\.(?\d+))?(-(?[^\+]*))?(\+(?.*))?$", RegexOptions.Compiled | RegexOptions.IgnoreCase); - public static readonly Regex ParseBuildMetaDataRegex = new( + public static Regex ParseBuildMetaDataRegex { get; } = new( @"(?\d+)?(\.?Branch(Name)?\.(?[^\.]+))?(\.?Sha?\.(?[^\.]+))?(?.*)", RegexOptions.Compiled | RegexOptions.IgnoreCase); - public static readonly Regex FormatBuildMetaDataRegex = new("[^0-9A-Za-z-.]", + public static Regex FormatBuildMetaDataRegex { get; } = new("[^0-9A-Za-z-.]", RegexOptions.Compiled | RegexOptions.IgnoreCase); - public static readonly Regex ParsePreReleaseTagRegex = new( + public static Regex ParsePreReleaseTagRegex { get; } = new( @"(?.*?)\.?(?\d+)?$", RegexOptions.Compiled | RegexOptions.IgnoreCase); } From 8c8c86d6629834b216f1ff52c3f984aeccdfaad4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 15:43:33 +0000 Subject: [PATCH 197/544] (deps): Bump the analyzers group across 2 directories with 2 updates Bumps the analyzers group with 2 updates in the /new-cli directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Bumps the analyzers group with 2 updates in the /src directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Updates `Roslynator.Analyzers` from 4.12.4 to 4.12.5 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.4...v4.12.5) Updates `Roslynator.Formatting.Analyzers` from 4.12.4 to 4.12.5 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.4...v4.12.5) Updates `Roslynator.Analyzers` from 4.12.4 to 4.12.5 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.4...v4.12.5) Updates `Roslynator.Formatting.Analyzers` from 4.12.4 to 4.12.5 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.4...v4.12.5) --- updated-dependencies: - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 4 ++-- src/Directory.Packages.props | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 6283af3557..fdb0786cbd 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -12,8 +12,8 @@ - - + + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index fd7269f72e..797d04fd75 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -14,8 +14,8 @@ - - + + From 317656820a1ac89d80aa95ee640deca0421857a1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 15:44:03 +0000 Subject: [PATCH 198/544] (deps): Bump YamlDotNet from 16.1.0 to 16.1.2 in /src Bumps [YamlDotNet](https://github.com/aaubry/YamlDotNet) from 16.1.0 to 16.1.2. - [Release notes](https://github.com/aaubry/YamlDotNet/releases) - [Commits](https://github.com/aaubry/YamlDotNet/compare/v16.1.0...v16.1.2) --- updated-dependencies: - dependency-name: YamlDotNet dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- docs/input/docs/workflows/GitFlow/v1.yml | 8 ++++---- docs/input/docs/workflows/GitHubFlow/v1.yml | 8 ++++---- docs/input/docs/workflows/TrunkBased/preview1.yml | 8 ++++---- src/Directory.Packages.props | 2 +- ...erTests.CanWriteOutEffectiveConfiguration.approved.txt | 8 ++++---- .../Workflows/approved/GitFlow/v1.yml | 8 ++++---- .../Workflows/approved/GitHubFlow/v1.yml | 8 ++++---- .../Workflows/approved/TrunkBased/preview1.yml | 8 ++++---- 8 files changed, 29 insertions(+), 29 deletions(-) diff --git a/docs/input/docs/workflows/GitFlow/v1.yml b/docs/input/docs/workflows/GitFlow/v1.yml index f839b27b94..3eaec755f8 100644 --- a/docs/input/docs/workflows/GitFlow/v1.yml +++ b/docs/input/docs/workflows/GitFlow/v1.yml @@ -2,10 +2,10 @@ assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* -major-version-bump-message: '\+semver:\s?(breaking|major)' -minor-version-bump-message: '\+semver:\s?(feature|minor)' -patch-version-bump-message: '\+semver:\s?(fix|patch)' -no-bump-message: '\+semver:\s?(none|skip)' +major-version-bump-message: \+semver:\s?(breaking|major) +minor-version-bump-message: \+semver:\s?(feature|minor) +patch-version-bump-message: \+semver:\s?(fix|patch) +no-bump-message: \+semver:\s?(none|skip) tag-pre-release-weight: 60000 commit-date-format: yyyy-MM-dd merge-message-formats: {} diff --git a/docs/input/docs/workflows/GitHubFlow/v1.yml b/docs/input/docs/workflows/GitHubFlow/v1.yml index 822fe7991f..0943cd01fa 100644 --- a/docs/input/docs/workflows/GitHubFlow/v1.yml +++ b/docs/input/docs/workflows/GitHubFlow/v1.yml @@ -2,10 +2,10 @@ assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* -major-version-bump-message: '\+semver:\s?(breaking|major)' -minor-version-bump-message: '\+semver:\s?(feature|minor)' -patch-version-bump-message: '\+semver:\s?(fix|patch)' -no-bump-message: '\+semver:\s?(none|skip)' +major-version-bump-message: \+semver:\s?(breaking|major) +minor-version-bump-message: \+semver:\s?(feature|minor) +patch-version-bump-message: \+semver:\s?(fix|patch) +no-bump-message: \+semver:\s?(none|skip) tag-pre-release-weight: 60000 commit-date-format: yyyy-MM-dd merge-message-formats: {} diff --git a/docs/input/docs/workflows/TrunkBased/preview1.yml b/docs/input/docs/workflows/TrunkBased/preview1.yml index 07012e4dd6..9bfb28dae6 100644 --- a/docs/input/docs/workflows/TrunkBased/preview1.yml +++ b/docs/input/docs/workflows/TrunkBased/preview1.yml @@ -2,10 +2,10 @@ assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* -major-version-bump-message: '\+semver:\s?(breaking|major)' -minor-version-bump-message: '\+semver:\s?(feature|minor)' -patch-version-bump-message: '\+semver:\s?(fix|patch)' -no-bump-message: '\+semver:\s?(none|skip)' +major-version-bump-message: \+semver:\s?(breaking|major) +minor-version-bump-message: \+semver:\s?(feature|minor) +patch-version-bump-message: \+semver:\s?(fix|patch) +no-bump-message: \+semver:\s?(none|skip) tag-pre-release-weight: 60000 commit-date-format: yyyy-MM-dd merge-message-formats: {} diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index fd7269f72e..c1744760aa 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -36,7 +36,7 @@ - + \ No newline at end of file diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt index 897bb5e169..e3bd60b3bf 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt @@ -2,10 +2,10 @@ assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* -major-version-bump-message: '\+semver:\s?(breaking|major)' -minor-version-bump-message: '\+semver:\s?(feature|minor)' -patch-version-bump-message: '\+semver:\s?(fix|patch)' -no-bump-message: '\+semver:\s?(none|skip)' +major-version-bump-message: \+semver:\s?(breaking|major) +minor-version-bump-message: \+semver:\s?(feature|minor) +patch-version-bump-message: \+semver:\s?(fix|patch) +no-bump-message: \+semver:\s?(none|skip) tag-pre-release-weight: 60000 commit-date-format: yyyy-MM-dd merge-message-formats: {} diff --git a/src/GitVersion.Configuration.Tests/Workflows/approved/GitFlow/v1.yml b/src/GitVersion.Configuration.Tests/Workflows/approved/GitFlow/v1.yml index f839b27b94..3eaec755f8 100644 --- a/src/GitVersion.Configuration.Tests/Workflows/approved/GitFlow/v1.yml +++ b/src/GitVersion.Configuration.Tests/Workflows/approved/GitFlow/v1.yml @@ -2,10 +2,10 @@ assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* -major-version-bump-message: '\+semver:\s?(breaking|major)' -minor-version-bump-message: '\+semver:\s?(feature|minor)' -patch-version-bump-message: '\+semver:\s?(fix|patch)' -no-bump-message: '\+semver:\s?(none|skip)' +major-version-bump-message: \+semver:\s?(breaking|major) +minor-version-bump-message: \+semver:\s?(feature|minor) +patch-version-bump-message: \+semver:\s?(fix|patch) +no-bump-message: \+semver:\s?(none|skip) tag-pre-release-weight: 60000 commit-date-format: yyyy-MM-dd merge-message-formats: {} diff --git a/src/GitVersion.Configuration.Tests/Workflows/approved/GitHubFlow/v1.yml b/src/GitVersion.Configuration.Tests/Workflows/approved/GitHubFlow/v1.yml index 822fe7991f..0943cd01fa 100644 --- a/src/GitVersion.Configuration.Tests/Workflows/approved/GitHubFlow/v1.yml +++ b/src/GitVersion.Configuration.Tests/Workflows/approved/GitHubFlow/v1.yml @@ -2,10 +2,10 @@ assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* -major-version-bump-message: '\+semver:\s?(breaking|major)' -minor-version-bump-message: '\+semver:\s?(feature|minor)' -patch-version-bump-message: '\+semver:\s?(fix|patch)' -no-bump-message: '\+semver:\s?(none|skip)' +major-version-bump-message: \+semver:\s?(breaking|major) +minor-version-bump-message: \+semver:\s?(feature|minor) +patch-version-bump-message: \+semver:\s?(fix|patch) +no-bump-message: \+semver:\s?(none|skip) tag-pre-release-weight: 60000 commit-date-format: yyyy-MM-dd merge-message-formats: {} diff --git a/src/GitVersion.Configuration.Tests/Workflows/approved/TrunkBased/preview1.yml b/src/GitVersion.Configuration.Tests/Workflows/approved/TrunkBased/preview1.yml index 07012e4dd6..9bfb28dae6 100644 --- a/src/GitVersion.Configuration.Tests/Workflows/approved/TrunkBased/preview1.yml +++ b/src/GitVersion.Configuration.Tests/Workflows/approved/TrunkBased/preview1.yml @@ -2,10 +2,10 @@ assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* -major-version-bump-message: '\+semver:\s?(breaking|major)' -minor-version-bump-message: '\+semver:\s?(feature|minor)' -patch-version-bump-message: '\+semver:\s?(fix|patch)' -no-bump-message: '\+semver:\s?(none|skip)' +major-version-bump-message: \+semver:\s?(breaking|major) +minor-version-bump-message: \+semver:\s?(feature|minor) +patch-version-bump-message: \+semver:\s?(fix|patch) +no-bump-message: \+semver:\s?(none|skip) tag-pre-release-weight: 60000 commit-date-format: yyyy-MM-dd merge-message-formats: {} From 6941b9fac104c54fd64da98701acb365c1cd60ec Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 17 Sep 2024 05:39:53 +0000 Subject: [PATCH 199/544] Docs changes --- docs/input/docs/reference/configuration.md | 24 +++++++++---------- .../Configuration/ConfigurationConstants.cs | 11 +++++++++ 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index 35e874cd32..cf52e3cfc0 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -45,10 +45,10 @@ assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* -major-version-bump-message: '\+semver:\s?(breaking|major)' -minor-version-bump-message: '\+semver:\s?(feature|minor)' -patch-version-bump-message: '\+semver:\s?(fix|patch)' -no-bump-message: '\+semver:\s?(none|skip)' +major-version-bump-message: \+semver:\s?(breaking|major) +minor-version-bump-message: \+semver:\s?(feature|minor) +patch-version-bump-message: \+semver:\s?(fix|patch) +no-bump-message: \+semver:\s?(none|skip) tag-pre-release-weight: 60000 commit-date-format: yyyy-MM-dd merge-message-formats: {} @@ -221,10 +221,10 @@ assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* -major-version-bump-message: '\+semver:\s?(breaking|major)' -minor-version-bump-message: '\+semver:\s?(feature|minor)' -patch-version-bump-message: '\+semver:\s?(fix|patch)' -no-bump-message: '\+semver:\s?(none|skip)' +major-version-bump-message: \+semver:\s?(breaking|major) +minor-version-bump-message: \+semver:\s?(feature|minor) +patch-version-bump-message: \+semver:\s?(fix|patch) +no-bump-message: \+semver:\s?(none|skip) tag-pre-release-weight: 60000 commit-date-format: yyyy-MM-dd merge-message-formats: {} @@ -346,10 +346,10 @@ assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* -major-version-bump-message: '\+semver:\s?(breaking|major)' -minor-version-bump-message: '\+semver:\s?(feature|minor)' -patch-version-bump-message: '\+semver:\s?(fix|patch)' -no-bump-message: '\+semver:\s?(none|skip)' +major-version-bump-message: \+semver:\s?(breaking|major) +minor-version-bump-message: \+semver:\s?(feature|minor) +patch-version-bump-message: \+semver:\s?(fix|patch) +no-bump-message: \+semver:\s?(none|skip) tag-pre-release-weight: 60000 commit-date-format: yyyy-MM-dd merge-message-formats: {} diff --git a/src/GitVersion.Core/Configuration/ConfigurationConstants.cs b/src/GitVersion.Core/Configuration/ConfigurationConstants.cs index 231633c927..f09f24f83d 100644 --- a/src/GitVersion.Core/Configuration/ConfigurationConstants.cs +++ b/src/GitVersion.Core/Configuration/ConfigurationConstants.cs @@ -22,10 +22,13 @@ internal static class ConfigurationConstants VersionStrategies.VersionInBranchName ]; public const string DefaultAssemblyInformationalFormat = "{InformationalVersion}"; + //language=regexp public const string DefaultTagPrefix = "[vV]?"; + //language=regexp public const string DefaultVersionInBranchPattern = @"(?[vV]?\d+(\.\d+)?(\.\d+)?).*"; public const string DefaultCommitDateFormat = "yyyy-MM-dd"; public const string BranchNamePlaceholder = "{BranchName}"; + //language=regexp public const string DefaultLabelNumberPattern = @"[/-](?\d+)"; public const bool DefaultUpdateBuildNumber = true; public const int DefaultTagPreReleaseWeight = 60000; @@ -40,12 +43,20 @@ internal static class ConfigurationConstants public const string SupportBranchKey = "support"; public const string UnknownBranchKey = "unknown"; + //language=regexp public const string MainBranchRegex = "^master$|^main$"; + //language=regexp public const string DevelopBranchRegex = "^dev(elop)?(ment)?$"; + //language=regexp public const string ReleaseBranchRegex = "^releases?[/-](?.+)"; + //language=regexp public const string FeatureBranchRegex = "^features?[/-](?.+)"; + //language=regexp public const string PullRequestBranchRegex = @"^(pull|pull\-requests|pr)[/-]"; + //language=regexp public const string HotfixBranchRegex = "^hotfix(es)?[/-](?.+)"; + //language=regexp public const string SupportBranchRegex = "^support[/-](?.+)"; + //language=regexp public const string UnknownBranchRegex = "(?.+)"; } From 99261238c1494fcb9a192e7649a0ae5a23fefa9e Mon Sep 17 00:00:00 2001 From: Bob Loblaw Date: Sat, 21 Sep 2024 14:52:27 +0200 Subject: [PATCH 200/544] Improve listing of version strategies in how-it-works.md --- docs/input/docs/learn/how-it-works.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/input/docs/learn/how-it-works.md b/docs/input/docs/learn/how-it-works.md index 36ba942451..75f3887631 100644 --- a/docs/input/docs/learn/how-it-works.md +++ b/docs/input/docs/learn/how-it-works.md @@ -19,8 +19,7 @@ GitVersion has three distinct steps for calculating versions in v3. 1. If the current commit is tagged, the tag is used and build metadata (excluding commit count) is added. The other two steps will not execute. 2. A set of strategies are evaluated to decide on the base version and some - metadata about that version. These strategies include HighestReachableTag, - NextVersionInConfig, MergedBranchWithVersion, VersionInBranchName etc. + metadata about that version. See [Version Strategies](#version-strategies) 3. The highest base version is selected, using that base version as the new version is calculated. @@ -35,35 +34,36 @@ info below. **+** This version is out of context with the rest of the example. It is here simply to show what happens if the check is true. -### Base Version Strategies +### Version Strategies Currently we have the following strategies: -* `HighestTagBaseVersionStrategy` - Finds the highest reachable tag from the - current branch -* `VersionInBranchBaseVersionStrategy` - Extracts version information from the +* `TaggedCommit` - Extracts version information from all tags on the branch which are valid, and not newer than the current commit. +* `VersionInBranchName` - Extracts version information from the branch name (e.g., `release/3.0.0` will find `3.0.0`) -* `ConfigNextVersionBaseVersionStrategy` - Returns the version from the +* `ConfiguredNextVersion` - Returns the version from the GitVersion.yaml file -* `MergeMessageBaseVersionStrategy` - Finds version numbers from merge messages +* `MergeMessage` - Finds version numbers from merge messages (e.g., `Merge 'release/3.0.0' into 'main'` will return `3.0.0`) -* `FallbackBaseVersionStrategy` - Always returns 0.0.0 and will be used for +* `Fallback` - Always returns 0.0.0 and will be used for calculating the next version which is dependent on the increment strategy of the effected branch (e.g. on main the next version is 0.0.1 or on develop it is 0.1.0) +* `TrackReleaseBranches` - TODO: Document this +* `Mainline` - TODO: Document this Each strategy needs to return an instance of `BaseVersion` which has the following properties: * `Source` - Description of the source (e.g., `Merge message 'Merge 'release/3.0.0' into 'main'`) * `ShouldIncrement` - Some strategies should have the version incremented, - others do not (e.g., `ConfigNextVersionBaseVersionStrategy` returns false, - `HighestTagBaseVersionStrategy` returns true) + others do not (e.g., `ConfiguredNextVersion` returns false, + `TaggedCommit` returns true) * `SemanticVersion` - SemVer of the base version strategy * `BaseVersionSource` - SHA hash of the source. Commits will be counted from - this hash. Can be null (e.g., `ConfigNextVersionBaseVersionStrategy` returns + this hash. Can be null (e.g., `ConfiguredNextVersion` returns null). * `BranchNameOverride` - When `useBranchName` or `{BranchName}` is used in the tag configuration, this allows the branch name to be changed by a base version. - `VersionInBranchBaseVersionStrategy` uses this to strip out anything before the + `VersionInBranchName` uses this to strip out anything before the first `-` or `/.` so `foo` ends up being evaluated as `foo`. If in doubt, just use null. From 5cd8b00b635b5a8442d3db575039d27a9f04456f Mon Sep 17 00:00:00 2001 From: Bob Loblaw Date: Sat, 21 Sep 2024 14:05:11 +0200 Subject: [PATCH 201/544] Fix Edit Diagram link on how-it-works.md --- docs/input/docs/learn/how-it-works.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/input/docs/learn/how-it-works.md b/docs/input/docs/learn/how-it-works.md index 75f3887631..a50b26a12b 100644 --- a/docs/input/docs/learn/how-it-works.md +++ b/docs/input/docs/learn/how-it-works.md @@ -25,9 +25,9 @@ GitVersion has three distinct steps for calculating versions in v3. Visually it looks something like this: -![Version Calculation](https://www.plantuml.com/plantuml/png/fLCxJyCm4DxzAsuib4P914i69De1CS38Vd6kYIN7ZcodK8aVp-KX6Y2fKCbY9NV-7lVb2WoOeoVOMRDNfH0lz1vUoNbbpGwrR3K6ws1p3rlk-bN8u972f2AC3GHEbLN8m1D1Jjg-mPuXAZvx9kL1ZW1KY5dOZczMI0Pf54VnHtf7jpaAWJg0sW-uXw4PK3Eb1sMaevfCW6i1\_0m6po1l7HfPJUxvu5XYUOHLWq5MLptCudmMK9--u5glJ0dIEaVo1Dw3JgVM6Km4cM9mzyrQXHuQHnj7chhl0JcnIrHjno1wiWtgfi8eWVK\_7OQAmBHrJWvORFVM2PmrE7AcWZGh-Lj0FvptVvLiUPnCdG_XhNhOov9wQ1fzv7nw5S5EwSvw6CDQNfnMwUAP0XQyQpj70nkx3Nn3p5NFY9IshbNWepKi8ublWFiSPkC0ee8El75Dv5aOxqZQBScbWpWn0Pe2wb6aM1p4Eea\_0G00) +![Version Calculation](https://www.plantuml.com/plantuml/png/fLCxJyCm4DxzAsuib4P914i69De1CS38Vd6kYIN7ZcodK8aVp-KX6Y2fKCbY9NV-7lVb2WoOeoVOMRDNfH0lz1vUoNbbpGwrR3K6ws1p3rlk-bN8u972f2AC3GHEbLN8m1D1Jjg-mPuXAZvx9kL1ZW1KY5dOZczMI0Pf54VnHtf7jpaAWJg0sW-uXw4PK3Eb1sMaevfCW6i1_0m6po1l7HfPJUxvu5XYUOHLWq5MLptCudmMK9--u5glJ0dIEaVo1Dw3JgVM6Km4cM9mzyrQXHuQHnj7chhl0JcnIrHjno1wiWtgfi8eWVK_7OQAmBHrJWvORFVM2PmrE7AcWZGh-Lj0FvptVvLiUPnCdG_XhNhOov9wQ1fzv7nw5S5EwSvw6CDQNfnMwUAP0XQyQpj70nkx3Nn3p5NFY9IshbNWepKi8ublWFiSPkC0ee8El75Dv5aOxqZQBScbWpWn0Pe2wb6aM1p4Eea_0G00) -[Edit Diagram](https://www.plantuml.com/plantuml/form?url=https://www.plantuml.com/plantuml/png/fLCxJyCm4DxzAsuib4P914i69De1CS38Vd6kYIN7ZcodK8aVp-KX6Y2fKCbY9NV-7lVb2WoOeoVOMRDNfH0lz1vUoNbbpGwrR3K6ws1p3rlk-bN8u972f2AC3GHEbLN8m1D1Jjg-mPuXAZvx9kL1ZW1KY5dOZczMI0Pf54VnHtf7jpaAWJg0sW-uXw4PK3Eb1sMaevfCW6i1\_0m6po1l7HfPJUxvu5XYUOHLWq5MLptCudmMK9--u5glJ0dIEaVo1Dw3JgVM6Km4cM9mzyrQXHuQHnj7chhl0JcnIrHjno1wiWtgfi8eWVK\_7OQAmBHrJWvORFVM2PmrE7AcWZGh-Lj0FvptVvLiUPnCdG_XhNhOov9wQ1fzv7nw5S5EwSvw6CDQNfnMwUAP0XQyQpj70nkx3Nn3p5NFY9IshbNWepKi8ublWFiSPkC0ee8El75Dv5aOxqZQBScbWpWn0Pe2wb6aM1p4Eea\_0G00) +[Edit Diagram](https://www.plantuml.com/plantuml/uml/fLCxJyCm4DxzAsuib4P914i69De1CS38Vd6kYIN7ZcodK8aVp-KX6Y2fKCbY9NV-7lVb2WoOeoVOMRDNfH0lz1vUoNbbpGwrR3K6ws1p3rlk-bN8u972f2AC3GHEbLN8m1D1Jjg-mPuXAZvx9kL1ZW1KY5dOZczMI0Pf54VnHtf7jpaAWJg0sW-uXw4PK3Eb1sMaevfCW6i1_0m6po1l7HfPJUxvu5XYUOHLWq5MLptCudmMK9--u5glJ0dIEaVo1Dw3JgVM6Km4cM9mzyrQXHuQHnj7chhl0JcnIrHjno1wiWtgfi8eWVK_7OQAmBHrJWvORFVM2PmrE7AcWZGh-Lj0FvptVvLiUPnCdG_XhNhOov9wQ1fzv7nw5S5EwSvw6CDQNfnMwUAP0XQyQpj70nkx3Nn3p5NFY9IshbNWepKi8ublWFiSPkC0ee8El75Dv5aOxqZQBScbWpWn0Pe2wb6aM1p4Eea_0G00) **\*** Some strategies allow the version to be incremented, others don't. More info below. From 13e2861191c7568188337bfe7af2b99c13b46d38 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 15:25:32 +0000 Subject: [PATCH 202/544] (deps): Bump xunit.assert from 2.9.0 to 2.9.1 in /build Bumps [xunit.assert](https://github.com/xunit/xunit) from 2.9.0 to 2.9.1. - [Commits](https://github.com/xunit/xunit/compare/2.9.0...2.9.1) --- updated-dependencies: - dependency-name: xunit.assert dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Directory.Packages.props b/build/Directory.Packages.props index e9174ae972..d17ffc4b93 100644 --- a/build/Directory.Packages.props +++ b/build/Directory.Packages.props @@ -15,6 +15,6 @@ - + \ No newline at end of file From c733fbbe90cf9dfc66799ca1e3ef6e9917616cf7 Mon Sep 17 00:00:00 2001 From: Bob Loblaw Date: Sat, 21 Sep 2024 14:07:16 +0200 Subject: [PATCH 203/544] Use correct target name in docs build instructions readme --- docs/readme.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/readme.md b/docs/readme.md index 6d89c8deaf..a4ab0556a0 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -21,7 +21,7 @@ To serve up the documentation locally, you need to run the following commands: ```shell -./build.ps1 -Stage build -Target PrepareBuild +./build.ps1 -Stage build -Target BuildPrepare ./build.ps1 -Stage build -Target Build ./build.ps1 -Stage docs -Target PreviewDocs ``` @@ -32,7 +32,7 @@ On Windows, you need to run the following commands in a PowerShell terminal: ```shell -./build.ps1 -Stage build -Target PrepareBuild +./build.ps1 -Stage build -Target BuildPrepare ./build.ps1 -Stage build -Target Build ./build.ps1 -Stage docs -Target PreviewDocs ``` @@ -43,14 +43,14 @@ First you need to [install PowerShell on macOS][ps-mac] or [Linux][ps-linux], then execute the following commands: ```shell -./build.ps1 -Stage build -Target PrepareBuild +./build.ps1 -Stage build -Target BuildPrepare ./build.ps1 -Stage build -Target Build ./build.ps1 -Stage docs -Target PreviewDocs ``` After pressing enter, the documentation will be generated and then served under -a local web server. Information about the URL that can be used to view the docs -will be shown in the output. Copy/paste this URL into a browser window. +a local web server. Information about the URL that can be used to view the docs +will be shown in the output. Copy/paste this URL into a browser window. [gitversion.net]: https://gitversion.net/ [forking]: https://guides.github.com/activities/forking/ From 0d366954b4bb134f7a68139c0c0b5c4656ea8516 Mon Sep 17 00:00:00 2001 From: Bob Loblaw Date: Mon, 23 Sep 2024 20:02:40 +0200 Subject: [PATCH 204/544] Replace TrunkBased strategy listing with Mainline --- docs/input/docs/reference/mdsource/configuration.source.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/input/docs/reference/mdsource/configuration.source.md b/docs/input/docs/reference/mdsource/configuration.source.md index 74b76fa054..6a29b96272 100644 --- a/docs/input/docs/reference/mdsource/configuration.source.md +++ b/docs/input/docs/reference/mdsource/configuration.source.md @@ -558,7 +558,7 @@ Specifies which version strategy implementation (one ore more) will be used to d - TaggedCommit - TrackReleaseBranches - VersionInBranchName -- TrunkBased +- Mainline [1145]: https://github.com/GitTools/GitVersion/issues/1145 [1366]: https://github.com/GitTools/GitVersion/issues/1366 From c3bf45b4f7f94242e15752b6a4e103e145e709f8 Mon Sep 17 00:00:00 2001 From: Bob Loblaw Date: Mon, 23 Sep 2024 19:55:28 +0200 Subject: [PATCH 205/544] Update description of Mainline strategy in how-it-works --- docs/input/docs/learn/how-it-works.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/input/docs/learn/how-it-works.md b/docs/input/docs/learn/how-it-works.md index a50b26a12b..0a13b5f38b 100644 --- a/docs/input/docs/learn/how-it-works.md +++ b/docs/input/docs/learn/how-it-works.md @@ -38,7 +38,8 @@ simply to show what happens if the check is true. Currently we have the following strategies: -* `TaggedCommit` - Extracts version information from all tags on the branch which are valid, and not newer than the current commit. +* `TaggedCommit` - Extracts version information from all tags on the branch which are valid, + and not newer than the current commit. * `VersionInBranchName` - Extracts version information from the branch name (e.g., `release/3.0.0` will find `3.0.0`) * `ConfiguredNextVersion` - Returns the version from the @@ -49,7 +50,7 @@ Currently we have the following strategies: calculating the next version which is dependent on the increment strategy of the effected branch (e.g. on main the next version is 0.0.1 or on develop it is 0.1.0) * `TrackReleaseBranches` - TODO: Document this -* `Mainline` - TODO: Document this +* `Mainline` - Increments the version on every commit for branches configured with `mode: Mainline` Each strategy needs to return an instance of `BaseVersion` which has the following properties: From 7872374843b42086031930073efec43707257b8e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Sep 2024 15:32:14 +0000 Subject: [PATCH 206/544] (deps): Bump the analyzers group across 2 directories with 2 updates Bumps the analyzers group with 2 updates in the /new-cli directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Bumps the analyzers group with 2 updates in the /src directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Updates `Roslynator.Analyzers` from 4.12.5 to 4.12.6 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.5...v4.12.6) Updates `Roslynator.Formatting.Analyzers` from 4.12.5 to 4.12.6 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.5...v4.12.6) Updates `Roslynator.Analyzers` from 4.12.5 to 4.12.6 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.5...v4.12.6) Updates `Roslynator.Formatting.Analyzers` from 4.12.5 to 4.12.6 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.5...v4.12.6) --- updated-dependencies: - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 4 ++-- src/Directory.Packages.props | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index fdb0786cbd..be6beb55eb 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -12,8 +12,8 @@ - - + + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index bd426057b0..b41fe5602d 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -14,8 +14,8 @@ - - + + From 95fae30ed3d0d8e4a5607eba1384fa077cee375b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Sep 2024 15:57:03 +0000 Subject: [PATCH 207/544] (deps): Bump xunit.assert from 2.9.1 to 2.9.2 in /build Bumps [xunit.assert](https://github.com/xunit/xunit) from 2.9.1 to 2.9.2. - [Commits](https://github.com/xunit/xunit/compare/2.9.1...2.9.2) --- updated-dependencies: - dependency-name: xunit.assert dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Directory.Packages.props b/build/Directory.Packages.props index d17ffc4b93..6cf9bc0619 100644 --- a/build/Directory.Packages.props +++ b/build/Directory.Packages.props @@ -15,6 +15,6 @@ - + \ No newline at end of file From 4f9a77c07e31916fdab74f2b084215aa5bde5fa8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Sep 2024 15:57:18 +0000 Subject: [PATCH 208/544] (deps): Bump Polly from 8.4.1 to 8.4.2 in /new-cli Bumps [Polly](https://github.com/App-vNext/Polly) from 8.4.1 to 8.4.2. - [Release notes](https://github.com/App-vNext/Polly/releases) - [Changelog](https://github.com/App-vNext/Polly/blob/main/CHANGELOG.md) - [Commits](https://github.com/App-vNext/Polly/compare/8.4.1...8.4.2) --- updated-dependencies: - dependency-name: Polly dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index be6beb55eb..b91e1f50f6 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -11,7 +11,7 @@ - + From 48db914e60950eac0045d523118794c9030acc48 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Sep 2024 16:33:23 +0000 Subject: [PATCH 209/544] (deps): Bump Polly from 8.4.1 to 8.4.2 in /src Bumps [Polly](https://github.com/App-vNext/Polly) from 8.4.1 to 8.4.2. - [Release notes](https://github.com/App-vNext/Polly/releases) - [Changelog](https://github.com/App-vNext/Polly/blob/main/CHANGELOG.md) - [Commits](https://github.com/App-vNext/Polly/compare/8.4.1...8.4.2) --- updated-dependencies: - dependency-name: Polly dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index b41fe5602d..c8e2ab6bba 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -13,7 +13,7 @@ - + From 729cff898d14f57fcf725b771eec39dad28fcd0e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 28 Sep 2024 19:28:31 +0000 Subject: [PATCH 210/544] (deps): Bump YamlDotNet from 16.1.2 to 16.1.3 in /src Bumps [YamlDotNet](https://github.com/aaubry/YamlDotNet) from 16.1.2 to 16.1.3. - [Release notes](https://github.com/aaubry/YamlDotNet/releases) - [Commits](https://github.com/aaubry/YamlDotNet/compare/v16.1.2...v16.1.3) --- updated-dependencies: - dependency-name: YamlDotNet dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index c8e2ab6bba..81b14d0301 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -36,7 +36,7 @@ - + \ No newline at end of file From 26bb2472edbf219d1de40d51567929616bac2a7c Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 1 Oct 2024 01:18:25 +0200 Subject: [PATCH 211/544] update dotnet sdk to 8.0.402 --- .github/workflows/mkdocs.yml | 5 +++++ global.json | 2 +- src/GitVersion.sln.DotSettings | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/mkdocs.yml b/.github/workflows/mkdocs.yml index 83550f71b6..9182452b60 100644 --- a/.github/workflows/mkdocs.yml +++ b/.github/workflows/mkdocs.yml @@ -20,6 +20,11 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - + name: Setup .NET SDK + uses: actions/setup-dotnet@v4 + with: + global-json-file: global.json - name: Run MarkdownSnippets run: | diff --git a/global.json b/global.json index f615276dd3..d0ef4f8df2 100644 --- a/global.json +++ b/global.json @@ -5,6 +5,6 @@ "src" ], "sdk": { - "version": "8.0.401" + "version": "8.0.402" } } diff --git a/src/GitVersion.sln.DotSettings b/src/GitVersion.sln.DotSettings index a57b7e3685..9d9eae6664 100644 --- a/src/GitVersion.sln.DotSettings +++ b/src/GitVersion.sln.DotSettings @@ -696,6 +696,7 @@ II.2.12 <HandlesEvent /> True True True + True True True True From 4e9e6279d5951f6e4b13e2321dc498d78e748d25 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 05:43:06 +0000 Subject: [PATCH 212/544] (deps): Bump JsonSchema.Net.Generation from 4.5.0 to 4.5.1 in /src Bumps [JsonSchema.Net.Generation](https://github.com/json-everything/json-everything) from 4.5.0 to 4.5.1. - [Commits](https://github.com/json-everything/json-everything/commits/schema-gen-v4.5.1) --- updated-dependencies: - dependency-name: JsonSchema.Net.Generation dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 81b14d0301..e423eb09c6 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -18,7 +18,7 @@ - + From c2d64014386d9a863ba571271acc3ec4a131af2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 15:54:39 +0000 Subject: [PATCH 213/544] (docs deps): Bump the remark group with 3 updates Bumps the remark group with 3 updates: [remark-lint-no-auto-link-without-protocol](https://github.com/remarkjs/remark-lint), [remark-lint-no-dead-urls](https://github.com/remarkjs/remark-lint-no-dead-urls) and [remark-lint-no-inline-padding](https://github.com/remarkjs/remark-lint). Updates `remark-lint-no-auto-link-without-protocol` from 3.1.2 to 4.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/4.0.0) Updates `remark-lint-no-dead-urls` from 1.1.0 to 2.0.0 - [Release notes](https://github.com/remarkjs/remark-lint-no-dead-urls/releases) - [Commits](https://github.com/remarkjs/remark-lint-no-dead-urls/compare/v1.1.0...2.0.0) Updates `remark-lint-no-inline-padding` from 4.1.2 to 5.0.0 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.0/history.md) - [Commits](https://github.com/remarkjs/remark-lint/commits/5.0.0) --- updated-dependencies: - dependency-name: remark-lint-no-auto-link-without-protocol dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-dead-urls dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark - dependency-name: remark-lint-no-inline-padding dependency-type: direct:development update-type: version-update:semver-major dependency-group: remark ... Signed-off-by: dependabot[bot] --- package-lock.json | 2483 +++++++++++++++++++++++++++++---------------- package.json | 6 +- 2 files changed, 1604 insertions(+), 885 deletions(-) diff --git a/package-lock.json b/package-lock.json index 95d92488d0..c5f6fb7147 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,10 +33,10 @@ "remark-lint-list-item-content-indent": "^4.0.0", "remark-lint-list-item-indent": "^4.0.0", "remark-lint-maximum-heading-length": "^4.0.0", - "remark-lint-no-auto-link-without-protocol": "^3.1.2", + "remark-lint-no-auto-link-without-protocol": "^4.0.0", "remark-lint-no-blockquote-without-marker": "^6.0.0", "remark-lint-no-consecutive-blank-lines": "^5.0.0", - "remark-lint-no-dead-urls": "^1.1.0", + "remark-lint-no-dead-urls": "^2.0.0", "remark-lint-no-duplicate-definitions": "^4.0.0", "remark-lint-no-duplicate-headings": "^4.0.0", "remark-lint-no-emphasis-as-heading": "^4.0.0", @@ -50,7 +50,7 @@ "remark-lint-no-heading-content-indent": "^5.0.0", "remark-lint-no-heading-indent": "^5.0.0", "remark-lint-no-heading-like-paragraph": "^4.0.0", - "remark-lint-no-inline-padding": "^4.1.2", + "remark-lint-no-inline-padding": "^5.0.0", "remark-lint-no-literal-urls": "^4.0.0", "remark-lint-no-multiple-toplevel-headings": "^4.0.0", "remark-lint-no-reference-like-url": "^4.0.0", @@ -370,9 +370,9 @@ } }, "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", - "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "dev": true }, "node_modules/@npmcli/config": { @@ -490,15 +490,15 @@ } }, "node_modules/@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", "dev": true, "dependencies": { "@types/http-cache-semantics": "*", - "@types/keyv": "*", + "@types/keyv": "^3.1.4", "@types/node": "*", - "@types/responselike": "*" + "@types/responselike": "^1.0.0" } }, "node_modules/@types/concat-stream": { @@ -550,9 +550,9 @@ "dev": true }, "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", "dev": true }, "node_modules/@types/is-empty": { @@ -561,12 +561,6 @@ "integrity": "sha512-a3xgqnFTuNJDm1fjsTjHocYJ40Cz3t8utYpi5GNaxzrJC2HSD08ym+whIL7fNqiqBCdM9bcqD1H/tORWAFXoZw==", "dev": true }, - "node_modules/@types/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==", - "dev": true - }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -583,15 +577,6 @@ "@types/node": "*" } }, - "node_modules/@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", - "dev": true, - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/@types/ms": { "version": "0.7.31", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", @@ -614,9 +599,9 @@ "dev": true }, "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", "dev": true, "dependencies": { "@types/node": "*" @@ -686,16 +671,19 @@ } }, "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", "dev": true, "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ajv": { @@ -892,6 +880,16 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/bcp-47-match": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", + "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -901,6 +899,12 @@ "node": ">=8" } }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -949,9 +953,9 @@ } }, "node_modules/cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", "dev": true, "dependencies": { "clone-response": "^1.0.2", @@ -1057,21 +1061,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/check-links": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/check-links/-/check-links-1.1.8.tgz", - "integrity": "sha512-lxt1EeQ1CVkmiZzPfbPufperYK0t7MvhdLs3zlRH9areA6NVT1tcGymAdJONolNWQBdCFU/sek59RpeLmVHCnw==", - "dev": true, - "dependencies": { - "got": "^9.6.0", - "is-relative-url": "^2.0.0", - "p-map": "^2.0.0", - "p-memoize": "^2.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -1109,12 +1098,45 @@ } }, "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", "dev": true, + "dependencies": { + "escape-string-regexp": "5.0.0" + }, "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clean-stack/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clone-regexp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-3.0.0.tgz", + "integrity": "sha512-ujdnoq2Kxb8s3ItNBtnYeXdm07FcU0u8ARAT1lQ2YdMwQC+cdiXX8KoqMVuglztILivceTtp4ivqGSmEmhBUJw==", + "dev": true, + "dependencies": { + "is-regexp": "^3.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/clone-response": { @@ -1179,19 +1201,6 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node_modules/compress-brotli": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", - "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", - "dev": true, - "dependencies": { - "@types/json-buffer": "~3.0.0", - "json-buffer": "~3.0.1" - }, - "engines": { - "node": ">= 12" - } - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1214,6 +1223,18 @@ "typedarray": "^0.0.6" } }, + "node_modules/convert-hrtime": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", + "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/core-js-pure": { "version": "3.20.2", "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.2.tgz", @@ -1240,6 +1261,22 @@ "node": ">= 8" } }, + "node_modules/css-selector-parser": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.0.5.tgz", + "integrity": "sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -1247,6 +1284,116 @@ "dev": true, "peer": true }, + "node_modules/dead-or-alive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dead-or-alive/-/dead-or-alive-1.0.3.tgz", + "integrity": "sha512-LJ2tGXmux1dx6FcuhwKcbHJPiR2OKiPWBY/6Yj6EfFdObK3nue69DlGFr1cUeRmtalqRhWXMztXMcEXJP59XKw==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0", + "fast-content-type-parse": "^2.0.0", + "hast-util-from-html-isomorphic": "^2.0.0", + "hast-util-is-element": "^3.0.0", + "hast-util-select": "^6.0.0", + "html-url-attributes": "^3.0.0", + "levenshtein-edit-distance": "^3.0.0", + "undici": "^6.0.0", + "unist-util-visit": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dead-or-alive/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + }, + "node_modules/dead-or-alive/node_modules/levenshtein-edit-distance": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/levenshtein-edit-distance/-/levenshtein-edit-distance-3.0.1.tgz", + "integrity": "sha512-/qMCkZbrAF7jZP/voqlkfNrBtEn0TMdhCK7OEBh/zb39t/c3wCnTjwU1ZvrMfQ3OxB8sBQXIpWRMM6FiQJVG3g==", + "dev": true, + "bin": { + "levenshtein-edit-distance": "cli.js" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dead-or-alive/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/dead-or-alive/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/dead-or-alive/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/dead-or-alive/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/dead-or-alive/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -1355,10 +1502,23 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/direction": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz", + "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==", + "dev": true, + "bin": { + "direction": "cli.js" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/dns-packet": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", - "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" @@ -1432,6 +1592,18 @@ "node": ">=8.6" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -2001,6 +2173,12 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, + "node_modules/fast-content-type-parse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.0.tgz", + "integrity": "sha512-fCqg/6Sps8tqk8p+kqyKqYfOF0VjPNYrqpLiqNl0RBKmD80B080AJWVV6EkSkscjToNExcXg1+Mfzftrx6+iSA==", + "dev": true + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2133,6 +2311,18 @@ "dev": true, "peer": true }, + "node_modules/function-timeout": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-0.1.1.tgz", + "integrity": "sha512-0NVVC0TaP7dSTvn1yMiy6d6Q8gifzbvQafO46RtLG/kHJUBNd+pVRGOBoK44wNBvtSPUJRfdVvkFdD3p0xvyZg==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", @@ -2256,9 +2446,9 @@ } }, "node_modules/got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", "dev": true, "dependencies": { "@sindresorhus/is": "^4.0.0", @@ -2342,44 +2532,375 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hosted-git-info": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", - "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "node_modules/hast-util-from-dom": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.0.tgz", + "integrity": "sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==", "dev": true, "dependencies": { - "lru-cache": "^10.0.1" + "@types/hast": "^3.0.0", + "hastscript": "^8.0.0", + "web-namespaces": "^2.0.0" }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "node_modules/hast-util-from-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", "dev": true, - "engines": { - "node": "14 || >=16.14" + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "node_modules/hast-util-from-html-isomorphic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz", + "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==", "dev": true, "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" + "@types/hast": "^3.0.0", + "hast-util-from-dom": "^5.0.0", + "hast-util-from-html": "^2.0.0", + "unist-util-remove-position": "^5.0.0" }, - "engines": { - "node": ">=10.19.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + }, + "node_modules/hast-util-from-html/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html/node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + }, + "node_modules/hast-util-from-parse5/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5/node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-has-property": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", + "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.2.tgz", + "integrity": "sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "bcp-47-match": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "css-selector-parser": "^3.0.0", + "devlop": "^1.0.0", + "direction": "^2.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "not": "^0.1.0", + "nth-check": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + }, + "node_modules/hast-util-select/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/html-url-attributes": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz", + "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" } }, "node_modules/ignore": { @@ -2432,12 +2953,15 @@ } }, "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/infer-owner": { @@ -2487,21 +3011,15 @@ } }, "node_modules/ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", + "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-alphabetical": { @@ -2576,29 +3094,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, "node_modules/is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", @@ -2698,15 +3193,19 @@ } }, "node_modules/is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-5.0.1.tgz", + "integrity": "sha512-FCsGHdlrOnZQcp0+XT5a+pYowf33itBalCl+7ovNXC/7o5BhIpG14M3OrpPPdBSIQJCm+0M5+9mO7S9VVTTCFw==", "dev": true, "dependencies": { - "ip-regex": "^4.0.0" + "ip-regex": "^5.0.0", + "super-regex": "^0.2.0" }, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-negative-zero": { @@ -2748,18 +3247,18 @@ } }, "node_modules/is-online": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/is-online/-/is-online-8.5.1.tgz", - "integrity": "sha512-RKyTQx/rJqw2QOXHwy7TmXdlkpe0Hhj7GBsr6TQJaj4ebNOfameZCMspU5vYbwBBzJ2brWArdSvNVox6T6oCTQ==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/is-online/-/is-online-11.0.0.tgz", + "integrity": "sha512-LY3UOlRGCofw5RMhsEFHQ9xQ6jJXL9wFWWIfmSdNo8vO+DrIvan3G9hAPZiMRXddVZS2v9+CV4z9PslLhBGIyA==", "dev": true, "dependencies": { - "got": "^9.6.0", - "p-any": "^2.0.0", - "p-timeout": "^3.0.0", - "public-ip": "^4.0.1" + "got": "^13.0.0", + "p-any": "^4.0.0", + "p-timeout": "^6.1.2", + "public-ip": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2794,16 +3293,16 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-relative-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-relative-url/-/is-relative-url-2.0.0.tgz", - "integrity": "sha1-cpAtf+BLPUeS59sV+duEtyBMnO8=", + "node_modules/is-regexp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-3.1.0.tgz", + "integrity": "sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==", "dev": true, - "dependencies": { - "is-absolute-url": "^2.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-shared-array-buffer": { @@ -2957,12 +3456,11 @@ } }, "node_modules/keyv": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.4.1.tgz", - "integrity": "sha512-PzByhNxfBLnSBW2MZi1DF+W5+qB/7BMpOokewqIvqS8GFtP7xHm2oeGU72Y1fhtfOv/FiEnI4+nyViYDmUChnw==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "dependencies": { - "compress-brotli": "^1.3.8", "json-buffer": "3.0.1" } }, @@ -3080,18 +3578,6 @@ "node": ">=10" } }, - "node_modules/map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "dependencies": { - "p-defer": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/markdown-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", @@ -3776,42 +4262,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "dependencies": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/mem/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/micromark": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", @@ -4270,15 +4720,6 @@ } ] }, - "node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", @@ -4417,12 +4858,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/not": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz", + "integrity": "sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==", + "dev": true + }, "node_modules/npm-normalize-package-bin": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", "dev": true }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -4564,17 +5023,28 @@ } }, "node_modules/p-any": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-any/-/p-any-2.1.0.tgz", - "integrity": "sha512-JAERcaMBLYKMq+voYw36+x5Dgh47+/o7yuv2oQYuSSUml4YeqJEFznBrY2UeEkoSHqBua6hz518n/PsowTYLLg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-any/-/p-any-4.0.0.tgz", + "integrity": "sha512-S/B50s+pAVe0wmEZHmBs/9yJXeZ5KhHzOsgKzt0hRdgkoR3DxW9ts46fcsWi/r3VnzsnkKS7q4uimze+zjdryw==", "dev": true, "dependencies": { - "p-cancelable": "^2.0.0", - "p-some": "^4.0.0", - "type-fest": "^0.3.0" + "p-cancelable": "^3.0.0", + "p-some": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-any/node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, + "engines": { + "node": ">=12.20" } }, "node_modules/p-cancelable": { @@ -4586,78 +5056,41 @@ "node": ">=8" } }, - "node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-memoize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-memoize/-/p-memoize-2.1.0.tgz", - "integrity": "sha512-c6+a2iV4JyX0r4+i2IBJYO0r6LZAT2fg/tcB6GQbv1uzZsfsmKT7Ej5DRT1G6Wi7XUJSV2ZiP9+YEtluvhCmkg==", + "node_modules/p-some": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-some/-/p-some-6.0.0.tgz", + "integrity": "sha512-CJbQCKdfSX3fIh8/QKgS+9rjm7OBNUTmwWswAFQAhc8j1NR1dsEDETUEuVUtQHZpV+J03LqWBEwvu0g1Yn+TYg==", "dev": true, "dependencies": { - "mem": "^4.0.0", - "mimic-fn": "^1.0.0" + "aggregate-error": "^4.0.0", + "p-cancelable": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-some": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-some/-/p-some-4.1.0.tgz", - "integrity": "sha512-MF/HIbq6GeBqTrTIl5OJubzkGU+qfFhAFi0gnTAK6rgEIJIknEiABHOTtQu4e6JiXjIwuMPMUFQzyHh5QjCl1g==", + "node_modules/p-some/node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0", - "p-cancelable": "^2.0.0" - }, "engines": { - "node": ">=8" + "node": ">=12.20" } }, "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz", + "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==", "dev": true, - "dependencies": { - "p-finally": "^1.0.0" - }, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/parent-module": { @@ -4812,6 +5245,18 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/passive-voice": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/passive-voice/-/passive-voice-0.1.0.tgz", @@ -4941,6 +5386,16 @@ "react-is": "^16.13.1" } }, + "node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/propose": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/propose/-/propose-0.0.5.tgz", @@ -4951,26 +5406,26 @@ } }, "node_modules/public-ip": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/public-ip/-/public-ip-4.0.4.tgz", - "integrity": "sha512-EJ0VMV2vF6Cu7BIPo3IMW1Maq6ME+fbR0NcPmqDfpfNGIRPue1X8QrGjrg/rfjDkOsIkKHIf2S5FlEa48hFMTA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/public-ip/-/public-ip-7.0.1.tgz", + "integrity": "sha512-DdNcqcIbI0wEeCBcqX+bmZpUCvrDMJHXE553zgyG1MZ8S1a/iCCxmK9iTjjql+SpHSv4cZkmRv5/zGYW93AlCw==", "dev": true, "dependencies": { "dns-socket": "^4.2.2", - "got": "^9.6.0", - "is-ip": "^3.1.0" + "got": "^13.0.0", + "is-ip": "^5.0.1" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, "dependencies": { "end-of-stream": "^1.1.0", @@ -8642,23 +9097,11 @@ } }, "node_modules/remark-lint-no-auto-link-without-protocol": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-3.1.2.tgz", - "integrity": "sha512-mPIdFOGxdDhCMa2qIzjzjDzDoQeyK+/1BBgsseqThuBtoAoXR5l1TZfII2isNbBo6L8d+fMFdx1/3qALoDjtcA==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-4.0.0.tgz", + "integrity": "sha512-m9P2KgLxblySJ/0bI3MSsDYv3Bem7Ynz5P0OVAJlGvHra/YQyszyd6U/oUavTbel+8sPPymHtNAUTkiDLobn4A==", + "deprecated": "Deprecated", + "dev": true }, "node_modules/remark-lint-no-blockquote-without-marker": { "version": "6.0.0", @@ -8965,67 +9408,153 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-dead-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-dead-urls/-/remark-lint-no-dead-urls-1.1.0.tgz", - "integrity": "sha512-it3EZmMQ+hwGhUf60NkXN0mMIFuFkS0cxdbgEbhZ/Fj1PlUBpe3gDBtWJ/sqNwSNvQlNSzpvMQkNHSoAhlsVjA==", + "node_modules/remark-lint-no-dead-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-dead-urls/-/remark-lint-no-dead-urls-2.0.0.tgz", + "integrity": "sha512-7kJ5rZ6fuuLt6iG2XS/uShVik0LYzshspZ/hNm/oPybXnJrehsYT31Y5AjeX57Mm7DAc7Q8EMSgeDiK/8SYYhQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "dead-or-alive": "^1.0.0", + "devlop": "^1.0.0", + "is-online": "^11.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-no-dead-urls/node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-lint-no-dead-urls/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + }, + "node_modules/remark-lint-no-dead-urls/node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-no-dead-urls/node_modules/unified-lint-rule": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-no-dead-urls/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-no-dead-urls/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, "dependencies": { - "check-links": "^1.1.8", - "is-online": "^8.2.1", - "unified-lint-rule": "^1.0.4", - "unist-util-visit": "^2.0.1" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">=6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-dead-urls/node_modules/unified-lint-rule": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", - "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", + "node_modules/remark-lint-no-dead-urls/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", "dev": true, "dependencies": { - "wrapped": "^1.0.1" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-dead-urls/node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "node_modules/remark-lint-no-dead-urls/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-dead-urls/node_modules/unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "node_modules/remark-lint-no-dead-urls/node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-dead-urls/node_modules/unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "node_modules/remark-lint-no-dead-urls/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", @@ -10777,22 +11306,11 @@ } }, "node_modules/remark-lint-no-inline-padding": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-4.1.2.tgz", - "integrity": "sha512-dGyhWsiqCZS3Slob0EVBUfsFBbdpMIBCvb56LlCgaHbnLsnNYx8PpF/wA5CgsN8BXIbXfRpyPB5cIJwIq5taYg==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-5.0.0.tgz", + "integrity": "sha512-d88MYpPv4SAWUBmB6QS6gU4vgg5y66IesjijwQT0yg4HwENcO5IbMLs3WDqo6w53DOQPqw+MmDRszP9XaEePIw==", + "deprecated": "Deprecated", + "dev": true }, "node_modules/remark-lint-no-literal-urls": { "version": "4.0.0", @@ -14866,6 +15384,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/super-regex": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-0.2.0.tgz", + "integrity": "sha512-WZzIx3rC1CvbMDloLsVw0lkZVKJWbrkJ0k1ghKFmcnPrW1+jWbgTkTEWVtD9lMdmI4jZEz40+naBxl1dCUhXXw==", + "dev": true, + "dependencies": { + "clone-regexp": "^3.0.0", + "function-timeout": "^0.1.0", + "time-span": "^5.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -14904,6 +15439,21 @@ "integrity": "sha1-cXNhKGlirI3za3omGft3OhW5t/c=", "dev": true }, + "node_modules/time-span": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", + "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", + "dev": true, + "dependencies": { + "convert-hrtime": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -14985,15 +15535,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -15016,23 +15557,13 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/unified": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.1.tgz", - "integrity": "sha512-v4ky1+6BN9X3pQrOdkFIPWAaeDsHPE1svRDxq7YpTc2plkIqFMwukfqM+l0ewpP9EfwARlt9pPFAeWYhHm8X9w==", + "node_modules/undici": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", + "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=18.17" } }, "node_modules/unified-args": { @@ -15195,22 +15726,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unified-lint-rule": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-2.1.1.tgz", - "integrity": "sha512-vsLHyLZFstqtGse2gvrGwasOmH8M2y+r2kQMoDSWzSqUkQx2MjHjvZuGSv5FUaiv4RQO1bHRajy7lSGp7XWq5A==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "trough": "^2.0.0", - "unified": "^10.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unified-message-control": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-5.0.0.tgz", @@ -15321,16 +15836,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-generated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", - "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-inspect": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-8.0.0.tgz", @@ -15350,16 +15855,6 @@ "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", "dev": true }, - "node_modules/unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-map": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/unist-util-map/-/unist-util-map-1.0.5.tgz", @@ -15389,16 +15884,6 @@ "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", "dev": true }, - "node_modules/unist-util-position": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.1.tgz", - "integrity": "sha512-mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-remove-position": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", @@ -15461,19 +15946,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-stringify-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", - "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-to-list-of-char": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/unist-util-to-list-of-char/-/unist-util-to-list-of-char-0.1.3.tgz", @@ -15518,21 +15990,6 @@ "unist-util-is": "^3.0.0" } }, - "node_modules/unist-util-visit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.0.tgz", - "integrity": "sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-visit-children": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", @@ -15552,20 +16009,6 @@ "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", "dev": true }, - "node_modules/unist-util-visit-parents": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", - "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -15589,22 +16032,6 @@ "dev": true, "peer": true }, - "node_modules/vfile": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.0.tgz", - "integrity": "sha512-Tj44nY/48OQvarrE4FAjUfrv7GZOYzPbl5OD65HxVKwLJKMPU7zmfV8cCgCnzKWnSfYG2f3pxu+ALqs7j22xQQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/vfile-location": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", @@ -15667,20 +16094,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-message": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.0.tgz", - "integrity": "sha512-4QJbBk+DkPEhBXq3f260xSaWtjE4gPKOfulzfMFF8ZNwaPZieWsg3iVlcmF04+eebzpcpeXOOFMfrYzJHVYg+g==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/vfile-reporter": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-8.1.0.tgz", @@ -15897,6 +16310,16 @@ "integrity": "sha1-cTeUZYXHP+RIggE4U70ADF1oek4=", "dev": true }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -16348,9 +16771,9 @@ } }, "@leichtgewicht/ip-codec": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", - "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "dev": true }, "@npmcli/config": { @@ -16443,15 +16866,15 @@ } }, "@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", "dev": true, "requires": { "@types/http-cache-semantics": "*", - "@types/keyv": "*", + "@types/keyv": "^3.1.4", "@types/node": "*", - "@types/responselike": "*" + "@types/responselike": "^1.0.0" } }, "@types/concat-stream": { @@ -16503,9 +16926,9 @@ "dev": true }, "@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", "dev": true }, "@types/is-empty": { @@ -16514,12 +16937,6 @@ "integrity": "sha512-a3xgqnFTuNJDm1fjsTjHocYJ40Cz3t8utYpi5GNaxzrJC2HSD08ym+whIL7fNqiqBCdM9bcqD1H/tORWAFXoZw==", "dev": true }, - "@types/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==", - "dev": true - }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -16536,15 +16953,6 @@ "@types/node": "*" } }, - "@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", - "dev": true, - "requires": { - "@types/unist": "*" - } - }, "@types/ms": { "version": "0.7.31", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", @@ -16567,9 +16975,9 @@ "dev": true }, "@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", "dev": true, "requires": { "@types/node": "*" @@ -16627,13 +17035,13 @@ "dev": true }, "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", "dev": true, "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" } }, "ajv": { @@ -16776,12 +17184,24 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "bcp-47-match": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", + "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "dev": true + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -16824,9 +17244,9 @@ "dev": true }, "cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", "dev": true, "requires": { "clone-response": "^1.0.2", @@ -16897,18 +17317,6 @@ "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", "dev": true }, - "check-links": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/check-links/-/check-links-1.1.8.tgz", - "integrity": "sha512-lxt1EeQ1CVkmiZzPfbPufperYK0t7MvhdLs3zlRH9areA6NVT1tcGymAdJONolNWQBdCFU/sek59RpeLmVHCnw==", - "dev": true, - "requires": { - "got": "^11.8.5", - "is-relative-url": "^2.0.0", - "p-map": "^2.0.0", - "p-memoize": "^2.1.0" - } - }, "chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -16932,10 +17340,30 @@ "dev": true }, "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "dev": true, + "requires": { + "escape-string-regexp": "5.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true + } + } + }, + "clone-regexp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-3.0.0.tgz", + "integrity": "sha512-ujdnoq2Kxb8s3ItNBtnYeXdm07FcU0u8ARAT1lQ2YdMwQC+cdiXX8KoqMVuglztILivceTtp4ivqGSmEmhBUJw==", + "dev": true, + "requires": { + "is-regexp": "^3.0.0" + } }, "clone-response": { "version": "1.0.3", @@ -16985,16 +17413,6 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "compress-brotli": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", - "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", - "dev": true, - "requires": { - "@types/json-buffer": "~3.0.0", - "json-buffer": "~3.0.1" - } - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -17014,6 +17432,12 @@ "typedarray": "^0.0.6" } }, + "convert-hrtime": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", + "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", + "dev": true + }, "core-js-pure": { "version": "3.20.2", "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.2.tgz", @@ -17032,13 +17456,100 @@ "which": "^2.0.1" } }, - "damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true, - "peer": true - }, + "css-selector-parser": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.0.5.tgz", + "integrity": "sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==", + "dev": true + }, + "damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "peer": true + }, + "dead-or-alive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dead-or-alive/-/dead-or-alive-1.0.3.tgz", + "integrity": "sha512-LJ2tGXmux1dx6FcuhwKcbHJPiR2OKiPWBY/6Yj6EfFdObK3nue69DlGFr1cUeRmtalqRhWXMztXMcEXJP59XKw==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0", + "fast-content-type-parse": "^2.0.0", + "hast-util-from-html-isomorphic": "^2.0.0", + "hast-util-is-element": "^3.0.0", + "hast-util-select": "^6.0.0", + "html-url-attributes": "^3.0.0", + "levenshtein-edit-distance": "^3.0.0", + "undici": "^6.0.0", + "unist-util-visit": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + }, + "levenshtein-edit-distance": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/levenshtein-edit-distance/-/levenshtein-edit-distance-3.0.1.tgz", + "integrity": "sha512-/qMCkZbrAF7jZP/voqlkfNrBtEn0TMdhCK7OEBh/zb39t/c3wCnTjwU1ZvrMfQ3OxB8sBQXIpWRMM6FiQJVG3g==", + "dev": true + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, "debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -17112,10 +17623,16 @@ "dequal": "^2.0.0" } }, + "direction": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz", + "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==", + "dev": true + }, "dns-packet": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", - "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, "requires": { "@leichtgewicht/ip-codec": "^2.0.1" @@ -17177,6 +17694,12 @@ "ansi-colors": "^4.1.1" } }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -17633,6 +18156,12 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, + "fast-content-type-parse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.0.tgz", + "integrity": "sha512-fCqg/6Sps8tqk8p+kqyKqYfOF0VjPNYrqpLiqNl0RBKmD80B080AJWVV6EkSkscjToNExcXg1+Mfzftrx6+iSA==", + "dev": true + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -17736,6 +18265,12 @@ "dev": true, "peer": true }, + "function-timeout": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-0.1.1.tgz", + "integrity": "sha512-0NVVC0TaP7dSTvn1yMiy6d6Q8gifzbvQafO46RtLG/kHJUBNd+pVRGOBoK44wNBvtSPUJRfdVvkFdD3p0xvyZg==", + "dev": true + }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", @@ -17825,9 +18360,9 @@ } }, "got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", "dev": true, "requires": { "@sindresorhus/is": "^4.0.0", @@ -17884,6 +18419,253 @@ "has-symbols": "^1.0.2" } }, + "hast-util-from-dom": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.0.tgz", + "integrity": "sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0", + "hastscript": "^8.0.0", + "web-namespaces": "^2.0.0" + } + }, + "hast-util-from-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "hast-util-from-html-isomorphic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz", + "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0", + "hast-util-from-dom": "^5.0.0", + "hast-util-from-html": "^2.0.0", + "unist-util-remove-position": "^5.0.0" + } + }, + "hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "dependencies": { + "@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + } + } + } + }, + "hast-util-has-property": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", + "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0" + } + }, + "hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0" + } + }, + "hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0" + } + }, + "hast-util-select": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.2.tgz", + "integrity": "sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "bcp-47-match": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "css-selector-parser": "^3.0.0", + "devlop": "^1.0.0", + "direction": "^2.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "not": "^0.1.0", + "nth-check": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "dependencies": { + "@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + } + } + }, + "hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0" + } + }, + "hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0" + } + }, + "hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + } + }, "hosted-git-info": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", @@ -17901,6 +18683,12 @@ } } }, + "html-url-attributes": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz", + "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==", + "dev": true + }, "http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", @@ -17951,9 +18739,9 @@ "peer": true }, "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true }, "infer-owner": { @@ -17997,15 +18785,9 @@ } }, "ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", - "dev": true - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", + "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==", "dev": true }, "is-alphabetical": { @@ -18060,12 +18842,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true - }, "is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", @@ -18133,12 +18909,13 @@ "dev": true }, "is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-5.0.1.tgz", + "integrity": "sha512-FCsGHdlrOnZQcp0+XT5a+pYowf33itBalCl+7ovNXC/7o5BhIpG14M3OrpPPdBSIQJCm+0M5+9mO7S9VVTTCFw==", "dev": true, "requires": { - "ip-regex": "^4.0.0" + "ip-regex": "^5.0.0", + "super-regex": "^0.2.0" } }, "is-negative-zero": { @@ -18165,15 +18942,15 @@ } }, "is-online": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/is-online/-/is-online-8.5.1.tgz", - "integrity": "sha512-RKyTQx/rJqw2QOXHwy7TmXdlkpe0Hhj7GBsr6TQJaj4ebNOfameZCMspU5vYbwBBzJ2brWArdSvNVox6T6oCTQ==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/is-online/-/is-online-11.0.0.tgz", + "integrity": "sha512-LY3UOlRGCofw5RMhsEFHQ9xQ6jJXL9wFWWIfmSdNo8vO+DrIvan3G9hAPZiMRXddVZS2v9+CV4z9PslLhBGIyA==", "dev": true, "requires": { "got": "^11.8.5", - "p-any": "^2.0.0", - "p-timeout": "^3.0.0", - "public-ip": "^4.0.1" + "p-any": "^4.0.0", + "p-timeout": "^6.1.2", + "public-ip": "^7.0.1" } }, "is-plain-obj": { @@ -18193,14 +18970,11 @@ "has-tostringtag": "^1.0.0" } }, - "is-relative-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-relative-url/-/is-relative-url-2.0.0.tgz", - "integrity": "sha1-cpAtf+BLPUeS59sV+duEtyBMnO8=", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0" - } + "is-regexp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-3.1.0.tgz", + "integrity": "sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==", + "dev": true }, "is-shared-array-buffer": { "version": "1.0.1", @@ -18315,12 +19089,11 @@ } }, "keyv": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.4.1.tgz", - "integrity": "sha512-PzByhNxfBLnSBW2MZi1DF+W5+qB/7BMpOokewqIvqS8GFtP7xHm2oeGU72Y1fhtfOv/FiEnI4+nyViYDmUChnw==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "requires": { - "compress-brotli": "^1.3.8", "json-buffer": "3.0.1" } }, @@ -18412,15 +19185,6 @@ "yallist": "^4.0.0" } }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, "markdown-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", @@ -18989,34 +19753,6 @@ } } }, - "mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0" - } - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - } - } - }, "micromark": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", @@ -19261,12 +19997,6 @@ "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", "dev": true }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, "mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", @@ -19359,12 +20089,27 @@ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "dev": true }, + "not": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz", + "integrity": "sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==", + "dev": true + }, "npm-normalize-package-bin": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", "dev": true }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -19470,14 +20215,21 @@ } }, "p-any": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-any/-/p-any-2.1.0.tgz", - "integrity": "sha512-JAERcaMBLYKMq+voYw36+x5Dgh47+/o7yuv2oQYuSSUml4YeqJEFznBrY2UeEkoSHqBua6hz518n/PsowTYLLg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-any/-/p-any-4.0.0.tgz", + "integrity": "sha512-S/B50s+pAVe0wmEZHmBs/9yJXeZ5KhHzOsgKzt0hRdgkoR3DxW9ts46fcsWi/r3VnzsnkKS7q4uimze+zjdryw==", "dev": true, "requires": { - "p-cancelable": "^2.0.0", - "p-some": "^4.0.0", - "type-fest": "^0.3.0" + "p-cancelable": "^3.0.0", + "p-some": "^6.0.0" + }, + "dependencies": { + "p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true + } } }, "p-cancelable": { @@ -19486,58 +20238,29 @@ "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", "dev": true }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - }, - "p-memoize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-memoize/-/p-memoize-2.1.0.tgz", - "integrity": "sha512-c6+a2iV4JyX0r4+i2IBJYO0r6LZAT2fg/tcB6GQbv1uzZsfsmKT7Ej5DRT1G6Wi7XUJSV2ZiP9+YEtluvhCmkg==", - "dev": true, - "requires": { - "mem": "^4.0.0", - "mimic-fn": "^1.0.0" - } - }, "p-some": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-some/-/p-some-4.1.0.tgz", - "integrity": "sha512-MF/HIbq6GeBqTrTIl5OJubzkGU+qfFhAFi0gnTAK6rgEIJIknEiABHOTtQu4e6JiXjIwuMPMUFQzyHh5QjCl1g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-some/-/p-some-6.0.0.tgz", + "integrity": "sha512-CJbQCKdfSX3fIh8/QKgS+9rjm7OBNUTmwWswAFQAhc8j1NR1dsEDETUEuVUtQHZpV+J03LqWBEwvu0g1Yn+TYg==", "dev": true, "requires": { - "aggregate-error": "^3.0.0", - "p-cancelable": "^2.0.0" + "aggregate-error": "^4.0.0", + "p-cancelable": "^3.0.0" + }, + "dependencies": { + "p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true + } } }, "p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz", + "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==", + "dev": true }, "parent-module": { "version": "1.0.1", @@ -19653,6 +20376,15 @@ } } }, + "parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "requires": { + "entities": "^4.4.0" + } + }, "passive-voice": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/passive-voice/-/passive-voice-0.1.0.tgz", @@ -19748,6 +20480,12 @@ "react-is": "^16.13.1" } }, + "property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "dev": true + }, "propose": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/propose/-/propose-0.0.5.tgz", @@ -19758,20 +20496,20 @@ } }, "public-ip": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/public-ip/-/public-ip-4.0.4.tgz", - "integrity": "sha512-EJ0VMV2vF6Cu7BIPo3IMW1Maq6ME+fbR0NcPmqDfpfNGIRPue1X8QrGjrg/rfjDkOsIkKHIf2S5FlEa48hFMTA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/public-ip/-/public-ip-7.0.1.tgz", + "integrity": "sha512-DdNcqcIbI0wEeCBcqX+bmZpUCvrDMJHXE553zgyG1MZ8S1a/iCCxmK9iTjjql+SpHSv4cZkmRv5/zGYW93AlCw==", "dev": true, "requires": { "dns-socket": "^4.2.2", "got": "^11.8.5", - "is-ip": "^3.1.0" + "is-ip": "^5.0.1" } }, "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, "requires": { "end-of-stream": "^1.1.0", @@ -22752,19 +23490,10 @@ } }, "remark-lint-no-auto-link-without-protocol": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-3.1.2.tgz", - "integrity": "sha512-mPIdFOGxdDhCMa2qIzjzjDzDoQeyK+/1BBgsseqThuBtoAoXR5l1TZfII2isNbBo6L8d+fMFdx1/3qALoDjtcA==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-4.0.0.tgz", + "integrity": "sha512-m9P2KgLxblySJ/0bI3MSsDYv3Bem7Ynz5P0OVAJlGvHra/YQyszyd6U/oUavTbel+8sPPymHtNAUTkiDLobn4A==", + "dev": true }, "remark-lint-no-blockquote-without-marker": { "version": "6.0.0", @@ -23004,51 +23733,120 @@ } }, "remark-lint-no-dead-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-dead-urls/-/remark-lint-no-dead-urls-1.1.0.tgz", - "integrity": "sha512-it3EZmMQ+hwGhUf60NkXN0mMIFuFkS0cxdbgEbhZ/Fj1PlUBpe3gDBtWJ/sqNwSNvQlNSzpvMQkNHSoAhlsVjA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-dead-urls/-/remark-lint-no-dead-urls-2.0.0.tgz", + "integrity": "sha512-7kJ5rZ6fuuLt6iG2XS/uShVik0LYzshspZ/hNm/oPybXnJrehsYT31Y5AjeX57Mm7DAc7Q8EMSgeDiK/8SYYhQ==", "dev": true, "requires": { - "check-links": "^1.1.8", - "is-online": "^8.2.1", - "unified-lint-rule": "^1.0.4", - "unist-util-visit": "^2.0.1" + "@types/mdast": "^4.0.0", + "dead-or-alive": "^1.0.0", + "devlop": "^1.0.0", + "is-online": "^11.0.0", + "unified-lint-rule": "^3.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" }, "dependencies": { + "@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + }, + "unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + } + }, "unified-lint-rule": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz", - "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-3.0.0.tgz", + "integrity": "sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==", "dev": true, "requires": { - "wrapped": "^1.0.1" + "@types/unist": "^3.0.0", + "trough": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" } }, "unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "dev": true + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + } }, "unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", "dev": true, "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" } }, "unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, + "vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + } + }, + "vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dev": true, "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" } } } @@ -24422,18 +25220,10 @@ } }, "remark-lint-no-inline-padding": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-4.1.2.tgz", - "integrity": "sha512-dGyhWsiqCZS3Slob0EVBUfsFBbdpMIBCvb56LlCgaHbnLsnNYx8PpF/wA5CgsN8BXIbXfRpyPB5cIJwIq5taYg==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "unified": "^10.0.0", - "unified-lint-rule": "^2.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-visit": "^4.0.0" - } + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-5.0.0.tgz", + "integrity": "sha512-d88MYpPv4SAWUBmB6QS6gU4vgg5y66IesjijwQT0yg4HwENcO5IbMLs3WDqo6w53DOQPqw+MmDRszP9XaEePIw==", + "dev": true }, "remark-lint-no-literal-urls": { "version": "4.0.0", @@ -27495,6 +28285,17 @@ "dev": true, "peer": true }, + "super-regex": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-0.2.0.tgz", + "integrity": "sha512-WZzIx3rC1CvbMDloLsVw0lkZVKJWbrkJ0k1ghKFmcnPrW1+jWbgTkTEWVtD9lMdmI4jZEz40+naBxl1dCUhXXw==", + "dev": true, + "requires": { + "clone-regexp": "^3.0.0", + "function-timeout": "^0.1.0", + "time-span": "^5.1.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -27524,6 +28325,15 @@ "integrity": "sha1-cXNhKGlirI3za3omGft3OhW5t/c=", "dev": true }, + "time-span": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", + "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", + "dev": true, + "requires": { + "convert-hrtime": "^5.0.0" + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -27586,12 +28396,6 @@ "prelude-ls": "^1.2.1" } }, - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "dev": true - }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -27611,20 +28415,11 @@ "which-boxed-primitive": "^1.0.2" } }, - "unified": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.1.tgz", - "integrity": "sha512-v4ky1+6BN9X3pQrOdkFIPWAaeDsHPE1svRDxq7YpTc2plkIqFMwukfqM+l0ewpP9EfwARlt9pPFAeWYhHm8X9w==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - } + "undici": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", + "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", + "dev": true }, "unified-args": { "version": "11.0.0", @@ -27749,18 +28544,6 @@ } } }, - "unified-lint-rule": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-2.1.1.tgz", - "integrity": "sha512-vsLHyLZFstqtGse2gvrGwasOmH8M2y+r2kQMoDSWzSqUkQx2MjHjvZuGSv5FUaiv4RQO1bHRajy7lSGp7XWq5A==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "trough": "^2.0.0", - "unified": "^10.0.0", - "vfile": "^5.0.0" - } - }, "unified-message-control": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-5.0.0.tgz", @@ -27845,12 +28628,6 @@ } } }, - "unist-util-generated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", - "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", - "dev": true - }, "unist-util-inspect": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-8.0.0.tgz", @@ -27868,12 +28645,6 @@ } } }, - "unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", - "dev": true - }, "unist-util-map": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/unist-util-map/-/unist-util-map-1.0.5.tgz", @@ -27901,12 +28672,6 @@ } } }, - "unist-util-position": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.1.tgz", - "integrity": "sha512-mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA==", - "dev": true - }, "unist-util-remove-position": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", @@ -27955,15 +28720,6 @@ } } }, - "unist-util-stringify-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", - "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, "unist-util-to-list-of-char": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/unist-util-to-list-of-char/-/unist-util-to-list-of-char-0.1.3.tgz", @@ -28006,17 +28762,6 @@ } } }, - "unist-util-visit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.0.tgz", - "integrity": "sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.0.0" - } - }, "unist-util-visit-children": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", @@ -28034,16 +28779,6 @@ } } }, - "unist-util-visit-parents": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", - "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -28067,18 +28802,6 @@ "dev": true, "peer": true }, - "vfile": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.0.tgz", - "integrity": "sha512-Tj44nY/48OQvarrE4FAjUfrv7GZOYzPbl5OD65HxVKwLJKMPU7zmfV8cCgCnzKWnSfYG2f3pxu+ALqs7j22xQQ==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } - }, "vfile-location": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", @@ -28127,16 +28850,6 @@ } } }, - "vfile-message": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.0.tgz", - "integrity": "sha512-4QJbBk+DkPEhBXq3f260xSaWtjE4gPKOfulzfMFF8ZNwaPZieWsg3iVlcmF04+eebzpcpeXOOFMfrYzJHVYg+g==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } - }, "vfile-reporter": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-8.1.0.tgz", @@ -28305,6 +29018,12 @@ "integrity": "sha1-cTeUZYXHP+RIggE4U70ADF1oek4=", "dev": true }, + "web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "dev": true + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 95fb28412b..006ce70883 100644 --- a/package.json +++ b/package.json @@ -54,10 +54,10 @@ "remark-lint-list-item-content-indent": "^4.0.0", "remark-lint-list-item-indent": "^4.0.0", "remark-lint-maximum-heading-length": "^4.0.0", - "remark-lint-no-auto-link-without-protocol": "^3.1.2", + "remark-lint-no-auto-link-without-protocol": "^4.0.0", "remark-lint-no-blockquote-without-marker": "^6.0.0", "remark-lint-no-consecutive-blank-lines": "^5.0.0", - "remark-lint-no-dead-urls": "^1.1.0", + "remark-lint-no-dead-urls": "^2.0.0", "remark-lint-no-duplicate-definitions": "^4.0.0", "remark-lint-no-duplicate-headings": "^4.0.0", "remark-lint-no-emphasis-as-heading": "^4.0.0", @@ -71,7 +71,7 @@ "remark-lint-no-heading-content-indent": "^5.0.0", "remark-lint-no-heading-indent": "^5.0.0", "remark-lint-no-heading-like-paragraph": "^4.0.0", - "remark-lint-no-inline-padding": "^4.1.2", + "remark-lint-no-inline-padding": "^5.0.0", "remark-lint-no-literal-urls": "^4.0.0", "remark-lint-no-multiple-toplevel-headings": "^4.0.0", "remark-lint-no-reference-like-url": "^4.0.0", From 4f5055d4f8eb8ce1a6a037be78db9b967b9714c4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Oct 2024 15:48:50 +0000 Subject: [PATCH 214/544] (deps): Bump the analyzers group across 2 directories with 2 updates Bumps the analyzers group with 2 updates in the /new-cli directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Bumps the analyzers group with 2 updates in the /src directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Updates `Roslynator.Analyzers` from 4.12.6 to 4.12.7 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.6...v4.12.7) Updates `Roslynator.Formatting.Analyzers` from 4.12.6 to 4.12.7 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.6...v4.12.7) Updates `Roslynator.Analyzers` from 4.12.6 to 4.12.7 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.6...v4.12.7) Updates `Roslynator.Formatting.Analyzers` from 4.12.6 to 4.12.7 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.6...v4.12.7) --- updated-dependencies: - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 4 ++-- src/Directory.Packages.props | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index b91e1f50f6..8c7395533f 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -12,8 +12,8 @@ - - + + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index e423eb09c6..f21f9036e5 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -14,8 +14,8 @@ - - + + From 05d11f5633ad593f6a091eadcb24c2438c0cb622 Mon Sep 17 00:00:00 2001 From: Bob Loblaw Date: Thu, 3 Oct 2024 17:20:30 +0200 Subject: [PATCH 215/544] Update description of TrackReleaseBranches version strategy --- docs/input/docs/learn/how-it-works.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/input/docs/learn/how-it-works.md b/docs/input/docs/learn/how-it-works.md index 0a13b5f38b..e27bf3aecb 100644 --- a/docs/input/docs/learn/how-it-works.md +++ b/docs/input/docs/learn/how-it-works.md @@ -49,7 +49,9 @@ Currently we have the following strategies: * `Fallback` - Always returns 0.0.0 and will be used for calculating the next version which is dependent on the increment strategy of the effected branch (e.g. on main the next version is 0.0.1 or on develop it is 0.1.0) -* `TrackReleaseBranches` - TODO: Document this +* `TrackReleaseBranches` - Considers the base version extracted from release branches when +calculating the next version for branches configured with `track-release-branches: true` +(part of default configuration for `develop` branch in `GitFlow` workflow) * `Mainline` - Increments the version on every commit for branches configured with `mode: Mainline` Each strategy needs to return an instance of `BaseVersion` which has the From e18d6b1929afec404cbb7e3121dc007f1d88041f Mon Sep 17 00:00:00 2001 From: Bob Loblaw Date: Thu, 3 Oct 2024 17:21:27 +0200 Subject: [PATCH 216/544] fixup! Update description of Mainline strategy in how-it-works --- docs/input/docs/learn/how-it-works.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/input/docs/learn/how-it-works.md b/docs/input/docs/learn/how-it-works.md index e27bf3aecb..aa1a57c959 100644 --- a/docs/input/docs/learn/how-it-works.md +++ b/docs/input/docs/learn/how-it-works.md @@ -52,7 +52,7 @@ Currently we have the following strategies: * `TrackReleaseBranches` - Considers the base version extracted from release branches when calculating the next version for branches configured with `track-release-branches: true` (part of default configuration for `develop` branch in `GitFlow` workflow) -* `Mainline` - Increments the version on every commit for branches configured with `mode: Mainline` +* `Mainline` - Increments the version on every commit for branches configured with `is-main-branch: true` Each strategy needs to return an instance of `BaseVersion` which has the following properties: From 0e924ffa1684681f388b54baee2076a37995ae87 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Sat, 5 Oct 2024 02:23:41 +0200 Subject: [PATCH 217/544] [new-cli] switched Generator to netstandard2.0, added polyfills --- new-cli/Directory.Packages.props | 1 + .../CommandImplGenerator.cs | 15 +++-- .../GitVersion.Cli.Generator.csproj | 3 +- .../GitVersion.Cli.Generator/GlobalUsings.cs | 5 ++ .../CallerArgumentExpressionAttribute.cs | 40 +++++++++++++ .../Polyfill/CommonExtensions.cs | 7 +++ .../CompilerFeatureRequiredAttribute.cs | 56 +++++++++++++++++++ .../Polyfill/IsExternalInit.cs | 21 +++++++ .../Polyfill/NotNullAttribute.cs | 26 +++++++++ .../Polyfill/RequiredMemberAttribute.cs | 29 ++++++++++ .../Polyfill/SetsRequiredMembersAttribute.cs | 20 +++++++ .../RoslynExtensions.cs | 9 +-- .../GitVersion.Cli.Generator/TypeVisitor.cs | 3 - new-cli/GitVersion.Cli/GitVersionApp.cs | 1 + 14 files changed, 220 insertions(+), 16 deletions(-) create mode 100644 new-cli/GitVersion.Cli.Generator/GlobalUsings.cs create mode 100644 new-cli/GitVersion.Cli.Generator/Polyfill/CallerArgumentExpressionAttribute.cs create mode 100644 new-cli/GitVersion.Cli.Generator/Polyfill/CommonExtensions.cs create mode 100644 new-cli/GitVersion.Cli.Generator/Polyfill/CompilerFeatureRequiredAttribute.cs create mode 100644 new-cli/GitVersion.Cli.Generator/Polyfill/IsExternalInit.cs create mode 100644 new-cli/GitVersion.Cli.Generator/Polyfill/NotNullAttribute.cs create mode 100644 new-cli/GitVersion.Cli.Generator/Polyfill/RequiredMemberAttribute.cs create mode 100644 new-cli/GitVersion.Cli.Generator/Polyfill/SetsRequiredMembersAttribute.cs diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 8c7395533f..ffb76191b8 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -21,5 +21,6 @@ + \ No newline at end of file diff --git a/new-cli/GitVersion.Cli.Generator/CommandImplGenerator.cs b/new-cli/GitVersion.Cli.Generator/CommandImplGenerator.cs index b5fcc2fb1b..7e2001a0dd 100644 --- a/new-cli/GitVersion.Cli.Generator/CommandImplGenerator.cs +++ b/new-cli/GitVersion.Cli.Generator/CommandImplGenerator.cs @@ -1,6 +1,5 @@ -using System.Collections.Immutable; -using Microsoft.CodeAnalysis; -using Scriban; +using GitVersion.Polyfill; + // ReSharper disable InconsistentNaming namespace GitVersion; @@ -88,11 +87,11 @@ private static void GenerateSourceCode(SourceProductionContext context, Immutabl var name = Convert.ToString(ctorArguments[0].Value); var description = Convert.ToString(ctorArguments[1].Value); - ArgumentNullException.ThrowIfNull(name); - ArgumentNullException.ThrowIfNull(description); + name.NotNull(); + description.NotNull(); ITypeSymbol? parentCommandType = null; - if (commandAttribute.AttributeClass != null && commandAttribute.AttributeClass.TypeArguments.Any()) + if (commandAttribute.AttributeClass?.TypeArguments.Any() == true) { parentCommandType = commandAttribute.AttributeClass.TypeArguments.Single(); } @@ -130,8 +129,8 @@ private static SettingsPropertyInfo MapToPropertyInfo(IPropertySymbol propertySy var name = Convert.ToString(ctorArguments[0].Value); var description = Convert.ToString(ctorArguments[1].Value); - ArgumentNullException.ThrowIfNull(name); - ArgumentNullException.ThrowIfNull(description); + name.NotNull(); + description.NotNull(); string alias = string.Empty; if (ctorArguments.Length == 3) diff --git a/new-cli/GitVersion.Cli.Generator/GitVersion.Cli.Generator.csproj b/new-cli/GitVersion.Cli.Generator/GitVersion.Cli.Generator.csproj index aa293afe82..41689234e5 100644 --- a/new-cli/GitVersion.Cli.Generator/GitVersion.Cli.Generator.csproj +++ b/new-cli/GitVersion.Cli.Generator/GitVersion.Cli.Generator.csproj @@ -1,11 +1,11 @@ + netstandard2.0 true true en true - $(NoWarn);RS1035;CS8669 @@ -13,5 +13,6 @@ + diff --git a/new-cli/GitVersion.Cli.Generator/GlobalUsings.cs b/new-cli/GitVersion.Cli.Generator/GlobalUsings.cs new file mode 100644 index 0000000000..8199d6a28c --- /dev/null +++ b/new-cli/GitVersion.Cli.Generator/GlobalUsings.cs @@ -0,0 +1,5 @@ +global using System.Collections.Immutable; +global using System.Diagnostics.CodeAnalysis; +global using System.Runtime.CompilerServices; +global using Microsoft.CodeAnalysis; +global using Scriban; diff --git a/new-cli/GitVersion.Cli.Generator/Polyfill/CallerArgumentExpressionAttribute.cs b/new-cli/GitVersion.Cli.Generator/Polyfill/CallerArgumentExpressionAttribute.cs new file mode 100644 index 0000000000..a1f589114f --- /dev/null +++ b/new-cli/GitVersion.Cli.Generator/Polyfill/CallerArgumentExpressionAttribute.cs @@ -0,0 +1,40 @@ +// +#pragma warning disable + +#if NETFRAMEWORK || NETSTANDARD || NETCOREAPP2X + +namespace System.Runtime.CompilerServices; + +using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; +using Link = System.ComponentModel.DescriptionAttribute; + +/// +/// Indicates that a parameter captures the expression passed for another parameter as a string. +/// +[ExcludeFromCodeCoverage] +[DebuggerNonUserCode] +[AttributeUsage(AttributeTargets.Parameter)] +[Link("https://learn.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.callerargumentexpressionattribute")] +#if PolyPublic +public +#endif +sealed class CallerArgumentExpressionAttribute : + Attribute +{ + /// + /// Initializes a new instance of the class. + /// + /// + /// The name of the parameter whose expression should be captured as a string. + /// + public CallerArgumentExpressionAttribute(string parameterName) => + ParameterName = parameterName; + + /// + /// Gets the name of the parameter whose expression should be captured as a string. + /// + public string ParameterName { get; } +} + +#endif diff --git a/new-cli/GitVersion.Cli.Generator/Polyfill/CommonExtensions.cs b/new-cli/GitVersion.Cli.Generator/Polyfill/CommonExtensions.cs new file mode 100644 index 0000000000..350913fa6b --- /dev/null +++ b/new-cli/GitVersion.Cli.Generator/Polyfill/CommonExtensions.cs @@ -0,0 +1,7 @@ +namespace GitVersion.Polyfill; + +public static class CommonExtensions +{ + public static T NotNull([NotNull] this T? value, [CallerArgumentExpression(nameof(value))] string name = "") + where T : class => value ?? throw new ArgumentNullException(name); +} diff --git a/new-cli/GitVersion.Cli.Generator/Polyfill/CompilerFeatureRequiredAttribute.cs b/new-cli/GitVersion.Cli.Generator/Polyfill/CompilerFeatureRequiredAttribute.cs new file mode 100644 index 0000000000..37cf5ccc71 --- /dev/null +++ b/new-cli/GitVersion.Cli.Generator/Polyfill/CompilerFeatureRequiredAttribute.cs @@ -0,0 +1,56 @@ +// +#pragma warning disable + +#if !NET7_0_OR_GREATER + +namespace System.Runtime.CompilerServices; + +using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; +using Link = System.ComponentModel.DescriptionAttribute; + +/// +/// Indicates that compiler support for a particular feature is required for the location where this attribute is applied. +/// +[ExcludeFromCodeCoverage] +[DebuggerNonUserCode] +[AttributeUsage( + validOn: AttributeTargets.All, + AllowMultiple = true, + Inherited = false)] +[Link("https://learn.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.compilerfeaturerequiredattribute")] +#if PolyPublic +public +#endif +sealed class CompilerFeatureRequiredAttribute : + Attribute +{ + /// + /// Initialize a new instance of + /// + /// The name of the required compiler feature. + public CompilerFeatureRequiredAttribute(string featureName) => + FeatureName = featureName; + + /// + /// The name of the compiler feature. + /// + public string FeatureName { get; } + + /// + /// If true, the compiler can choose to allow access to the location where this attribute is applied if it does not understand . + /// + public bool IsOptional { get; init; } + + /// + /// The used for the ref structs C# feature. + /// + public const string RefStructs = nameof(RefStructs); + + /// + /// The used for the required members C# feature. + /// + public const string RequiredMembers = nameof(RequiredMembers); +} + +#endif diff --git a/new-cli/GitVersion.Cli.Generator/Polyfill/IsExternalInit.cs b/new-cli/GitVersion.Cli.Generator/Polyfill/IsExternalInit.cs new file mode 100644 index 0000000000..f7221c6dda --- /dev/null +++ b/new-cli/GitVersion.Cli.Generator/Polyfill/IsExternalInit.cs @@ -0,0 +1,21 @@ +// +#pragma warning disable + +#if !NET5_0_OR_GREATER + +namespace System.Runtime.CompilerServices; + +using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; + +/// +/// Reserved to be used by the compiler for tracking metadata. This class should not be used by developers in source code. +/// +[ExcludeFromCodeCoverage] +[DebuggerNonUserCode] +#if PolyPublic +public +#endif +static class IsExternalInit; + +#endif diff --git a/new-cli/GitVersion.Cli.Generator/Polyfill/NotNullAttribute.cs b/new-cli/GitVersion.Cli.Generator/Polyfill/NotNullAttribute.cs new file mode 100644 index 0000000000..827063a13d --- /dev/null +++ b/new-cli/GitVersion.Cli.Generator/Polyfill/NotNullAttribute.cs @@ -0,0 +1,26 @@ +// +#pragma warning disable + +#if NETSTANDARD2_0 || NETFRAMEWORK || NETCOREAPP2X + +namespace System.Diagnostics.CodeAnalysis; + +using Targets = AttributeTargets; + +/// +/// Specifies that an output is not even if the +/// corresponding type allows it. +/// +[ExcludeFromCodeCoverage] +[DebuggerNonUserCode] +[AttributeUsage( + validOn: Targets.Field | + Targets.Parameter | + Targets.Property | + Targets.ReturnValue)] +#if PolyPublic +public +#endif +sealed class NotNullAttribute : + Attribute; +#endif diff --git a/new-cli/GitVersion.Cli.Generator/Polyfill/RequiredMemberAttribute.cs b/new-cli/GitVersion.Cli.Generator/Polyfill/RequiredMemberAttribute.cs new file mode 100644 index 0000000000..a38ca389fd --- /dev/null +++ b/new-cli/GitVersion.Cli.Generator/Polyfill/RequiredMemberAttribute.cs @@ -0,0 +1,29 @@ +// +#pragma warning disable + +#if !NET7_0_OR_GREATER + +namespace System.Runtime.CompilerServices; + +using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; + +using Targets = AttributeTargets; + +/// +/// Specifies that a type has required members or that a member is required. +/// +[ExcludeFromCodeCoverage] +[DebuggerNonUserCode] +[AttributeUsage( + validOn: Targets.Class | + Targets.Struct | + Targets.Field | + Targets.Property, + Inherited = false)] +#if PolyPublic +public +#endif +sealed class RequiredMemberAttribute : + Attribute; +#endif diff --git a/new-cli/GitVersion.Cli.Generator/Polyfill/SetsRequiredMembersAttribute.cs b/new-cli/GitVersion.Cli.Generator/Polyfill/SetsRequiredMembersAttribute.cs new file mode 100644 index 0000000000..a3cdfc8608 --- /dev/null +++ b/new-cli/GitVersion.Cli.Generator/Polyfill/SetsRequiredMembersAttribute.cs @@ -0,0 +1,20 @@ +// +#pragma warning disable + +#if !NET7_0_OR_GREATER + +namespace System.Diagnostics.CodeAnalysis; + +/// +/// Specifies that this constructor sets all required members for the current type, and callers +/// do not need to set any required members themselves. +/// +[ExcludeFromCodeCoverage] +[DebuggerNonUserCode] +[AttributeUsage(AttributeTargets.Constructor)] +#if PolyPublic +public +#endif +sealed class SetsRequiredMembersAttribute : + Attribute; +#endif diff --git a/new-cli/GitVersion.Cli.Generator/RoslynExtensions.cs b/new-cli/GitVersion.Cli.Generator/RoslynExtensions.cs index 0935ec5715..fe83125599 100644 --- a/new-cli/GitVersion.Cli.Generator/RoslynExtensions.cs +++ b/new-cli/GitVersion.Cli.Generator/RoslynExtensions.cs @@ -1,5 +1,3 @@ -using Microsoft.CodeAnalysis; - namespace GitVersion; public static class RoslynExtensions @@ -24,7 +22,10 @@ public static IEnumerable GetBaseTypes(this ITypeSymbol type) } } - public static IEnumerable GetAllMembers(this ITypeSymbol type) where T : ISymbol => type.GetBaseTypesAndThis().SelectMany(n => n.GetMembers().OfType()); + public static IEnumerable GetAllMembers(this ITypeSymbol type) where T : ISymbol + => type.GetBaseTypesAndThis().SelectMany(n => n.GetMembers().OfType()); - public static AttributeData? GetAttributeData(this ISymbol namedType, string fullName) => namedType.GetAttributes().SingleOrDefault(a => a.AttributeClass?.OriginalDefinition.ToDisplayString() == fullName); + public static AttributeData? GetAttributeData(this ISymbol namedType, string fullName) + => namedType.GetAttributes() + .SingleOrDefault(a => a.AttributeClass?.OriginalDefinition.ToDisplayString() == fullName); } diff --git a/new-cli/GitVersion.Cli.Generator/TypeVisitor.cs b/new-cli/GitVersion.Cli.Generator/TypeVisitor.cs index 3094435293..fbd42a3b0c 100644 --- a/new-cli/GitVersion.Cli.Generator/TypeVisitor.cs +++ b/new-cli/GitVersion.Cli.Generator/TypeVisitor.cs @@ -1,6 +1,3 @@ -using System.Collections.Immutable; -using Microsoft.CodeAnalysis; - namespace GitVersion; internal class TypeVisitor(Func searchQuery, CancellationToken cancellation) diff --git a/new-cli/GitVersion.Cli/GitVersionApp.cs b/new-cli/GitVersion.Cli/GitVersionApp.cs index 9a4d43fae9..d873b38bcd 100644 --- a/new-cli/GitVersion.Cli/GitVersionApp.cs +++ b/new-cli/GitVersion.Cli/GitVersionApp.cs @@ -6,6 +6,7 @@ namespace GitVersion; +// ReSharper disable once ClassNeverInstantiated.Global internal class GitVersionApp(RootCommandImpl rootCommand) { private readonly RootCommandImpl rootCommand = rootCommand.NotNull(); From de3be2c8b1ab163bc20c433637e72a2b407466a0 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Sat, 5 Oct 2024 02:23:57 +0200 Subject: [PATCH 218/544] updated run configurations --- new-cli/.run/Calculate.run.xml | 4 ++-- new-cli/.run/Config Help.run.xml | 4 ++-- new-cli/.run/Config Init.run.xml | 4 ++-- new-cli/.run/Config Show.run.xml | 4 ++-- new-cli/.run/Help.run.xml | 4 ++-- new-cli/.run/Normalize.run.xml | 4 ++-- new-cli/.run/Output AssemblyInfo.run.xml | 4 ++-- new-cli/.run/Output Help.run.xml | 4 ++-- new-cli/.run/Output Project.run.xml | 4 ++-- new-cli/.run/Output Wix.run.xml | 4 ++-- new-cli/.run/Tester.run.xml | 2 +- new-cli/.run/Version.run.xml | 4 ++-- 12 files changed, 23 insertions(+), 23 deletions(-) diff --git a/new-cli/.run/Calculate.run.xml b/new-cli/.run/Calculate.run.xml index 0eafa18c92..7af3dd5395 100644 --- a/new-cli/.run/Calculate.run.xml +++ b/new-cli/.run/Calculate.run.xml @@ -1,10 +1,10 @@ - public record EffectiveConfiguration { - public EffectiveConfiguration(IGitVersionConfiguration configuration, IBranchConfiguration branchConfiguration, + public EffectiveConfiguration( + IGitVersionConfiguration configuration, + IBranchConfiguration branchConfiguration, EffectiveConfiguration? fallbackConfiguration = null) { configuration.NotNull(); @@ -50,8 +51,8 @@ public EffectiveConfiguration(IGitVersionConfiguration configuration, IBranchCon AssemblyVersioningFormat = configuration.AssemblyVersioningFormat; AssemblyFileVersioningFormat = configuration.AssemblyFileVersioningFormat; DeploymentMode = branchConfiguration.DeploymentMode.Value; - TagPrefix = configuration.TagPrefix; - VersionInBranchRegex = configuration.VersionInBranchRegex; + TagPrefix = configuration.TagPrefixPattern; + VersionInBranchPattern = configuration.VersionInBranchPattern; Label = branchConfiguration.Label; NextVersion = configuration.NextVersion; Increment = branchConfiguration.Increment; @@ -92,7 +93,7 @@ public EffectiveConfiguration(IGitVersionConfiguration configuration, IBranchCon public string? TagPrefix { get; } - public Regex VersionInBranchRegex { get; } + public string? VersionInBranchPattern { get; } public string? Label { get; } diff --git a/src/GitVersion.Core/Configuration/IGitVersionConfiguration.cs b/src/GitVersion.Core/Configuration/IGitVersionConfiguration.cs index 60307b3cd1..1461d38034 100644 --- a/src/GitVersion.Core/Configuration/IGitVersionConfiguration.cs +++ b/src/GitVersion.Core/Configuration/IGitVersionConfiguration.cs @@ -1,4 +1,3 @@ -using System.Text.RegularExpressions; using GitVersion.VersionCalculation; namespace GitVersion.Configuration; @@ -17,12 +16,10 @@ public interface IGitVersionConfiguration : IBranchConfiguration string? AssemblyFileVersioningFormat { get; } - string? TagPrefix { get; } + string? TagPrefixPattern { get; } string? VersionInBranchPattern { get; } - Regex VersionInBranchRegex { get; } - string? NextVersion { get; } string? MajorVersionBumpMessage { get; } diff --git a/src/GitVersion.Core/Configuration/ReferenceNameExtensions.cs b/src/GitVersion.Core/Configuration/ReferenceNameExtensions.cs index 6cc8473010..630d637746 100644 --- a/src/GitVersion.Core/Configuration/ReferenceNameExtensions.cs +++ b/src/GitVersion.Core/Configuration/ReferenceNameExtensions.cs @@ -1,4 +1,4 @@ -using System.Text.RegularExpressions; +using GitVersion.Core; using GitVersion.Extensions; using GitVersion.Git; @@ -6,11 +6,18 @@ namespace GitVersion.Configuration; public static class ReferenceNameExtensions { - public static bool TryGetSemanticVersion(this ReferenceName referenceName, out (SemanticVersion Value, string? Name) result, - Regex versionPatternRegex, - string? tagPrefix, - SemanticVersionFormat format) + public static bool TryGetSemanticVersion(this ReferenceName source, out (SemanticVersion Value, string? Name) result, EffectiveConfiguration configuration) + => source.TryGetSemanticVersion(out result, configuration.VersionInBranchPattern, configuration.TagPrefix, configuration.SemanticVersionFormat); + + public static bool TryGetSemanticVersion(this ReferenceName source, out (SemanticVersion Value, string? Name) result, IGitVersionConfiguration configuration) + => source.TryGetSemanticVersion(out result, configuration.VersionInBranchPattern, configuration.TagPrefixPattern, configuration.SemanticVersionFormat); + + private static bool TryGetSemanticVersion(this ReferenceName referenceName, out (SemanticVersion Value, string? Name) result, + string? versionPatternPattern, + string? tagPrefix, + SemanticVersionFormat format) { + var versionPatternRegex = RegexPatterns.Cache.GetOrAdd(GetVersionInBranchPattern(versionPatternPattern)); result = default; int length = 0; @@ -18,7 +25,7 @@ public static bool TryGetSemanticVersion(this ReferenceName referenceName, out ( { if (string.IsNullOrEmpty(branchPart)) return false; - var match = versionPatternRegex.NotNull().Match(branchPart); + var match = versionPatternRegex.Match(branchPart); if (match.Success) { var versionPart = match.Groups["version"].Value; @@ -37,9 +44,11 @@ public static bool TryGetSemanticVersion(this ReferenceName referenceName, out ( return false; char GetBranchSeparator() => referenceName.WithoutOrigin.Contains('/') || !referenceName.WithoutOrigin.Contains('-') ? '/' : '-'; - } - public static bool TryGetSemanticVersion( - this ReferenceName source, out (SemanticVersion Value, string? Name) result, EffectiveConfiguration configuration) - => source.TryGetSemanticVersion(out result, configuration.VersionInBranchRegex, configuration.TagPrefix, configuration.SemanticVersionFormat); + static string GetVersionInBranchPattern(string? versionInBranchPattern) + { + if (versionInBranchPattern.IsNullOrEmpty()) versionInBranchPattern = RegexPatterns.Configuration.DefaultVersionInBranchPattern; + return $"^{versionInBranchPattern.TrimStart('^')}"; + } + } } diff --git a/src/GitVersion.Core/Core/GitVersionContextFactory.cs b/src/GitVersion.Core/Core/GitVersionContextFactory.cs index d75bc4ab6b..537c6145b9 100644 --- a/src/GitVersion.Core/Core/GitVersionContextFactory.cs +++ b/src/GitVersion.Core/Core/GitVersionContextFactory.cs @@ -41,7 +41,7 @@ public GitVersionContext Create(GitVersionOptions gitVersionOptions) } bool isCurrentCommitTagged = this.taggedSemanticVersionRepository.GetTaggedSemanticVersions( - tagPrefix: configuration.TagPrefix, + tagPrefix: configuration.TagPrefixPattern, format: configuration.SemanticVersionFormat, ignore: configuration.Ignore ).Contains(currentCommit); diff --git a/src/GitVersion.Core/Core/TaggedSemanticVersionService.cs b/src/GitVersion.Core/Core/TaggedSemanticVersionService.cs index e7e8acffa9..86a99c8849 100644 --- a/src/GitVersion.Core/Core/TaggedSemanticVersionService.cs +++ b/src/GitVersion.Core/Core/TaggedSemanticVersionService.cs @@ -25,7 +25,7 @@ IEnumerable>> GetEleme { yield return GetTaggedSemanticVersionsOfBranchInternal( branch: branch, - tagPrefix: configuration.TagPrefix, + tagPrefix: configuration.TagPrefixPattern, format: configuration.SemanticVersionFormat, ignore: configuration.Ignore, label: label, @@ -37,7 +37,7 @@ IEnumerable>> GetEleme { yield return GetTaggedSemanticVersionsOfMergeTargetInternal( branch: branch, - tagPrefix: configuration.TagPrefix, + tagPrefix: configuration.TagPrefixPattern, format: configuration.SemanticVersionFormat, ignore: configuration.Ignore, label: label, @@ -192,7 +192,7 @@ private IEnumerable> GetTaggedSema { var taggedSemanticVersions = GetTaggedSemanticVersionsOfBranchInternal( branch: releaseBranch, - tagPrefix: configuration.TagPrefix, + tagPrefix: configuration.TagPrefixPattern, format: configuration.SemanticVersionFormat, ignore: configuration.Ignore, label: label, @@ -232,7 +232,7 @@ private IEnumerable> GetTaggedSema { var taggedSemanticVersions = GetTaggedSemanticVersionsOfBranchInternal( branch: releaseBranch, - tagPrefix: configuration.TagPrefix, + tagPrefix: configuration.TagPrefixPattern, format: configuration.SemanticVersionFormat, ignore: configuration.Ignore, label: label, diff --git a/src/GitVersion.Core/MergeMessage.cs b/src/GitVersion.Core/MergeMessage.cs index e5c601c3b7..8d195f1b22 100644 --- a/src/GitVersion.Core/MergeMessage.cs +++ b/src/GitVersion.Core/MergeMessage.cs @@ -9,7 +9,7 @@ namespace GitVersion; public class MergeMessage { - private static readonly IList DefaultFormats = + private static readonly IList<(string Name, Regex Pattern)> DefaultFormats = [ new("Default", RegexPatterns.MergeMessage.DefaultMergeMessageRegex), new("SmartGit", RegexPatterns.MergeMessage.SmartGitMergeMessageRegex), @@ -25,21 +25,21 @@ public MergeMessage(string mergeMessage, IGitVersionConfiguration configuration) { mergeMessage.NotNull(); - if (mergeMessage == string.Empty) return; + if (mergeMessage.Length == 0) return; // Concatenate configuration formats with the defaults. // Ensure configurations are processed first. var allFormats = configuration.MergeMessageFormats - .Select(x => new MergeMessageFormat(x.Key, RegexPatterns.Cache.GetOrAdd(x.Value))) + .Select(x => (Name: x.Key, Pattern: RegexPatterns.Cache.GetOrAdd(x.Value))) .Concat(DefaultFormats); - foreach (var format in allFormats) + foreach (var (Name, Pattern) in allFormats) { - var match = format.Pattern.Match(mergeMessage); + var match = Pattern.Match(mergeMessage); if (!match.Success) continue; - FormatName = format.Name; + FormatName = Name; var sourceBranch = match.Groups["SourceBranch"].Value; MergedBranch = GetMergedBranchName(sourceBranch); @@ -53,9 +53,7 @@ public MergeMessage(string mergeMessage, IGitVersionConfiguration configuration) PullRequestNumber = pullNumber; } - Version = ParseVersion( - configuration.VersionInBranchRegex, configuration.TagPrefix, configuration.SemanticVersionFormat - ); + Version = MergedBranch?.TryGetSemanticVersion(out var result, configuration) == true ? result.Value : null; break; } @@ -69,16 +67,6 @@ public MergeMessage(string mergeMessage, IGitVersionConfiguration configuration) public int? PullRequestNumber { get; } public SemanticVersion? Version { get; } - private SemanticVersion? ParseVersion(Regex versionInBranchRegex, string? tagPrefix, SemanticVersionFormat format) - => MergedBranch?.TryGetSemanticVersion(out var result, versionInBranchRegex, tagPrefix, format) == true ? result.Value : null; - - private class MergeMessageFormat(string name, Regex pattern) - { - public string Name { get; } = name; - - public Regex Pattern { get; } = pattern; - } - private ReferenceName GetMergedBranchName(string mergedBranch) { if (FormatName == "RemoteTracking" && !mergedBranch.StartsWith(ReferenceName.RemoteTrackingBranchPrefix)) @@ -102,7 +90,7 @@ public static bool TryParse( if (isValidMergeCommit) { - mergeMessage = new(mergeCommit.Message, configuration); + mergeMessage = new MergeMessage(mergeCommit.Message, configuration); } return isValidMergeCommit; diff --git a/src/GitVersion.Core/PublicAPI.Shipped.txt b/src/GitVersion.Core/PublicAPI.Shipped.txt index 807aaa2d87..143462941c 100644 --- a/src/GitVersion.Core/PublicAPI.Shipped.txt +++ b/src/GitVersion.Core/PublicAPI.Shipped.txt @@ -86,7 +86,6 @@ GitVersion.Configuration.EffectiveConfiguration.TrackMergeTarget.get -> bool GitVersion.Configuration.EffectiveConfiguration.TracksReleaseBranches.get -> bool GitVersion.Configuration.EffectiveConfiguration.UpdateBuildNumber.get -> bool GitVersion.Configuration.EffectiveConfiguration.VersionFilters.get -> System.Collections.Generic.IEnumerable! -GitVersion.Configuration.EffectiveConfiguration.VersionInBranchRegex.get -> System.Text.RegularExpressions.Regex! GitVersion.Configuration.EffectiveConfiguration.VersionStrategy.get -> GitVersion.VersionCalculation.VersionStrategies GitVersion.Configuration.IBranchConfiguration GitVersion.Configuration.IBranchConfiguration.CommitMessageIncrementing.get -> GitVersion.VersionCalculation.CommitMessageIncrementMode? @@ -132,11 +131,9 @@ GitVersion.Configuration.IGitVersionConfiguration.NextVersion.get -> string? GitVersion.Configuration.IGitVersionConfiguration.NoBumpMessage.get -> string? GitVersion.Configuration.IGitVersionConfiguration.PatchVersionBumpMessage.get -> string? GitVersion.Configuration.IGitVersionConfiguration.SemanticVersionFormat.get -> GitVersion.SemanticVersionFormat -GitVersion.Configuration.IGitVersionConfiguration.TagPrefix.get -> string? GitVersion.Configuration.IGitVersionConfiguration.TagPreReleaseWeight.get -> int? GitVersion.Configuration.IGitVersionConfiguration.UpdateBuildNumber.get -> bool GitVersion.Configuration.IGitVersionConfiguration.VersionInBranchPattern.get -> string? -GitVersion.Configuration.IGitVersionConfiguration.VersionInBranchRegex.get -> System.Text.RegularExpressions.Regex! GitVersion.Configuration.IGitVersionConfiguration.VersionStrategy.get -> GitVersion.VersionCalculation.VersionStrategies GitVersion.Configuration.IGitVersionConfiguration.Workflow.get -> string? GitVersion.Configuration.IIgnoreConfiguration diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 00f7a767de..439fac159f 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -1,5 +1,7 @@ #nullable enable -static GitVersion.Configuration.ReferenceNameExtensions.TryGetSemanticVersion(this GitVersion.Git.ReferenceName! referenceName, out (GitVersion.SemanticVersion! Value, string? Name) result, System.Text.RegularExpressions.Regex! versionPatternRegex, string? tagPrefix, GitVersion.SemanticVersionFormat format) -> bool +GitVersion.Configuration.EffectiveConfiguration.VersionInBranchPattern.get -> string? +GitVersion.Configuration.IGitVersionConfiguration.TagPrefixPattern.get -> string? +static GitVersion.Configuration.ReferenceNameExtensions.TryGetSemanticVersion(this GitVersion.Git.ReferenceName! source, out (GitVersion.SemanticVersion! Value, string? Name) result, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> bool static GitVersion.Extensions.DictionaryExtensions.GetOrAdd(this System.Collections.Concurrent.ConcurrentDictionary! dict, string! pattern) -> System.Text.RegularExpressions.Regex! static GitVersion.Extensions.DictionaryExtensions.GetOrAdd(this System.Collections.Generic.Dictionary! dict, TKey key, System.Func! getValue) -> TValue static GitVersion.Extensions.StringExtensions.RegexReplace(this string! input, string! pattern, string! replace) -> string! diff --git a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs index d10f29da91..26ebccda50 100644 --- a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs @@ -49,10 +49,10 @@ public VersionField DetermineIncrementedField( var majorRegex = TryGetRegexOrDefault(configuration.MajorVersionBumpMessage, RegexPatterns.VersionCalculation.DefaultMajorRegex); var minorRegex = TryGetRegexOrDefault(configuration.MinorVersionBumpMessage, RegexPatterns.VersionCalculation.DefaultMinorRegex); var patchRegex = TryGetRegexOrDefault(configuration.PatchVersionBumpMessage, RegexPatterns.VersionCalculation.DefaultPatchRegex); - var none = TryGetRegexOrDefault(configuration.NoBumpMessage, RegexPatterns.VersionCalculation.DefaultNoBumpRegex); + var noBumpRegex = TryGetRegexOrDefault(configuration.NoBumpMessage, RegexPatterns.VersionCalculation.DefaultNoBumpRegex); var increments = commits - .Select(c => GetIncrementFromCommit(c, majorRegex, minorRegex, patchRegex, none)) + .Select(c => GetIncrementFromCommit(c, majorRegex, minorRegex, patchRegex, noBumpRegex)) .Where(v => v != null) .ToList(); @@ -168,13 +168,13 @@ private ICommit[] GetHeadCommits(ICommit? headCommit, IIgnoreConfiguration ignor this.headCommitsCache.GetOrAdd(headCommit?.Sha ?? "NULL", () => GetCommitsReacheableFromHead(headCommit, ignore).ToArray()); - private VersionField? GetIncrementFromCommit(ICommit commit, Regex majorRegex, Regex minorRegex, Regex patchRegex, Regex none) => + private VersionField? GetIncrementFromCommit(ICommit commit, Regex majorRegex, Regex minorRegex, Regex patchRegex, Regex noBumpRegex) => this.commitIncrementCache.GetOrAdd(commit.Sha, () => - GetIncrementFromMessage(commit.Message, majorRegex, minorRegex, patchRegex, none)); + GetIncrementFromMessage(commit.Message, majorRegex, minorRegex, patchRegex, noBumpRegex)); - private static VersionField? GetIncrementFromMessage(string message, Regex majorRegex, Regex minorRegex, Regex patchRegex, Regex none) + private static VersionField? GetIncrementFromMessage(string message, Regex majorRegex, Regex minorRegex, Regex patchRegex, Regex noBumpRegex) { - if (none.IsMatch(message)) return VersionField.None; + if (noBumpRegex.IsMatch(message)) return VersionField.None; if (majorRegex.IsMatch(message)) return VersionField.Major; if (minorRegex.IsMatch(message)) return VersionField.Minor; if (patchRegex.IsMatch(message)) return VersionField.Patch; diff --git a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs index 41e16691e5..5111804989 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionCalculators/NextVersionCalculator.cs @@ -79,7 +79,7 @@ public virtual SemanticVersion FindVersion() var ignore = Context.Configuration.Ignore; var alternativeSemanticVersion = taggedSemanticVersionService.GetTaggedSemanticVersionsOfBranch( branch: nextVersion.BranchConfiguration.Branch, - tagPrefix: Context.Configuration.TagPrefix, + tagPrefix: Context.Configuration.TagPrefixPattern, format: Context.Configuration.SemanticVersionFormat, ignore: Context.Configuration.Ignore, notOlderThan: Context.CurrentCommit.When diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/ConfiguredNextVersionVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/ConfiguredNextVersionVersionStrategy.cs index 1fa219988c..87645553ca 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/ConfiguredNextVersionVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/ConfiguredNextVersionVersionStrategy.cs @@ -25,7 +25,7 @@ public IEnumerable GetBaseVersions(EffectiveBranchConfiguration con if (!nextVersion.IsNullOrEmpty()) { var semanticVersion = SemanticVersion.Parse( - nextVersion, Context.Configuration.TagPrefix, Context.Configuration.SemanticVersionFormat + nextVersion, Context.Configuration.TagPrefixPattern, Context.Configuration.SemanticVersionFormat ); var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs index 0585fc7a3e..cd6880601d 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/VersionInBranchNameVersionStrategy.cs @@ -35,11 +35,7 @@ public bool TryGetBaseVersion(EffectiveBranchConfiguration configuration, [NotNu foreach (var branch in new[] { Context.CurrentBranch, configuration.Branch }) { - var versionInBranchRegex = configuration.Value.VersionInBranchRegex; - var tagPrefix = configuration.Value.TagPrefix; - var semanticVersionFormat = configuration.Value.SemanticVersionFormat; - - if (branch.Name.TryGetSemanticVersion(out var result, versionInBranchRegex, tagPrefix, semanticVersionFormat)) + if (branch.Name.TryGetSemanticVersion(out var result, configuration.Value)) { string? branchNameOverride = null; if (!result.Name.IsNullOrEmpty() && (Context.CurrentBranch.Name.Equals(branch.Name) From 027afb309a7013b8a1be0605527fb72ff3953bc5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 15:21:11 +0000 Subject: [PATCH 224/544] (deps): Bump the microsoft group across 2 directories with 4 updates Bumps the microsoft group with 2 updates in the /new-cli directory: [System.Text.Json](https://github.com/dotnet/runtime) and [Microsoft.Extensions.DependencyInjection](https://github.com/dotnet/runtime). Bumps the microsoft group with 4 updates in the /src directory: [Microsoft.Extensions.DependencyInjection.Abstractions](https://github.com/dotnet/runtime), [System.Text.Json](https://github.com/dotnet/runtime), [Microsoft.Extensions.DependencyInjection](https://github.com/dotnet/runtime) and [Microsoft.Extensions.Hosting](https://github.com/dotnet/runtime). Updates `System.Text.Json` from 8.0.4 to 8.0.5 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v8.0.4...v8.0.5) Updates `Microsoft.Extensions.DependencyInjection` from 8.0.0 to 8.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v8.0.0...v8.0.1) Updates `Microsoft.Extensions.DependencyInjection.Abstractions` from 8.0.1 to 8.0.2 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v8.0.1...v8.0.2) Updates `System.Text.Json` from 8.0.4 to 8.0.5 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v8.0.4...v8.0.5) Updates `Microsoft.Extensions.DependencyInjection` from 8.0.0 to 8.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v8.0.0...v8.0.1) Updates `Microsoft.Extensions.DependencyInjection.Abstractions` from 8.0.1 to 8.0.2 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v8.0.1...v8.0.2) Updates `Microsoft.Extensions.Hosting` from 8.0.0 to 8.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v8.0.0...v8.0.1) Updates `System.Text.Json` from 8.0.4 to 8.0.5 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v8.0.4...v8.0.5) Updates `Microsoft.Extensions.DependencyInjection.Abstractions` from 8.0.1 to 8.0.2 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v8.0.1...v8.0.2) Updates `Microsoft.Extensions.DependencyInjection` from 8.0.0 to 8.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v8.0.0...v8.0.1) --- updated-dependencies: - dependency-name: System.Text.Json dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.DependencyInjection dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.DependencyInjection.Abstractions dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: System.Text.Json dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.DependencyInjection dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.DependencyInjection.Abstractions dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.Hosting dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: System.Text.Json dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.DependencyInjection.Abstractions dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.DependencyInjection dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 6 +++--- src/Directory.Packages.props | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 3ae6d81ad8..c3625f6559 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -9,8 +9,8 @@ - - + + @@ -21,6 +21,6 @@ - + \ No newline at end of file diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index e4e033f5bd..2a86f0fe47 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -11,8 +11,8 @@ - - + + @@ -26,7 +26,7 @@ - + @@ -35,7 +35,7 @@ - + From 4790db223c144dd55947b45f8ced2eaef6a7d787 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 9 Oct 2024 10:47:45 +0200 Subject: [PATCH 225/544] update docker distros --- .github/actions/docker-test/action.yml | 2 +- .github/workflows/_artifacts_linux.yml | 12 +++++----- .github/workflows/_docker.yml | 12 +++++----- .github/workflows/_docker_manifests.yml | 12 +++++----- .github/workflows/_unit_tests.yml | 2 +- build/.run/Artifacts DotnetTool Test.run.xml | 2 +- build/.run/Artifacts MsBuildCore Test.run.xml | 2 +- build/.run/Artifacts Native Test.run.xml | 2 +- build/.run/Artifacts Prepare.run.xml | 2 +- build/.run/Artifacts Test.run.xml | 2 +- build/.run/Docker Build.run.xml | 2 +- build/.run/Docker Manifest.run.xml | 2 +- build/.run/Docker Publish.run.xml | 2 +- build/.run/Docker Test.run.xml | 2 +- build/common/Utilities/Constants.cs | 24 +++++++++---------- build/docker/Dockerfile | 2 +- 16 files changed, 41 insertions(+), 43 deletions(-) diff --git a/.github/actions/docker-test/action.yml b/.github/actions/docker-test/action.yml index 67b4afa070..943bc4c75b 100644 --- a/.github/actions/docker-test/action.yml +++ b/.github/actions/docker-test/action.yml @@ -6,7 +6,7 @@ inputs: default: 'amd64' distro: description: 'Linux Distro' - default: 'debian.11' + default: 'debian.12' targetFramework: description: '.net version' default: '8.0' diff --git a/.github/workflows/_artifacts_linux.yml b/.github/workflows/_artifacts_linux.yml index 3bceaa02a6..b818c2797f 100644 --- a/.github/workflows/_artifacts_linux.yml +++ b/.github/workflows/_artifacts_linux.yml @@ -20,15 +20,15 @@ jobs: fail-fast: false matrix: distro: - - alpine.3.17 - - alpine.3.18 - - centos.stream.8 - - debian.11 - - fedora.37 + - alpine.3.19 + - alpine.3.20 + - centos.stream.9 + - debian.12 + - fedora.40 - ubuntu.20.04 - ubuntu.22.04 - ubuntu.24.04 - targetFramework: [ '6.0', '8.0' ] + targetFramework: [ '8.0', '6.0' ] steps: - diff --git a/.github/workflows/_docker.yml b/.github/workflows/_docker.yml index b9e2cb6d00..8957cf8811 100644 --- a/.github/workflows/_docker.yml +++ b/.github/workflows/_docker.yml @@ -20,15 +20,15 @@ jobs: fail-fast: false matrix: distro: - - alpine.3.17 - - alpine.3.18 - - centos.stream.8 - - debian.11 - - fedora.37 + - alpine.3.19 + - alpine.3.20 + - centos.stream.9 + - debian.12 + - fedora.40 - ubuntu.20.04 - ubuntu.22.04 - ubuntu.24.04 - targetFramework: [ '6.0', '8.0' ] + targetFramework: [ '8.0', '6.0' ] steps: - diff --git a/.github/workflows/_docker_manifests.yml b/.github/workflows/_docker_manifests.yml index 5c7dd10fd9..524d290a4c 100644 --- a/.github/workflows/_docker_manifests.yml +++ b/.github/workflows/_docker_manifests.yml @@ -13,15 +13,15 @@ jobs: fail-fast: false matrix: distro: - - alpine.3.17 - - alpine.3.18 - - centos.stream.8 - - debian.11 - - fedora.37 + - alpine.3.19 + - alpine.3.20 + - centos.stream.9 + - debian.12 + - fedora.40 - ubuntu.20.04 - ubuntu.22.04 - ubuntu.24.04 - targetFramework: [ '6.0', '8.0' ] + targetFramework: [ '8.0', '6.0' ] steps: - diff --git a/.github/workflows/_unit_tests.yml b/.github/workflows/_unit_tests.yml index dd8a130d49..165c19d078 100644 --- a/.github/workflows/_unit_tests.yml +++ b/.github/workflows/_unit_tests.yml @@ -14,7 +14,7 @@ jobs: fail-fast: false matrix: os: [windows-latest, ubuntu-latest, macos-13, macos-14] - targetFramework: [ '6.0', '8.0' ] + targetFramework: [ '8.0', '6.0' ] runs-on: ${{ matrix.os }} steps: diff --git a/build/.run/Artifacts DotnetTool Test.run.xml b/build/.run/Artifacts DotnetTool Test.run.xml index d23b2b8ed0..d2cfbe1535 100644 --- a/build/.run/Artifacts DotnetTool Test.run.xml +++ b/build/.run/Artifacts DotnetTool Test.run.xml @@ -1,7 +1,7 @@
    public sealed class GitVersionRunner : Tool { - private readonly ICakeLog log; + private readonly ICakeLog _log; /// /// Initializes a new instance of the class. @@ -23,7 +23,7 @@ public GitVersionRunner( ICakeEnvironment environment, IProcessRunner processRunner, IToolLocator tools, - ICakeLog log) : base(fileSystem, environment, processRunner, tools) => this.log = log; + ICakeLog log) : base(fileSystem, environment, processRunner, tools) => this._log = log; /// /// Runs GitVersion and processes the results. @@ -32,22 +32,19 @@ public GitVersionRunner( /// A task with the GitVersion results. public GitVersion Run(GitVersionSettings settings) { - if (settings == null) - { - throw new ArgumentNullException(nameof(settings)); - } + ArgumentNullException.ThrowIfNull(settings); var output = string.Empty; Run(settings, GetArguments(settings), new ProcessSettings { RedirectStandardOutput = true }, process => { output = string.Join("\n", process.GetStandardOutput()); - if (log.Verbosity < Verbosity.Diagnostic) + if (this._log.Verbosity < Verbosity.Diagnostic) { var errors = Regex.Matches(output, @"( *ERROR:? [^\n]*)\n([^\n]*)") .SelectMany(match => new[] { match.Groups[1].Value, match.Groups[2].Value }); foreach (var error in errors) { - log.Error(error); + this._log.Error(error); } } }); @@ -55,8 +52,8 @@ public GitVersion Run(GitVersionSettings settings) if (!settings.OutputTypes.Contains(GitVersionOutput.Json)) return new GitVersion(); - 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 JsonConvert.DeserializeObject(json) ?? new GitVersion(); @@ -119,7 +116,7 @@ private ProcessArgumentBuilder GetArguments(GitVersionSettings settings) } else { - log.Warning("If you leave the branch name for GitVersion unset, it will fallback to the default branch for the repository."); + this._log.Warning("If you leave the branch name for GitVersion unset, it will fallback to the default branch for the repository."); } if (!string.IsNullOrWhiteSpace(settings.Commit)) @@ -146,7 +143,7 @@ private ProcessArgumentBuilder GetArguments(GitVersionSettings settings) builder.Append("-nofetch"); } - var verbosity = settings.Verbosity ?? log.Verbosity; + var verbosity = settings.Verbosity ?? this._log.Verbosity; if (verbosity != Verbosity.Normal) { diff --git a/build/common/Utilities/Constants.cs b/build/common/Utilities/Constants.cs index 9347b9d937..dad50fc2f2 100644 --- a/build/common/Utilities/Constants.cs +++ b/build/common/Utilities/Constants.cs @@ -21,10 +21,13 @@ public static class Constants public const string GitHub = "github"; public const string DockerHubRegistry = "docker.io"; public const string GitHubContainerRegistry = "ghcr.io"; + public static readonly string[] DockerRegistries = [DockerHub, GitHub]; public const string Arm64 = "arm64"; public const string Amd64 = "amd64"; + public static readonly string[] Architectures = [Amd64, Arm64]; + public const string AlpineLatest = "alpine.3.20"; public const string CentosStreamLatest = "centos.stream.9"; public const string DebianLatest = "debian.12"; @@ -32,7 +35,6 @@ public static class Constants public const string Ubuntu2004 = "ubuntu.20.04"; public const string Ubuntu2204 = "ubuntu.22.04"; public const string Ubuntu2404 = "ubuntu.24.04"; - public const string UbuntuLatest = Ubuntu2404; public const string DockerDistroLatest = DebianLatest; diff --git a/build/common/Utilities/Extensions.cs b/build/common/Utilities/Extensions.cs index 1c0dde261f..5691ef09fa 100644 --- a/build/common/Utilities/Extensions.cs +++ b/build/common/Utilities/Extensions.cs @@ -13,10 +13,7 @@ where baseType.IsAssignableFrom(type) && info.IsClass && !info.IsAbstract public static string GetTaskDescription(this Type task) { - if (task is null) - { - throw new ArgumentNullException(nameof(task)); - } + ArgumentNullException.ThrowIfNull(task); var attribute = task.GetCustomAttribute(); return attribute != null ? attribute.Description : string.Empty; @@ -24,10 +21,7 @@ public static string GetTaskDescription(this Type task) public static string GetTaskName(this Type task) { - if (task is null) - { - throw new ArgumentNullException(nameof(task)); - } + ArgumentNullException.ThrowIfNull(task); var attribute = task.GetCustomAttribute(); return attribute != null ? attribute.Name : task.Name; @@ -35,10 +29,7 @@ public static string GetTaskName(this Type task) public static string GetTaskArguments(this Type task) { - if (task is null) - { - throw new ArgumentNullException(nameof(task)); - } + ArgumentNullException.ThrowIfNull(task); var attributes = task.GetCustomAttributes().ToArray(); if (attributes.Length != 0) diff --git a/build/common/Utilities/TaskArgumentsAttribute.cs b/build/common/Utilities/TaskArgumentsAttribute.cs index 54a618c953..bd856ce6f3 100644 --- a/build/common/Utilities/TaskArgumentsAttribute.cs +++ b/build/common/Utilities/TaskArgumentsAttribute.cs @@ -10,3 +10,23 @@ public class TaskArgumentAttribute(string name, params string[] possibleValues) public string Name { get; } = name; public string[] PossibleValues { get; } = possibleValues; } + +[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = true)] +public class DotnetArgumentAttribute() + : TaskArgumentAttribute(Arguments.DotnetTarget, Constants.Frameworks); + +[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = true)] +public class DockerDotnetArgumentAttribute() + : TaskArgumentAttribute(Arguments.DockerDotnetVersion, Constants.Frameworks); + +[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = true)] +public class DockerDistroArgumentAttribute() + : TaskArgumentAttribute(Arguments.DockerDistro, Constants.DockerDistrosToBuild); + +[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = true)] +public class DockerRegistryArgumentAttribute() + : TaskArgumentAttribute(Arguments.DockerRegistry, Constants.DockerRegistries); + +[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = true)] +public class ArchitectureArgumentAttribute() + : TaskArgumentAttribute(Arguments.Architecture, Constants.Architectures); diff --git a/build/docker/Tasks/DockerBuild.cs b/build/docker/Tasks/DockerBuild.cs index 3ba1181164..da6586c776 100644 --- a/build/docker/Tasks/DockerBuild.cs +++ b/build/docker/Tasks/DockerBuild.cs @@ -4,10 +4,10 @@ namespace Docker.Tasks; [TaskName(nameof(DockerBuild))] [TaskDescription("Build the docker images containing the GitVersion Tool")] -[TaskArgument(Arguments.DockerRegistry, Constants.DockerHub, Constants.GitHub)] -[TaskArgument(Arguments.DockerDotnetVersion, Constants.VersionCurrent, Constants.VersionLatest)] -[TaskArgument(Arguments.DockerDistro, Constants.AlpineLatest, Constants.DebianLatest, Constants.UbuntuLatest)] -[TaskArgument(Arguments.Architecture, Constants.Amd64, Constants.Arm64)] +[DockerRegistryArgument] +[DockerDotnetArgument] +[DockerDistroArgument] +[ArchitectureArgument] public class DockerBuild : FrostingTask { public override bool ShouldRun(BuildContext context) diff --git a/build/docker/Tasks/DockerHubReadmePublish.cs b/build/docker/Tasks/DockerHubReadmePublish.cs index f9e1531fd9..318b6ad7da 100644 --- a/build/docker/Tasks/DockerHubReadmePublish.cs +++ b/build/docker/Tasks/DockerHubReadmePublish.cs @@ -8,6 +8,7 @@ namespace Docker.Tasks; [IsDependentOn(typeof(DockerHubReadmePublishInternal))] [TaskDescription("Publish the DockerHub updated README.md")] public class DockerHubReadmePublish : FrostingTask; + [TaskName(nameof(DockerHubReadmePublishInternal))] [TaskDescription("Publish the DockerHub updated README.md")] public class DockerHubReadmePublishInternal : FrostingTask diff --git a/build/docker/Tasks/DockerManifest.cs b/build/docker/Tasks/DockerManifest.cs index 6f9e2319d0..ae099f781b 100644 --- a/build/docker/Tasks/DockerManifest.cs +++ b/build/docker/Tasks/DockerManifest.cs @@ -4,9 +4,9 @@ namespace Docker.Tasks; [TaskName(nameof(DockerManifest))] [TaskDescription("Publish the docker manifest containing the images for amd64 and arm64")] -[TaskArgument(Arguments.DockerRegistry, Constants.DockerHub, Constants.GitHub)] -[TaskArgument(Arguments.DockerDotnetVersion, Constants.VersionCurrent, Constants.VersionLatest)] -[TaskArgument(Arguments.DockerDistro, Constants.AlpineLatest, Constants.DebianLatest, Constants.UbuntuLatest)] +[DockerRegistryArgument] +[DockerDotnetArgument] +[DockerDistroArgument] [IsDependentOn(typeof(DockerManifestInternal))] public class DockerManifest : FrostingTask { diff --git a/build/docker/Tasks/DockerPublish.cs b/build/docker/Tasks/DockerPublish.cs index 31204c4744..b230a4d59c 100644 --- a/build/docker/Tasks/DockerPublish.cs +++ b/build/docker/Tasks/DockerPublish.cs @@ -4,10 +4,10 @@ namespace Docker.Tasks; [TaskName(nameof(DockerPublish))] [TaskDescription("Publish the docker images containing the GitVersion Tool")] -[TaskArgument(Arguments.DockerRegistry, Constants.DockerHub, Constants.GitHub)] -[TaskArgument(Arguments.DockerDotnetVersion, Constants.VersionCurrent, Constants.VersionLatest)] -[TaskArgument(Arguments.DockerDistro, Constants.AlpineLatest, Constants.DebianLatest, Constants.UbuntuLatest)] -[TaskArgument(Arguments.Architecture, Constants.Amd64, Constants.Arm64)] +[DockerRegistryArgument] +[DockerDotnetArgument] +[DockerDistroArgument] +[ArchitectureArgument] [IsDependentOn(typeof(DockerPublishInternal))] public class DockerPublish : FrostingTask { diff --git a/build/docker/Tasks/DockerTest.cs b/build/docker/Tasks/DockerTest.cs index 3257f20267..3acc68372a 100644 --- a/build/docker/Tasks/DockerTest.cs +++ b/build/docker/Tasks/DockerTest.cs @@ -4,10 +4,10 @@ namespace Docker.Tasks; [TaskName(nameof(DockerTest))] [TaskDescription("Test the docker images containing the GitVersion Tool")] -[TaskArgument(Arguments.DockerRegistry, Constants.DockerHub, Constants.GitHub)] -[TaskArgument(Arguments.DockerDotnetVersion, Constants.VersionCurrent, Constants.VersionLatest)] -[TaskArgument(Arguments.DockerDistro, Constants.AlpineLatest, Constants.DebianLatest, Constants.UbuntuLatest)] -[TaskArgument(Arguments.Architecture, Constants.Amd64, Constants.Arm64)] +[DockerRegistryArgument] +[DockerDotnetArgument] +[DockerDistroArgument] +[ArchitectureArgument] [IsDependentOn(typeof(DockerBuild))] public class DockerTest : FrostingTask { From 35e272c009a1ba069e6f030391f44d4a027e55a6 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 9 Oct 2024 23:33:33 +0200 Subject: [PATCH 228/544] (build) Added ArgumentNullException checks for context.Version in various files. Improved error messaging and updated some syntax for consistency and clarity --- .../Tasks/ArtifactsExecutableTest.cs | 6 ++-- .../Tasks/ArtifactsMsBuildFullTest.cs | 2 +- build/build/BuildLifetime.cs | 3 +- build/build/Tasks/Build.cs | 2 +- build/build/Tasks/BuildPrepare.cs | 2 +- .../build/Tasks/Package/PackageChocolatey.cs | 15 ++++----- build/build/Tasks/Test/UnitTest.cs | 2 +- build/build/Tasks/ValidateVersion.cs | 3 +- .../Addins/GitVersion/GitVersionRunner.cs | 31 +++++++++++++------ build/common/Lifetime/BuildLifetimeBase.cs | 9 +++++- build/common/Utilities/BuildContextBase.cs | 2 +- .../Utilities/DockerContextExtensions.cs | 7 +++-- build/docker/Tasks/DockerHubReadmePublish.cs | 6 ++-- build/docs/Tasks/GenerateSchemas.cs | 3 +- build/publish/Tasks/PublishChocolatey.cs | 3 +- build/publish/Tasks/PublishNuget.cs | 3 +- 16 files changed, 63 insertions(+), 36 deletions(-) diff --git a/build/artifacts/Tasks/ArtifactsExecutableTest.cs b/build/artifacts/Tasks/ArtifactsExecutableTest.cs index 7acc9f7b47..894f3ba331 100644 --- a/build/artifacts/Tasks/ArtifactsExecutableTest.cs +++ b/build/artifacts/Tasks/ArtifactsExecutableTest.cs @@ -36,10 +36,10 @@ private static void PackageTest(BuildContextBase context, string packageToTest) context.NuGetInstall(packageToTest, new NuGetInstallSettings { - Source = new[] - { + Source = + [ context.MakeAbsolute(Paths.Nuget).FullPath - }, + ], ExcludeVersion = true, Prerelease = true, OutputDirectory = outputDirectory diff --git a/build/artifacts/Tasks/ArtifactsMsBuildFullTest.cs b/build/artifacts/Tasks/ArtifactsMsBuildFullTest.cs index 26d4f372d3..8829430d07 100644 --- a/build/artifacts/Tasks/ArtifactsMsBuildFullTest.cs +++ b/build/artifacts/Tasks/ArtifactsMsBuildFullTest.cs @@ -36,7 +36,7 @@ public override void Run(BuildContext context) Verbosity = DotNetVerbosity.Minimal, Configuration = context.MsBuildConfiguration, MSBuildSettings = dotnetMsBuildSettings, - Sources = new[] { nugetSource } + Sources = [nugetSource] }); var exe = Paths.Integration.Combine("build").Combine(framework).CombineWithFilePath("app.dll"); diff --git a/build/build/BuildLifetime.cs b/build/build/BuildLifetime.cs index fb16f3e2e2..5f0f0dc943 100644 --- a/build/build/BuildLifetime.cs +++ b/build/build/BuildLifetime.cs @@ -29,7 +29,8 @@ public override void Setup(BuildContext context, ISetupContext info) private static void SetMsBuildSettingsVersion(BuildContext context) { var msBuildSettings = context.MsBuildSettings; - var version = context.Version!; + ArgumentNullException.ThrowIfNull(context.Version); + var version = context.Version; msBuildSettings.SetVersion(version.SemVersion); msBuildSettings.SetAssemblyVersion(version.Version); diff --git a/build/build/Tasks/Build.cs b/build/build/Tasks/Build.cs index a20efdde4b..0561c3f69b 100644 --- a/build/build/Tasks/Build.cs +++ b/build/build/Tasks/Build.cs @@ -16,7 +16,7 @@ public override void Run(BuildContext context) context.DotNetRestore(sln, new DotNetRestoreSettings { Verbosity = DotNetVerbosity.Minimal, - Sources = new[] { Constants.NugetOrgUrl }, + Sources = [Constants.NugetOrgUrl], MSBuildSettings = context.MsBuildSettings }); diff --git a/build/build/Tasks/BuildPrepare.cs b/build/build/Tasks/BuildPrepare.cs index fe85bbb561..46f3de017d 100644 --- a/build/build/Tasks/BuildPrepare.cs +++ b/build/build/Tasks/BuildPrepare.cs @@ -16,7 +16,7 @@ public override void Run(BuildContext context) new() { Verbosity = DotNetVerbosity.Minimal, - Sources = new[] { Constants.NugetOrgUrl }, + Sources = [Constants.NugetOrgUrl], }); context.DotNetBuild("./src/GitVersion.App/GitVersion.App.csproj", diff --git a/build/build/Tasks/Package/PackageChocolatey.cs b/build/build/Tasks/Package/PackageChocolatey.cs index 73fbe63878..22f68b5b01 100644 --- a/build/build/Tasks/Package/PackageChocolatey.cs +++ b/build/build/Tasks/Package/PackageChocolatey.cs @@ -35,10 +35,10 @@ public override void Run(BuildContext context) .Select(file => new ChocolateyNuSpecContent { Source = file.FullPath, Target = file.FullPath.Replace(artifactPath, "") }) .ToArray(); - metaPackageSettings.Dependencies = new[] - { + metaPackageSettings.Dependencies = + [ new ChocolateyNuSpecDependency { Id = "GitVersion.Portable", Version = context.Version?.ChocolateyVersion } - }; + ]; context.ChocolateyPack(metaPackageSettings); } @@ -51,8 +51,8 @@ private static ChocolateyPackSettings GetChocolateyPackSettings(BuildContextBase Version = context.Version?.ChocolateyVersion, Title = "GitVersion", Description = "Derives SemVer information from a repository following GitFlow or GitHubFlow.", - Authors = new[] { "GitTools and Contributors" }, - Owners = new[] { "GitTools and Contributors" }, + Authors = ["GitTools and Contributors"], + Owners = ["GitTools and Contributors"], Copyright = $"Copyright GitTools {DateTime.Now.Year}", DocsUrl = new Uri("https://gitversion.net/docs/"), LicenseUrl = new Uri("https://opensource.org/license/mit/"), @@ -60,8 +60,9 @@ private static ChocolateyPackSettings GetChocolateyPackSettings(BuildContextBase ProjectSourceUrl = new Uri("https://github.com/GitTools/GitVersion"), IconUrl = new Uri("https://raw.githubusercontent.com/GitTools/graphics/master/GitVersion/Color/icon_100x100.png"), RequireLicenseAcceptance = false, - Tags = new[] { "Git", "Versioning", "GitVersion", "GitFlowVersion", "GitFlow", "GitHubFlow", "SemVer" }, - ReleaseNotes = new[] { $"https://github.com/GitTools/GitVersion/releases/tag/{context.Version?.ChocolateyVersion}" }, + Tags = ["Git", "Versioning", "GitVersion", "GitFlowVersion", "GitFlow", "GitHubFlow", "SemVer"], + ReleaseNotes = [$"https://github.com/GitTools/GitVersion/releases/tag/{context.Version?.ChocolateyVersion}" + ], OutputDirectory = Paths.Nuget, LimitOutput = true, }; diff --git a/build/build/Tasks/Test/UnitTest.cs b/build/build/Tasks/Test/UnitTest.cs index 0ca142cc99..6178f34b4d 100644 --- a/build/build/Tasks/Test/UnitTest.cs +++ b/build/build/Tasks/Test/UnitTest.cs @@ -73,7 +73,7 @@ private static void TestProjectForTarget(BuildContext context, FilePath project, }; var resultsPath = context.MakeAbsolute(testResultsPath.CombineWithFilePath($"{projectName}.results.xml")); - settings.Loggers = new[] { $"junit;LogFilePath={resultsPath}" }; + settings.Loggers = [$"junit;LogFilePath={resultsPath}"]; var coverletSettings = new CoverletSettings { diff --git a/build/build/Tasks/ValidateVersion.cs b/build/build/Tasks/ValidateVersion.cs index 317a5caa7b..e88866ffca 100644 --- a/build/build/Tasks/ValidateVersion.cs +++ b/build/build/Tasks/ValidateVersion.cs @@ -9,7 +9,8 @@ public class ValidateVersion : FrostingTask { public override void Run(BuildContext context) { + ArgumentNullException.ThrowIfNull(context.Version); var gitVersionTool = context.GetGitVersionToolLocation(); - context.ValidateOutput("dotnet", $"\"{gitVersionTool}\" -version", context.Version!.GitVersion!.InformationalVersion!); + context.ValidateOutput("dotnet", $"\"{gitVersionTool}\" -version", context.Version.GitVersion.InformationalVersion); } } diff --git a/build/common/Addins/GitVersion/GitVersionRunner.cs b/build/common/Addins/GitVersion/GitVersionRunner.cs index dd391d2532..7da7defc4d 100644 --- a/build/common/Addins/GitVersion/GitVersionRunner.cs +++ b/build/common/Addins/GitVersion/GitVersionRunner.cs @@ -6,7 +6,7 @@ namespace Common.Addins.GitVersion; /// /// The GitVersion runner. /// -public sealed class GitVersionRunner : Tool +public sealed partial class GitVersionRunner : Tool { private readonly ICakeLog _log; @@ -38,14 +38,13 @@ public GitVersion Run(GitVersionSettings settings) Run(settings, GetArguments(settings), new ProcessSettings { RedirectStandardOutput = true }, process => { output = string.Join("\n", process.GetStandardOutput()); - if (this._log.Verbosity < Verbosity.Diagnostic) + if (this._log.Verbosity >= Verbosity.Diagnostic) return; + var regex = ParseErrorRegex(); + var errors = regex.Matches(output) + .SelectMany(match => new[] { match.Groups[1].Value, match.Groups[2].Value }); + foreach (var error in errors) { - var errors = Regex.Matches(output, @"( *ERROR:? [^\n]*)\n([^\n]*)") - .SelectMany(match => new[] { match.Groups[1].Value, match.Groups[2].Value }); - foreach (var error in errors) - { - this._log.Error(error); - } + this._log.Error(error); } }); @@ -68,6 +67,7 @@ private ProcessArgumentBuilder GetArguments(GitVersionSettings settings) builder.Append("-output"); builder.Append("json"); } + if (settings.OutputTypes.Contains(GitVersionOutput.BuildServer)) { builder.Append("-output"); @@ -116,7 +116,8 @@ private ProcessArgumentBuilder GetArguments(GitVersionSettings settings) } else { - this._log.Warning("If you leave the branch name for GitVersion unset, it will fallback to the default branch for the repository."); + this._log.Warning( + "If you leave the branch name for GitVersion unset, it will fallback to the default branch for the repository."); } if (!string.IsNullOrWhiteSpace(settings.Commit)) @@ -150,6 +151,7 @@ private ProcessArgumentBuilder GetArguments(GitVersionSettings settings) builder.Append("-verbosity"); builder.Append(verbosity.ToString()); } + return builder; } @@ -163,5 +165,14 @@ private ProcessArgumentBuilder GetArguments(GitVersionSettings settings) /// Gets the possible names of the tool executable. /// /// The tool executable name. - protected override IEnumerable GetToolExecutableNames() => new[] { "GitVersion.exe", "dotnet-gitversion", "dotnet-gitversion.exe", "gitversion" }; + protected override IEnumerable GetToolExecutableNames() => + [ + "GitVersion.exe", + "dotnet-gitversion", + "dotnet-gitversion.exe", + "gitversion" + ]; + + [GeneratedRegex(@"( *ERROR:? [^\n]*)\n([^\n]*)")] + private static partial Regex ParseErrorRegex(); } diff --git a/build/common/Lifetime/BuildLifetimeBase.cs b/build/common/Lifetime/BuildLifetimeBase.cs index 1a7bb3fce6..139609d0f5 100644 --- a/build/common/Lifetime/BuildLifetimeBase.cs +++ b/build/common/Lifetime/BuildLifetimeBase.cs @@ -30,11 +30,18 @@ public override void Setup(T context, ISetupContext info) context.Information("Running BuildPrepare..."); return; } + + var gitVersionPath = context.GetGitVersionDotnetToolLocation(); + if (gitVersionPath is null || context.FileExists(gitVersionPath) is false) + { + throw new FileNotFoundException("Failed to locate the Release build of gitversion.dll in ./tools/gitversion. Try running \"./build.ps1 -Stage build -Target BuildPrepare\""); + } + var gitVersionSettings = new GitVersionSettings { OutputTypes = [GitVersionOutput.Json, GitVersionOutput.BuildServer], ToolPath = context.Tools.Resolve(["dotnet.exe", "dotnet"]), - ArgumentCustomization = args => args.Prepend(context.GetGitVersionDotnetToolLocation()?.FullPath ?? throw new FileNotFoundException("Failed to locate the Release build of gitversion.dll in ./tools/gitversion. Try running \"./build.ps1 -Stage build -Target BuildPrepare\"")) + ArgumentCustomization = args => args.Prepend(gitVersionPath.FullPath) }; var gitVersion = context.GitVersion(gitVersionSettings); diff --git a/build/common/Utilities/BuildContextBase.cs b/build/common/Utilities/BuildContextBase.cs index 6dba79bdc1..93be1fc1b6 100644 --- a/build/common/Utilities/BuildContextBase.cs +++ b/build/common/Utilities/BuildContextBase.cs @@ -2,7 +2,7 @@ namespace Common.Utilities; public class BuildContextBase : FrostingContext { - protected BuildContextBase(ICakeContext context) : base(context) => Platform = Environment.Platform.Family; + protected BuildContextBase(ICakeContext context) : base(context) => Platform = context.Environment.Platform.Family; public PlatformFamily Platform { get; set; } public BuildVersion? Version { get; set; } public bool IsOriginalRepo { get; set; } diff --git a/build/common/Utilities/DockerContextExtensions.cs b/build/common/Utilities/DockerContextExtensions.cs index c20e106994..06ab4de0ff 100644 --- a/build/common/Utilities/DockerContextExtensions.cs +++ b/build/common/Utilities/DockerContextExtensions.cs @@ -108,13 +108,14 @@ public static void DockerBuildXBuild(this ICakeContext context, DockerBuildXBuil public static void DockerManifest(this BuildContextBase context, DockerImage dockerImage) { + ArgumentNullException.ThrowIfNull(context.Version); var manifestTags = context.GetDockerTags(dockerImage); foreach (var tag in manifestTags) { var amd64Tag = $"{tag}-{Architecture.Amd64.ToSuffix()}"; var arm64Tag = $"{tag}-{Architecture.Arm64.ToSuffix()}"; - var settings = GetManifestSettings(dockerImage, context.Version!, tag); + var settings = GetManifestSettings(dockerImage, context.Version, tag); context.DockerBuildXImageToolsCreate(settings, [amd64Tag, arm64Tag]); } } @@ -186,13 +187,13 @@ public static void DockerTestArtifact(this BuildContextBase context, DockerImage private static void DockerTestRun(this BuildContextBase context, string image, Architecture arch, string command, params string[] args) { + ArgumentNullException.ThrowIfNull(context.Version?.GitVersion.FullSemVer); var settings = GetDockerRunSettings(context, arch); context.Information($"Testing image: {image}"); var output = context.DockerRun(settings, image, command, args); context.Information("Output : " + output); - Assert.NotNull(context.Version?.GitVersion); - Assert.Contains(context.Version.GitVersion.FullSemVer!, output); + Assert.Contains(context.Version.GitVersion.FullSemVer, output); } private static IEnumerable GetDockerTags(this BuildContextBase context, DockerImage dockerImage, diff --git a/build/docker/Tasks/DockerHubReadmePublish.cs b/build/docker/Tasks/DockerHubReadmePublish.cs index 318b6ad7da..8fb3d1f9de 100644 --- a/build/docker/Tasks/DockerHubReadmePublish.cs +++ b/build/docker/Tasks/DockerHubReadmePublish.cs @@ -26,11 +26,12 @@ public override bool ShouldRun(BuildContext context) public override void Run(BuildContext context) { + ArgumentNullException.ThrowIfNull(context.Credentials?.DockerHub); var readme = GetReadmeContent(context); var response = context.HttpPost("https://hub.docker.com/v2/users/login", settings => { - var credentials = context.Credentials!.DockerHub!; + var credentials = context.Credentials.DockerHub; settings .SetContentType("application/json") .SetJsonRequestBody(new { username = credentials.Username, password = credentials.Password }); @@ -49,7 +50,8 @@ public override void Run(BuildContext context) private static string GetReadmeContent(BuildContextBase context) { - var version = context.Version!.GitVersion.MajorMinorPatch; + ArgumentNullException.ThrowIfNull(context.Version); + var version = context.Version.GitVersion.MajorMinorPatch; const string distro = Constants.AlpineLatest; const string dotnetVersion = Constants.VersionLatest; var tag = $"{version}-{distro}-{dotnetVersion}"; diff --git a/build/docs/Tasks/GenerateSchemas.cs b/build/docs/Tasks/GenerateSchemas.cs index f4defba0dd..ffa1d1804f 100644 --- a/build/docs/Tasks/GenerateSchemas.cs +++ b/build/docs/Tasks/GenerateSchemas.cs @@ -8,8 +8,9 @@ public sealed class GenerateSchemas : FrostingTask { public override void Run(BuildContext context) { + ArgumentNullException.ThrowIfNull(context.Version); var schemaTool = context.GetSchemaDotnetToolLocation(); - var gitVersion = context.Version!.GitVersion; + var gitVersion = context.Version.GitVersion; var version = $"{gitVersion.Major}.{gitVersion.Minor}"; var schemaTargetDir = context.MakeAbsolute(Paths.Root.Combine("schemas")); context.EnsureDirectoryExists(schemaTargetDir); diff --git a/build/publish/Tasks/PublishChocolatey.cs b/build/publish/Tasks/PublishChocolatey.cs index fce099205d..078f555dc0 100644 --- a/build/publish/Tasks/PublishChocolatey.cs +++ b/build/publish/Tasks/PublishChocolatey.cs @@ -31,7 +31,8 @@ public override async Task RunAsync(BuildContext context) throw new InvalidOperationException("Could not resolve Chocolatey API key."); } - var nugetVersion = context.Version!.NugetVersion; + ArgumentNullException.ThrowIfNull(context.Version); + var nugetVersion = context.Version.NugetVersion; var packages = context.Packages .Where(x => x.IsChocoPackage) .OrderByDescending(x => x.PackageName); diff --git a/build/publish/Tasks/PublishNuget.cs b/build/publish/Tasks/PublishNuget.cs index 2abb602526..59649a35af 100644 --- a/build/publish/Tasks/PublishNuget.cs +++ b/build/publish/Tasks/PublishNuget.cs @@ -50,7 +50,8 @@ public override void Run(BuildContext context) } private static void PublishToNugetRepo(BuildContext context, string apiKey, string apiUrl) { - var nugetVersion = context.Version!.NugetVersion; + ArgumentNullException.ThrowIfNull(context.Version); + var nugetVersion = context.Version.NugetVersion; foreach (var (packageName, filePath, _) in context.Packages.Where(x => !x.IsChocoPackage)) { context.Information($"Package {packageName}, version {nugetVersion} is being published."); From ce12bb69f81f920d5505989f83237f7985c2231b Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 10 Oct 2024 00:04:21 +0200 Subject: [PATCH 229/544] (build) Refactor constants and improve code clarity Updated the `Constants.cs` to better organize and rename fields for architectures. Removed redundant constants and added proper code suppression for ReSharper. --- build/common/Utilities/Constants.cs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/build/common/Utilities/Constants.cs b/build/common/Utilities/Constants.cs index dad50fc2f2..1dbb54c1fa 100644 --- a/build/common/Utilities/Constants.cs +++ b/build/common/Utilities/Constants.cs @@ -1,3 +1,4 @@ +// ReSharper disable MemberCanBePrivate.Global namespace Common.Utilities; public static class Constants @@ -7,12 +8,13 @@ public static class Constants public const string VersionCurrent = "6.0"; public const string VersionLatest = "8.0"; + public static readonly string[] Frameworks = [VersionCurrent, VersionLatest]; public const string DefaultBranch = "main"; public const string DefaultConfiguration = "Release"; public static readonly Architecture[] ArchToBuild = [Architecture.Amd64, Architecture.Arm64]; - public static readonly string[] Frameworks = [VersionCurrent, VersionLatest]; + public static readonly string[] Architectures = [nameof(Architecture.Amd64), nameof(Architecture.Arm64)]; public const string DockerBaseImageName = "gittools/build-images"; public const string DockerImageName = "gittools/gitversion"; @@ -23,11 +25,6 @@ public static class Constants public const string GitHubContainerRegistry = "ghcr.io"; public static readonly string[] DockerRegistries = [DockerHub, GitHub]; - public const string Arm64 = "arm64"; - public const string Amd64 = "amd64"; - - public static readonly string[] Architectures = [Amd64, Arm64]; - public const string AlpineLatest = "alpine.3.20"; public const string CentosStreamLatest = "centos.stream.9"; public const string DebianLatest = "debian.12"; From 6f76020a0cf627991ccc02983040ab8baac90422 Mon Sep 17 00:00:00 2001 From: Bob Loblaw Date: Fri, 11 Oct 2024 18:08:57 +0200 Subject: [PATCH 230/544] Clarify version strategy order in documentation Updated the configuration documentation to specify that the order in which version strategies are specified does not matter. --- docs/input/docs/reference/mdsource/configuration.source.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/input/docs/reference/mdsource/configuration.source.md b/docs/input/docs/reference/mdsource/configuration.source.md index 6a29b96272..d913b67c6b 100644 --- a/docs/input/docs/reference/mdsource/configuration.source.md +++ b/docs/input/docs/reference/mdsource/configuration.source.md @@ -550,7 +550,9 @@ Example of invalid `Strict`, but valid `Loose` ### strategies -Specifies which version strategy implementation (one ore more) will be used to determine the next version. Following values are supported and can be combined: +Specifies which version strategy implementation (one or more) will be used to determine the next version. +These strategies can be combined, and the order in which they are specified does not matter. +The configuration accepts the following values: - Fallback - ConfiguredNextVersion From 1750d00f7889b430d1a7fcfa4a0c787d099ebb07 Mon Sep 17 00:00:00 2001 From: Bob Loblaw Date: Fri, 11 Oct 2024 18:10:47 +0200 Subject: [PATCH 231/544] Further document Fallback strategy --- docs/input/docs/learn/how-it-works.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/input/docs/learn/how-it-works.md b/docs/input/docs/learn/how-it-works.md index aa1a57c959..f8c3368416 100644 --- a/docs/input/docs/learn/how-it-works.md +++ b/docs/input/docs/learn/how-it-works.md @@ -48,7 +48,8 @@ Currently we have the following strategies: (e.g., `Merge 'release/3.0.0' into 'main'` will return `3.0.0`) * `Fallback` - Always returns 0.0.0 and will be used for calculating the next version which is dependent on the increment strategy of - the effected branch (e.g. on main the next version is 0.0.1 or on develop it is 0.1.0) + the effected branch (e.g. on main the next version is 0.0.1 or on develop it is 0.1.0). + The fallback strategy only applies if no other selected strategy returns a base version. * `TrackReleaseBranches` - Considers the base version extracted from release branches when calculating the next version for branches configured with `track-release-branches: true` (part of default configuration for `develop` branch in `GitFlow` workflow) From 5f4ca13cd8682de09dca7b9c0df2133172966022 Mon Sep 17 00:00:00 2001 From: Bob Loblaw Date: Fri, 11 Oct 2024 18:11:56 +0200 Subject: [PATCH 232/544] Re-order strategies in how-it-works to match rest of documentation pages --- docs/input/docs/learn/how-it-works.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/docs/input/docs/learn/how-it-works.md b/docs/input/docs/learn/how-it-works.md index f8c3368416..03391ae1e4 100644 --- a/docs/input/docs/learn/how-it-works.md +++ b/docs/input/docs/learn/how-it-works.md @@ -38,21 +38,20 @@ simply to show what happens if the check is true. Currently we have the following strategies: -* `TaggedCommit` - Extracts version information from all tags on the branch which are valid, - and not newer than the current commit. -* `VersionInBranchName` - Extracts version information from the - branch name (e.g., `release/3.0.0` will find `3.0.0`) -* `ConfiguredNextVersion` - Returns the version from the - GitVersion.yaml file -* `MergeMessage` - Finds version numbers from merge messages - (e.g., `Merge 'release/3.0.0' into 'main'` will return `3.0.0`) * `Fallback` - Always returns 0.0.0 and will be used for calculating the next version which is dependent on the increment strategy of the effected branch (e.g. on main the next version is 0.0.1 or on develop it is 0.1.0). The fallback strategy only applies if no other selected strategy returns a base version. +* `ConfiguredNextVersion` - Returns the version from the GitVersion.yaml file +* `MergeMessage` - Finds version numbers from merge messages + (e.g., `Merge 'release/3.0.0' into 'main'` will return `3.0.0`) +* `TaggedCommit` - Extracts version information from all tags on the branch which are valid, + and not newer than the current commit. * `TrackReleaseBranches` - Considers the base version extracted from release branches when -calculating the next version for branches configured with `track-release-branches: true` -(part of default configuration for `develop` branch in `GitFlow` workflow) + calculating the next version for branches configured with `track-release-branches: true` + (part of default configuration for `develop` branch in `GitFlow` workflow) +* `VersionInBranchName` - Extracts version information from the + branch name (e.g., `release/3.0.0` will find `3.0.0`) * `Mainline` - Increments the version on every commit for branches configured with `is-main-branch: true` Each strategy needs to return an instance of `BaseVersion` which has the From 7b81817e248471446a9b39fda9724909a9cab537 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Fri, 11 Oct 2024 21:45:16 +0200 Subject: [PATCH 233/544] fix markdown --- docs/input/docs/reference/configuration.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index cf52e3cfc0..a377ed692e 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -949,7 +949,9 @@ Example of invalid `Strict`, but valid `Loose` ### strategies -Specifies which version strategy implementation (one ore more) will be used to determine the next version. Following values are supported and can be combined: +Specifies which version strategy implementation (one or more) will be used to determine the next version. +These strategies can be combined, and the order in which they are specified does not matter. +The configuration accepts the following values: - Fallback - ConfiguredNextVersion @@ -957,7 +959,7 @@ Specifies which version strategy implementation (one ore more) will be used to d - TaggedCommit - TrackReleaseBranches - VersionInBranchName -- TrunkBased +- Mainline [1145]: https://github.com/GitTools/GitVersion/issues/1145 [1366]: https://github.com/GitTools/GitVersion/issues/1366 From 852a36312523a79aa423d7867ac2a1b96bc223c7 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Fri, 11 Oct 2024 22:07:24 +0200 Subject: [PATCH 234/544] fix markdown --- package-lock.json | 80 +++++++++++++---------------------------------- 1 file changed, 22 insertions(+), 58 deletions(-) diff --git a/package-lock.json b/package-lock.json index c5f6fb7147..5ee552e795 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1998,10 +1998,11 @@ } }, "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "peer": true, "bin": { "semver": "bin/semver.js" @@ -3566,18 +3567,6 @@ "node": ">=8" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/markdown-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", @@ -4730,10 +4719,11 @@ } }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "peer": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -15110,13 +15100,11 @@ ] }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -16506,12 +16494,6 @@ "npm": ">=5" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/yaml": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", @@ -18051,9 +18033,9 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "peer": true } @@ -19176,15 +19158,6 @@ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "dev": true }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "markdown-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", @@ -20004,9 +19977,9 @@ "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "peer": true, "requires": { @@ -28081,13 +28054,10 @@ "dev": true }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true }, "shebang-command": { "version": "2.0.0", @@ -29160,12 +29130,6 @@ "weasel-words": "^0.1.1" } }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "yaml": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", From 5a1d52ea8062551a528dd350806d861ad43cc240 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 16:01:18 +0000 Subject: [PATCH 235/544] (deps): Bump JunitXml.TestLogger from 4.0.254 to 4.1.0 in /src Bumps [JunitXml.TestLogger](https://github.com/spekt/testlogger) from 4.0.254 to 4.1.0. - [Release notes](https://github.com/spekt/testlogger/releases) - [Changelog](https://github.com/spekt/testlogger/blob/master/CHANGELOG.md) - [Commits](https://github.com/spekt/testlogger/compare/v4.0.254...v4.1.0) --- updated-dependencies: - dependency-name: JunitXml.TestLogger dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 2a86f0fe47..474a3d6ed9 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -19,7 +19,7 @@ - + From 0b30d551df833827ed8754fa7d372acb2f4bf162 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 15:57:42 +0000 Subject: [PATCH 236/544] (deps): Bump the analyzers group across 2 directories with 2 updates Bumps the analyzers group with 2 updates in the /new-cli directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Bumps the analyzers group with 2 updates in the /src directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Updates `Roslynator.Analyzers` from 4.12.7 to 4.12.8 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.7...v4.12.8) Updates `Roslynator.Formatting.Analyzers` from 4.12.7 to 4.12.8 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.7...v4.12.8) Updates `Roslynator.Analyzers` from 4.12.7 to 4.12.8 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.7...v4.12.8) Updates `Roslynator.Formatting.Analyzers` from 4.12.7 to 4.12.8 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.7...v4.12.8) --- updated-dependencies: - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 4 ++-- src/Directory.Packages.props | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index c3625f6559..53558d9f90 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -12,8 +12,8 @@ - - + + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 474a3d6ed9..8b618a13de 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -14,8 +14,8 @@ - - + + From de1be5593a09345d37554968c99b43d8df5626e9 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 15 Oct 2024 09:23:20 +0200 Subject: [PATCH 237/544] moved direct usages of IGitRepository to IRepositoryStore done some code cleanup --- .../Core/Abstractions/IRepositoryStore.cs | 13 ++- src/GitVersion.Core/Core/BranchRepository.cs | 7 +- .../Core/BranchesContainingCommitFinder.cs | 17 +--- .../Core/GitVersionContextFactory.cs | 8 +- .../Core/MainlineBranchFinder.cs | 97 ------------------- src/GitVersion.Core/Core/MergeBaseFinder.cs | 17 +--- src/GitVersion.Core/Core/MergeCommitFinder.cs | 5 +- src/GitVersion.Core/Core/RepositoryStore.cs | 92 ++++++++++++------ .../Core/TaggedSemanticVersionRepository.cs | 9 +- .../Core/TaggedSemanticVersionService.cs | 14 +-- src/GitVersion.Core/Git/IGitRepository.cs | 4 +- src/GitVersion.Core/PublicAPI.Shipped.txt | 4 - src/GitVersion.Core/PublicAPI.Unshipped.txt | 8 ++ .../Caching/GitVersionCacheKeyFactory.cs | 9 +- .../IncrementStrategyFinder.cs | 23 ++--- .../Git/BranchCollection.cs | 9 +- .../Git/CommitCollection.cs | 12 +-- .../Git/GitRepository.cs | 7 +- ....extended.cs => GitRepository.mutating.cs} | 0 19 files changed, 135 insertions(+), 220 deletions(-) delete mode 100644 src/GitVersion.Core/Core/MainlineBranchFinder.cs rename src/GitVersion.LibGit2Sharp/Git/{GitRepository.extended.cs => GitRepository.mutating.cs} (100%) diff --git a/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs b/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs index 803b9a123c..042cb37c1a 100644 --- a/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs +++ b/src/GitVersion.Core/Core/Abstractions/IRepositoryStore.cs @@ -5,6 +5,11 @@ namespace GitVersion.Common; public interface IRepositoryStore { + int UncommittedChangesCount { get; } + IBranch Head { get; } + IBranchCollection Branches { get; } + ITagCollection Tags { get; } + /// /// Find the merge base of the two branches, i.e. the best common ancestor of the two branches' tips. /// @@ -13,12 +18,14 @@ public interface IRepositoryStore ICommit? FindMergeBase(ICommit commit, ICommit mainlineTip); ICommit? GetCurrentCommit(IBranch currentBranch, string? commitId, IIgnoreConfiguration ignore); + ICommit? GetForwardMerge(ICommit? commitToFindCommonBase, ICommit? findMergeBase); IReadOnlyList GetCommitLog(ICommit? baseVersionSource, ICommit currentCommit, IIgnoreConfiguration ignore); + IReadOnlyList GetCommitsReacheableFromHead(ICommit? headCommit, IIgnoreConfiguration ignore); + IReadOnlyList GetCommitsReacheableFrom(IGitObject commit, IBranch branch); IBranch GetTargetBranch(string? targetBranchName); IBranch? FindBranch(ReferenceName branchName); - IBranch? FindBranch(string branchName); IEnumerable ExcludingBranches(IEnumerable branchesToExclude); IEnumerable GetBranchesContainingCommit(ICommit commit, IEnumerable? branches = null, bool onlyTrackedBranches = false); @@ -31,13 +38,9 @@ public interface IRepositoryStore IEnumerable FindCommitBranchesBranchedFrom(IBranch branch, IGitVersionConfiguration configuration, params IBranch[] excludedBranches); - IEnumerable FindCommitBranchesBranchedFrom(IBranch branch, IGitVersionConfiguration configuration, IEnumerable excludedBranches); - IEnumerable GetSourceBranches(IBranch branch, IGitVersionConfiguration configuration, params IBranch[] excludedBranches); IEnumerable GetSourceBranches(IBranch branch, IGitVersionConfiguration configuration, IEnumerable excludedBranches); bool IsCommitOnBranch(ICommit? baseVersionSource, IBranch branch, ICommit firstMatchingCommit); - - int GetNumberOfUncommittedChanges(); } diff --git a/src/GitVersion.Core/Core/BranchRepository.cs b/src/GitVersion.Core/Core/BranchRepository.cs index 731e12fe23..a92236d3e1 100644 --- a/src/GitVersion.Core/Core/BranchRepository.cs +++ b/src/GitVersion.Core/Core/BranchRepository.cs @@ -1,12 +1,13 @@ +using GitVersion.Common; using GitVersion.Configuration; using GitVersion.Extensions; using GitVersion.Git; namespace GitVersion.Core; -internal sealed class BranchRepository(IGitRepository gitRepository) : IBranchRepository +internal sealed class BranchRepository(IRepositoryStore repositoryStore) : IBranchRepository { - private readonly IGitRepository gitRepository = gitRepository.NotNull(); + private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); public IEnumerable GetMainBranches(IGitVersionConfiguration configuration, params IBranch[] excludeBranches) => GetBranches(configuration, [.. excludeBranches], branchConfiguration => branchConfiguration.IsMainBranch == true); @@ -19,7 +20,7 @@ private IEnumerable GetBranches( { predicate.NotNull(); - foreach (var branch in this.gitRepository.Branches) + foreach (var branch in this.repositoryStore.Branches) { if (!excludeBranches.Contains(branch)) { diff --git a/src/GitVersion.Core/Core/BranchesContainingCommitFinder.cs b/src/GitVersion.Core/Core/BranchesContainingCommitFinder.cs index bc2934fa2b..973a20060c 100644 --- a/src/GitVersion.Core/Core/BranchesContainingCommitFinder.cs +++ b/src/GitVersion.Core/Core/BranchesContainingCommitFinder.cs @@ -1,18 +1,19 @@ +using GitVersion.Common; using GitVersion.Extensions; using GitVersion.Git; using GitVersion.Logging; namespace GitVersion; -internal class BranchesContainingCommitFinder(IGitRepository repository, ILog log) +internal class BranchesContainingCommitFinder(IRepositoryStore repositoryStore, ILog log) { private readonly ILog log = log.NotNull(); - private readonly IGitRepository repository = repository.NotNull(); + private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); public IEnumerable GetBranchesContainingCommit(ICommit commit, IEnumerable? branches = null, bool onlyTrackedBranches = false) { commit.NotNull(); - branches ??= [.. this.repository.Branches]; + branches ??= [.. this.repositoryStore.Branches]; // TODO Should we cache this? // Yielding part is split from the main part of the method to avoid having the exception check performed lazily. @@ -45,7 +46,7 @@ private IEnumerable InnerGetBranchesContainingCommit(IGitObject commit, { log.Info($"Searching for commits reachable from '{branch}'."); - var commits = GetCommitsReacheableFrom(commit, branch); + var commits = this.repositoryStore.GetCommitsReacheableFrom(commit, branch); if (!commits.Any()) { @@ -59,14 +60,6 @@ private IEnumerable InnerGetBranchesContainingCommit(IGitObject commit, } } - private IEnumerable GetCommitsReacheableFrom(IGitObject commit, IBranch branch) - { - var filter = new CommitFilter { IncludeReachableFrom = branch }; - var commitCollection = this.repository.Commits.QueryBy(filter); - - return commitCollection.Where(c => c.Sha == commit.Sha); - } - private static bool IncludeTrackedBranches(IBranch branch, bool includeOnlyTracked) => (includeOnlyTracked && branch.IsTracking) || !includeOnlyTracked; diff --git a/src/GitVersion.Core/Core/GitVersionContextFactory.cs b/src/GitVersion.Core/Core/GitVersionContextFactory.cs index 537c6145b9..a306e5c045 100644 --- a/src/GitVersion.Core/Core/GitVersionContextFactory.cs +++ b/src/GitVersion.Core/Core/GitVersionContextFactory.cs @@ -27,11 +27,7 @@ public GitVersionContext Create(GitVersionOptions gitVersionOptions) ?? throw new InvalidOperationException("Need a branch to operate on"); var currentCommit = this.repositoryStore.GetCurrentCommit( currentBranch, gitVersionOptions.RepositoryInfo.CommitId, configuration.Ignore - ); - - if (currentCommit is null) - throw new GitVersionException("No commits found on the current branch."); - + ) ?? throw new GitVersionException("No commits found on the current branch."); if (currentBranch.IsDetachedHead) { var branchForCommit = this.repositoryStore.GetBranchesContainingCommit( @@ -45,7 +41,7 @@ public GitVersionContext Create(GitVersionOptions gitVersionOptions) format: configuration.SemanticVersionFormat, ignore: configuration.Ignore ).Contains(currentCommit); - var numberOfUncommittedChanges = this.repositoryStore.GetNumberOfUncommittedChanges(); + var numberOfUncommittedChanges = this.repositoryStore.UncommittedChangesCount; return new(currentBranch, currentCommit, configuration, isCurrentCommitTagged, numberOfUncommittedChanges); } diff --git a/src/GitVersion.Core/Core/MainlineBranchFinder.cs b/src/GitVersion.Core/Core/MainlineBranchFinder.cs deleted file mode 100644 index 8f818cf303..0000000000 --- a/src/GitVersion.Core/Core/MainlineBranchFinder.cs +++ /dev/null @@ -1,97 +0,0 @@ -using GitVersion.Common; -using GitVersion.Configuration; -using GitVersion.Core; -using GitVersion.Extensions; -using GitVersion.Git; -using GitVersion.Logging; - -namespace GitVersion; - -internal class MainlineBranchFinder( - IRepositoryStore repositoryStore, - IGitRepository repository, - IGitVersionConfiguration configuration, - ILog log) -{ - private readonly IGitVersionConfiguration configuration = configuration.NotNull(); - private readonly ILog log = log.NotNull(); - private readonly IGitRepository repository = repository.NotNull(); - private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); - private readonly List mainlineBranchConfigurations = - configuration.Branches.Select(e => e.Value).Where(b => b.IsMainBranch == true).ToList(); - - public IDictionary> FindMainlineBranches(ICommit commit) - { - var branchOriginFinder = new BranchOriginFinder(commit, this.repositoryStore, this.configuration, this.log); - return this.repository.Branches - .Where(IsMainBranch) - .Select(branchOriginFinder.BranchOrigin) - .Where(bc => bc != BranchCommit.Empty) - .GroupBy(bc => bc.Commit.Sha, bc => bc.Branch) - .ToDictionary(group => group.Key, x => x.ToList()); - } - - private bool IsMainBranch(INamedReference branch) - { - var matcher = new MainlineConfigBranchMatcher(branch, this.log); - return this.mainlineBranchConfigurations.Any(matcher.IsMainBranch); - } - - private class MainlineConfigBranchMatcher(INamedReference branch, ILog log) - { - private readonly INamedReference branch = branch.NotNull(); - private readonly ILog log = log.NotNull(); - - public bool IsMainBranch(IBranchConfiguration value) - { - if (value.RegularExpression == null) - return false; - - var regex = RegexPatterns.Cache.GetOrAdd(value.RegularExpression); - var branchName = this.branch.Name.WithoutOrigin; - var match = regex.IsMatch(branchName); - this.log.Info($"'{value.RegularExpression}' {(match ? "matches" : "does not match")} '{branchName}'."); - return match; - } - } - - private class BranchOriginFinder(ICommit commit, IRepositoryStore repositoryStore, IGitVersionConfiguration configuration, ILog log) - { - private readonly ICommit commit = commit.NotNull(); - private readonly IGitVersionConfiguration configuration = configuration.NotNull(); - private readonly ILog log = log.NotNull(); - private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); - - public BranchCommit BranchOrigin(IBranch branch) - { - var branchOrigin = FindBranchOrigin(branch); - return branchOrigin == null - ? BranchCommit.Empty - : new(branchOrigin, branch); - } - - private ICommit? FindBranchOrigin(IBranch branch) - { - if (branch.Tip == null) - return null; - - var branchName = branch.Name.Friendly; - var mergeBase = this.repositoryStore.FindMergeBase(branch.Tip, this.commit); - if (mergeBase is not null) - { - this.log.Info($"Found merge base {mergeBase.Sha} for '{branchName}'."); - return mergeBase; - } - - var branchCommit = this.repositoryStore.FindCommitBranchBranchedFrom(branch, this.configuration); - if (branchCommit != BranchCommit.Empty) - { - this.log.Info($"Found parent commit {branchCommit.Commit.Sha} for '{branchName}'."); - return branchCommit.Commit; - } - - this.log.Info($"Found no merge base or parent commit for '{branchName}'."); - return null; - } - } -} diff --git a/src/GitVersion.Core/Core/MergeBaseFinder.cs b/src/GitVersion.Core/Core/MergeBaseFinder.cs index 28ad16fc9a..f4ec183efe 100644 --- a/src/GitVersion.Core/Core/MergeBaseFinder.cs +++ b/src/GitVersion.Core/Core/MergeBaseFinder.cs @@ -5,10 +5,9 @@ namespace GitVersion; -internal class MergeBaseFinder(IRepositoryStore repositoryStore, IGitRepository gitRepository, ILog log) +internal class MergeBaseFinder(IRepositoryStore repositoryStore, ILog log) { private readonly ILog log = log.NotNull(); - private readonly IGitRepository repository = gitRepository.NotNull(); private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); private readonly Dictionary, ICommit> mergeBaseCache = []; @@ -71,7 +70,7 @@ internal class MergeBaseFinder(IRepositoryStore repositoryStore, IGitRepository do { // Now make sure that the merge base is not a forward merge - forwardMerge = GetForwardMerge(commitToFindCommonBase, findMergeBase); + forwardMerge = this.repositoryStore.GetForwardMerge(commitToFindCommonBase, findMergeBase); if (forwardMerge == null) continue; @@ -102,16 +101,4 @@ internal class MergeBaseFinder(IRepositoryStore repositoryStore, IGitRepository return findMergeBase; } - - private ICommit? GetForwardMerge(ICommit? commitToFindCommonBase, ICommit? findMergeBase) - { - var filter = new CommitFilter - { - IncludeReachableFrom = commitToFindCommonBase, - ExcludeReachableFrom = findMergeBase - }; - var commitCollection = this.repository.Commits.QueryBy(filter); - - return commitCollection.FirstOrDefault(c => c.Parents.Contains(findMergeBase)); - } } diff --git a/src/GitVersion.Core/Core/MergeCommitFinder.cs b/src/GitVersion.Core/Core/MergeCommitFinder.cs index 1a5a42e3c8..c38da050af 100644 --- a/src/GitVersion.Core/Core/MergeCommitFinder.cs +++ b/src/GitVersion.Core/Core/MergeCommitFinder.cs @@ -1,3 +1,4 @@ +using GitVersion.Common; using GitVersion.Configuration; using GitVersion.Extensions; using GitVersion.Git; @@ -5,11 +6,11 @@ namespace GitVersion; -internal class MergeCommitFinder(RepositoryStore repositoryStore, IGitVersionConfiguration configuration, IEnumerable excludedBranches, ILog log) +internal class MergeCommitFinder(IRepositoryStore repositoryStore, IGitVersionConfiguration configuration, IEnumerable excludedBranches, ILog log) { private readonly ILog log = log.NotNull(); private readonly IEnumerable branches = repositoryStore.ExcludingBranches(excludedBranches.NotNull()); - private readonly RepositoryStore repositoryStore = repositoryStore.NotNull(); + private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); private readonly IGitVersionConfiguration configuration = configuration.NotNull(); private readonly Dictionary> mergeBaseCommitsCache = []; diff --git a/src/GitVersion.Core/Core/RepositoryStore.cs b/src/GitVersion.Core/Core/RepositoryStore.cs index 6aa023bdfa..d0fe0d9151 100644 --- a/src/GitVersion.Core/Core/RepositoryStore.cs +++ b/src/GitVersion.Core/Core/RepositoryStore.cs @@ -7,25 +7,27 @@ namespace GitVersion; -internal class RepositoryStore : IRepositoryStore +internal class RepositoryStore(ILog log, IGitRepository repository) : IRepositoryStore { - private readonly ILog log; - private readonly IGitRepository repository; + private readonly ILog log = log.NotNull(); + private readonly IGitRepository repository = repository.NotNull(); - private readonly MergeBaseFinder mergeBaseFinder; + public int UncommittedChangesCount => this.repository.UncommittedChangesCount(); - public RepositoryStore(ILog log, IGitRepository repository) - { - this.log = log.NotNull(); - this.repository = repository.NotNull(); - this.mergeBaseFinder = new(this, repository, log); - } + public IBranch Head => this.repository.Head; + + public IBranchCollection Branches => this.repository.Branches; + + public ITagCollection Tags => this.repository.Tags; /// /// Find the merge base of the two branches, i.e. the best common ancestor of the two branches' tips. /// public ICommit? FindMergeBase(IBranch? branch, IBranch? otherBranch) - => this.mergeBaseFinder.FindMergeBaseOf(branch, otherBranch); + { + var mergeBaseFinder = new MergeBaseFinder(this, log); + return mergeBaseFinder.FindMergeBaseOf(branch, otherBranch); + } public ICommit? GetCurrentCommit(IBranch currentBranch, string? commitId, IIgnoreConfiguration ignore) { @@ -90,15 +92,13 @@ public IBranch GetTargetBranch(string? targetBranchName) public IBranch? FindBranch(ReferenceName branchName) => this.repository.Branches.FirstOrDefault(x => x.Name.Equals(branchName)); - public IBranch? FindBranch(string branchName) => this.repository.Branches.FirstOrDefault(x => x.Name.EquivalentTo(branchName)); - public IEnumerable ExcludingBranches(IEnumerable branchesToExclude) => this.repository.Branches.ExcludeBranches(branchesToExclude); public IEnumerable GetBranchesContainingCommit(ICommit commit, IEnumerable? branches = null, bool onlyTrackedBranches = false) { commit.NotNull(); - var branchesContainingCommitFinder = new BranchesContainingCommitFinder(this.repository, this.log); + var branchesContainingCommitFinder = new BranchesContainingCommitFinder(this, this.log); return branchesContainingCommitFinder.GetBranchesContainingCommit(commit, branches, onlyTrackedBranches); } @@ -207,21 +207,6 @@ public IEnumerable FindCommitBranchesBranchedFrom( IBranch branch, IGitVersionConfiguration configuration, params IBranch[] excludedBranches) => FindCommitBranchesBranchedFrom(branch, configuration, (IEnumerable)excludedBranches); - public IEnumerable FindCommitBranchesBranchedFrom( - IBranch branch, IGitVersionConfiguration configuration, IEnumerable excludedBranches) - { - using (this.log.IndentLog($"Finding branches source of '{branch}'")) - { - if (branch.Tip == null) - { - this.log.Warning($"{branch} has no tip."); - return []; - } - - return new MergeCommitFinder(this, configuration, excludedBranches, this.log).FindMergeCommitsFor(branch).ToList(); - } - } - public IReadOnlyList GetCommitLog(ICommit? baseVersionSource, ICommit currentCommit, IIgnoreConfiguration ignore) { currentCommit.NotNull(); @@ -239,6 +224,38 @@ public IReadOnlyList GetCommitLog(ICommit? baseVersionSource, ICommit c return ignore.Filter(commits).ToList(); } + public IReadOnlyList GetCommitsReacheableFromHead(ICommit? headCommit, IIgnoreConfiguration ignore) + { + var filter = new CommitFilter + { + IncludeReachableFrom = headCommit, + SortBy = CommitSortStrategies.Topological | CommitSortStrategies.Reverse + }; + + var commits = this.repository.Commits.QueryBy(filter); + return ignore.Filter(commits).ToList(); + } + + public IReadOnlyList GetCommitsReacheableFrom(IGitObject commit, IBranch branch) + { + var filter = new CommitFilter { IncludeReachableFrom = branch }; + var commitCollection = this.repository.Commits.QueryBy(filter); + + return commitCollection.Where(c => c.Sha == commit.Sha).ToList(); + } + + public ICommit? GetForwardMerge(ICommit? commitToFindCommonBase, ICommit? findMergeBase) + { + var filter = new CommitFilter + { + IncludeReachableFrom = commitToFindCommonBase, + ExcludeReachableFrom = findMergeBase + }; + var commitCollection = this.repository.Commits.QueryBy(filter); + + return commitCollection.FirstOrDefault(c => c.Parents.Contains(findMergeBase)); + } + public bool IsCommitOnBranch(ICommit? baseVersionSource, IBranch branch, ICommit firstMatchingCommit) { var filter = new CommitFilter { IncludeReachableFrom = branch, ExcludeReachableFrom = baseVersionSource, FirstParentOnly = true }; @@ -248,5 +265,20 @@ public bool IsCommitOnBranch(ICommit? baseVersionSource, IBranch branch, ICommit public ICommit? FindMergeBase(ICommit commit, ICommit mainlineTip) => this.repository.FindMergeBase(commit, mainlineTip); - public int GetNumberOfUncommittedChanges() => this.repository.GetNumberOfUncommittedChanges(); + private IBranch? FindBranch(string branchName) => this.repository.Branches.FirstOrDefault(x => x.Name.EquivalentTo(branchName)); + + private IEnumerable FindCommitBranchesBranchedFrom( + IBranch branch, IGitVersionConfiguration configuration, IEnumerable excludedBranches) + { + using (this.log.IndentLog($"Finding branches source of '{branch}'")) + { + if (branch.Tip == null) + { + this.log.Warning($"{branch} has no tip."); + return []; + } + + return new MergeCommitFinder(this, configuration, excludedBranches, this.log).FindMergeCommitsFor(branch).ToList(); + } + } } diff --git a/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs b/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs index 78ec16c8ce..24649b9687 100644 --- a/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs +++ b/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs @@ -1,4 +1,5 @@ using System.Collections.Concurrent; +using GitVersion.Common; using GitVersion.Configuration; using GitVersion.Extensions; using GitVersion.Git; @@ -6,7 +7,7 @@ namespace GitVersion.Core; -internal sealed class TaggedSemanticVersionRepository(ILog log, IGitRepository gitRepository) : ITaggedSemanticVersionRepository +internal sealed class TaggedSemanticVersionRepository(ILog log, IRepositoryStore repositoryStore) : ITaggedSemanticVersionRepository { private readonly ConcurrentDictionary<(IBranch, string, SemanticVersionFormat), IReadOnlyList> taggedSemanticVersionsOfBranchCache = new(); @@ -16,7 +17,7 @@ internal sealed class TaggedSemanticVersionRepository(ILog log, IGitRepository g taggedSemanticVersionsCache = new(); private readonly ILog log = log.NotNull(); - private readonly IGitRepository gitRepository = gitRepository.NotNull(); + private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); public ILookup GetTaggedSemanticVersionsOfBranch( IBranch branch, string? tagPrefix, SemanticVersionFormat format, IIgnoreConfiguration ignore) @@ -28,7 +29,7 @@ public ILookup GetTaggedSemanticVersionsOfBranc var result = taggedSemanticVersionsOfBranchCache.GetOrAdd(new(branch, tagPrefix, format), _ => { isCached = false; - return GetElements().Distinct().OrderByDescending(element => element.Tag.Commit.When).ToList(); + return [.. GetElements().Distinct().OrderByDescending(element => element.Tag.Commit.When)]; }); if (isCached) @@ -123,7 +124,7 @@ IEnumerable GetElements() { this.log.Info($"Getting tagged semantic versions. TagPrefix: {tagPrefix} and Format: {format}"); - foreach (var tag in ignore.Filter(this.gitRepository.Tags)) + foreach (var tag in ignore.Filter(this.repositoryStore.Tags)) { if (SemanticVersion.TryParse(tag.Name.Friendly, tagPrefix, out var semanticVersion, format)) { diff --git a/src/GitVersion.Core/Core/TaggedSemanticVersionService.cs b/src/GitVersion.Core/Core/TaggedSemanticVersionService.cs index 86a99c8849..19efb54071 100644 --- a/src/GitVersion.Core/Core/TaggedSemanticVersionService.cs +++ b/src/GitVersion.Core/Core/TaggedSemanticVersionService.cs @@ -5,12 +5,12 @@ namespace GitVersion.Core; internal sealed class TaggedSemanticVersionService( - ITaggedSemanticVersionRepository Repository, IBranchRepository BranchRepository) + ITaggedSemanticVersionRepository repository, IBranchRepository branchRepository) : ITaggedSemanticVersionService { - private ITaggedSemanticVersionRepository Repository { get; } = Repository.NotNull(); + private readonly ITaggedSemanticVersionRepository repository = repository.NotNull(); - private IBranchRepository BranchRepository { get; } = BranchRepository.NotNull(); + private readonly IBranchRepository branchRepository = branchRepository.NotNull(); public ILookup GetTaggedSemanticVersions( IBranch branch, @@ -99,7 +99,7 @@ private IEnumerable> GetTaggedSema string? label, DateTimeOffset? notOlderThan) { - var semanticVersionsOfBranch = Repository.GetTaggedSemanticVersionsOfBranch( + var semanticVersionsOfBranch = this.repository.GetTaggedSemanticVersionsOfBranch( branch: branch, tagPrefix: tagPrefix, format: format, ignore: ignore ); foreach (var grouping in semanticVersionsOfBranch) @@ -145,7 +145,7 @@ private IEnumerable> GetTaggedSema string? label, DateTimeOffset? notOlderThan) { - var semanticVersionsOfMergeTarget = Repository.GetTaggedSemanticVersionsOfMergeTarget( + var semanticVersionsOfMergeTarget = this.repository.GetTaggedSemanticVersionsOfMergeTarget( branch: branch, tagPrefix: tagPrefix, format: format, @@ -188,7 +188,7 @@ private IEnumerable> GetTaggedSema string? label, params IBranch[] excludeBranches) { - foreach (var releaseBranch in BranchRepository.GetMainBranches(configuration, excludeBranches)) + foreach (var releaseBranch in this.branchRepository.GetMainBranches(configuration, excludeBranches)) { var taggedSemanticVersions = GetTaggedSemanticVersionsOfBranchInternal( branch: releaseBranch, @@ -228,7 +228,7 @@ private IEnumerable> GetTaggedSema string? label, params IBranch[] excludeBranches) { - foreach (var releaseBranch in BranchRepository.GetReleaseBranches(configuration, excludeBranches)) + foreach (var releaseBranch in this.branchRepository.GetReleaseBranches(configuration, excludeBranches)) { var taggedSemanticVersions = GetTaggedSemanticVersionsOfBranchInternal( branch: releaseBranch, diff --git a/src/GitVersion.Core/Git/IGitRepository.cs b/src/GitVersion.Core/Git/IGitRepository.cs index 9f25193b0d..bfad989068 100644 --- a/src/GitVersion.Core/Git/IGitRepository.cs +++ b/src/GitVersion.Core/Git/IGitRepository.cs @@ -6,7 +6,9 @@ public interface IGitRepository : IDisposable string WorkingDirectory { get; } bool IsHeadDetached { get; } bool IsShallow { get; } + IBranch Head { get; } + ITagCollection Tags { get; } IReferenceCollection Refs { get; } IBranchCollection Branches { get; } @@ -14,6 +16,6 @@ public interface IGitRepository : IDisposable IRemoteCollection Remotes { get; } ICommit? FindMergeBase(ICommit commit, ICommit otherCommit); - int GetNumberOfUncommittedChanges(); + int UncommittedChangesCount(); void DiscoverRepository(string? gitDirectory); } diff --git a/src/GitVersion.Core/PublicAPI.Shipped.txt b/src/GitVersion.Core/PublicAPI.Shipped.txt index 143462941c..fc22f7ec1c 100644 --- a/src/GitVersion.Core/PublicAPI.Shipped.txt +++ b/src/GitVersion.Core/PublicAPI.Shipped.txt @@ -22,16 +22,13 @@ GitVersion.BugException.BugException(string? message, System.Exception? innerExc GitVersion.Common.IRepositoryStore GitVersion.Common.IRepositoryStore.ExcludingBranches(System.Collections.Generic.IEnumerable! branchesToExclude) -> System.Collections.Generic.IEnumerable! GitVersion.Common.IRepositoryStore.FindBranch(GitVersion.Git.ReferenceName! branchName) -> GitVersion.Git.IBranch? -GitVersion.Common.IRepositoryStore.FindBranch(string! branchName) -> GitVersion.Git.IBranch? GitVersion.Common.IRepositoryStore.FindCommitBranchBranchedFrom(GitVersion.Git.IBranch? branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.Git.IBranch![]! excludedBranches) -> GitVersion.Git.BranchCommit GitVersion.Common.IRepositoryStore.FindCommitBranchesBranchedFrom(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.Git.IBranch![]! excludedBranches) -> System.Collections.Generic.IEnumerable! -GitVersion.Common.IRepositoryStore.FindCommitBranchesBranchedFrom(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, System.Collections.Generic.IEnumerable! excludedBranches) -> System.Collections.Generic.IEnumerable! GitVersion.Common.IRepositoryStore.FindMergeBase(GitVersion.Git.IBranch? branch, GitVersion.Git.IBranch? otherBranch) -> GitVersion.Git.ICommit? GitVersion.Common.IRepositoryStore.FindMergeBase(GitVersion.Git.ICommit! commit, GitVersion.Git.ICommit! mainlineTip) -> GitVersion.Git.ICommit? GitVersion.Common.IRepositoryStore.GetBranchesContainingCommit(GitVersion.Git.ICommit! commit, System.Collections.Generic.IEnumerable? branches = null, bool onlyTrackedBranches = false) -> System.Collections.Generic.IEnumerable! GitVersion.Common.IRepositoryStore.GetCommitLog(GitVersion.Git.ICommit? baseVersionSource, GitVersion.Git.ICommit! currentCommit, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> System.Collections.Generic.IReadOnlyList! GitVersion.Common.IRepositoryStore.GetCurrentCommit(GitVersion.Git.IBranch! currentBranch, string? commitId, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> GitVersion.Git.ICommit? -GitVersion.Common.IRepositoryStore.GetNumberOfUncommittedChanges() -> int GitVersion.Common.IRepositoryStore.GetSourceBranches(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, params GitVersion.Git.IBranch![]! excludedBranches) -> System.Collections.Generic.IEnumerable! GitVersion.Common.IRepositoryStore.GetSourceBranches(GitVersion.Git.IBranch! branch, GitVersion.Configuration.IGitVersionConfiguration! configuration, System.Collections.Generic.IEnumerable! excludedBranches) -> System.Collections.Generic.IEnumerable! GitVersion.Common.IRepositoryStore.GetTargetBranch(string? targetBranchName) -> GitVersion.Git.IBranch! @@ -219,7 +216,6 @@ GitVersion.Git.IGitRepository.Branches.get -> GitVersion.Git.IBranchCollection! GitVersion.Git.IGitRepository.Commits.get -> GitVersion.Git.ICommitCollection! GitVersion.Git.IGitRepository.DiscoverRepository(string? gitDirectory) -> void GitVersion.Git.IGitRepository.FindMergeBase(GitVersion.Git.ICommit! commit, GitVersion.Git.ICommit! otherCommit) -> GitVersion.Git.ICommit? -GitVersion.Git.IGitRepository.GetNumberOfUncommittedChanges() -> int GitVersion.Git.IGitRepository.Head.get -> GitVersion.Git.IBranch! GitVersion.Git.IGitRepository.IsHeadDetached.get -> bool GitVersion.Git.IGitRepository.IsShallow.get -> bool diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 439fac159f..0d2367b54f 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -1,6 +1,14 @@ #nullable enable +GitVersion.Common.IRepositoryStore.Branches.get -> GitVersion.Git.IBranchCollection! +GitVersion.Common.IRepositoryStore.GetCommitsReacheableFrom(GitVersion.Git.IGitObject! commit, GitVersion.Git.IBranch! branch) -> System.Collections.Generic.IReadOnlyList! +GitVersion.Common.IRepositoryStore.GetCommitsReacheableFromHead(GitVersion.Git.ICommit? headCommit, GitVersion.Configuration.IIgnoreConfiguration! ignore) -> System.Collections.Generic.IReadOnlyList! +GitVersion.Common.IRepositoryStore.GetForwardMerge(GitVersion.Git.ICommit? commitToFindCommonBase, GitVersion.Git.ICommit? findMergeBase) -> GitVersion.Git.ICommit? +GitVersion.Common.IRepositoryStore.Head.get -> GitVersion.Git.IBranch! +GitVersion.Common.IRepositoryStore.Tags.get -> GitVersion.Git.ITagCollection! +GitVersion.Common.IRepositoryStore.UncommittedChangesCount.get -> int GitVersion.Configuration.EffectiveConfiguration.VersionInBranchPattern.get -> string? GitVersion.Configuration.IGitVersionConfiguration.TagPrefixPattern.get -> string? +GitVersion.Git.IGitRepository.UncommittedChangesCount() -> int static GitVersion.Configuration.ReferenceNameExtensions.TryGetSemanticVersion(this GitVersion.Git.ReferenceName! source, out (GitVersion.SemanticVersion! Value, string? Name) result, GitVersion.Configuration.IGitVersionConfiguration! configuration) -> bool static GitVersion.Extensions.DictionaryExtensions.GetOrAdd(this System.Collections.Concurrent.ConcurrentDictionary! dict, string! pattern) -> System.Text.RegularExpressions.Regex! static GitVersion.Extensions.DictionaryExtensions.GetOrAdd(this System.Collections.Generic.Dictionary! dict, TKey key, System.Func! getValue) -> TValue diff --git a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs index 429071f0bd..f2cd6919a1 100644 --- a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs +++ b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs @@ -1,4 +1,5 @@ using System.Security.Cryptography; +using GitVersion.Common; using GitVersion.Configuration; using GitVersion.Extensions; using GitVersion.Git; @@ -14,7 +15,7 @@ internal class GitVersionCacheKeyFactory( IOptions options, IConfigurationFileLocator configFileLocator, IConfigurationSerializer configurationSerializer, - IGitRepository gitRepository, + IRepositoryStore repositoryStore, IGitRepositoryInfo repositoryInfo) : IGitVersionCacheKeyFactory { @@ -23,7 +24,7 @@ internal class GitVersionCacheKeyFactory( private readonly IOptions options = options.NotNull(); private readonly IConfigurationFileLocator configFileLocator = configFileLocator.NotNull(); private readonly IConfigurationSerializer configurationSerializer = configurationSerializer.NotNull(); - private readonly IGitRepository gitRepository = gitRepository.NotNull(); + private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); private readonly IGitRepositoryInfo repositoryInfo = repositoryInfo.NotNull(); public GitVersionCacheKey Create(IReadOnlyDictionary? overrideConfiguration) @@ -44,7 +45,7 @@ private string GetGitSystemHash() // traverse the directory and get a list of files, use that for GetHash var contents = CalculateDirectoryContents(PathHelper.Combine(dotGitDirectory, "refs")); - return GetHash(contents.ToArray()); + return GetHash([.. contents]); } // based on https://msdn.microsoft.com/en-us/library/bb513869.aspx @@ -139,7 +140,7 @@ private List CalculateDirectoryContents(string root) private string GetRepositorySnapshotHash() { - var head = this.gitRepository.Head; + var head = this.repositoryStore.Head; if (head.Tip == null) { return head.Name.Canonical; diff --git a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs index 26ebccda50..41f75a8b34 100644 --- a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs @@ -1,4 +1,5 @@ using System.Text.RegularExpressions; +using GitVersion.Common; using GitVersion.Configuration; using GitVersion.Core; using GitVersion.Extensions; @@ -6,14 +7,14 @@ namespace GitVersion.VersionCalculation; -internal class IncrementStrategyFinder(IGitRepository repository, ITaggedSemanticVersionRepository taggedSemanticVersionRepository) +internal class IncrementStrategyFinder(IRepositoryStore repositoryStore, ITaggedSemanticVersionRepository taggedSemanticVersionRepository) : IIncrementStrategyFinder { private readonly Dictionary commitIncrementCache = []; private readonly Dictionary> headCommitsMapCache = []; private readonly Dictionary headCommitsCache = []; - private readonly IGitRepository repository = repository.NotNull(); + private readonly IRepositoryStore repositoryStore = repositoryStore.NotNull(); private readonly ITaggedSemanticVersionRepository taggedSemanticVersionRepository = taggedSemanticVersionRepository.NotNull(); public VersionField DetermineIncrementedField( @@ -166,7 +167,7 @@ private Dictionary GetHeadCommitsMap(ICommit? headCommit, IIgnoreCo /// private ICommit[] GetHeadCommits(ICommit? headCommit, IIgnoreConfiguration ignore) => this.headCommitsCache.GetOrAdd(headCommit?.Sha ?? "NULL", () => - GetCommitsReacheableFromHead(headCommit, ignore).ToArray()); + [.. this.repositoryStore.GetCommitsReacheableFromHead(headCommit, ignore)]); private VersionField? GetIncrementFromCommit(ICommit commit, Regex majorRegex, Regex minorRegex, Regex patchRegex, Regex noBumpRegex) => this.commitIncrementCache.GetOrAdd(commit.Sha, () => @@ -181,18 +182,6 @@ private ICommit[] GetHeadCommits(ICommit? headCommit, IIgnoreConfiguration ignor return null; } - private IEnumerable GetCommitsReacheableFromHead(ICommit? headCommit, IIgnoreConfiguration ignore) - { - var filter = new CommitFilter - { - IncludeReachableFrom = headCommit, - SortBy = CommitSortStrategies.Topological | CommitSortStrategies.Reverse - }; - - var commits = repository.Commits.QueryBy(filter); - return ignore.Filter(commits); - } - public IEnumerable GetMergedCommits(ICommit mergeCommit, int index, IIgnoreConfiguration ignore) { mergeCommit.NotNull(); @@ -202,11 +191,11 @@ public IEnumerable GetMergedCommits(ICommit mergeCommit, int index, IIg throw new ArgumentException("The parameter is not a merge commit.", nameof(mergeCommit)); } - ICommit baseCommit = mergeCommit.Parents.First(); + ICommit baseCommit = mergeCommit.Parents[0]; ICommit mergedCommit = GetMergedHead(mergeCommit); if (index == 0) (mergedCommit, baseCommit) = (baseCommit, mergedCommit); - ICommit findMergeBase = this.repository.FindMergeBase(baseCommit, mergedCommit) + ICommit findMergeBase = this.repositoryStore.FindMergeBase(baseCommit, mergedCommit) ?? throw new InvalidOperationException("Cannot find the base commit of merged branch."); return GetIntermediateCommits(findMergeBase, mergedCommit, ignore); diff --git a/src/GitVersion.LibGit2Sharp/Git/BranchCollection.cs b/src/GitVersion.LibGit2Sharp/Git/BranchCollection.cs index b543161bd8..447ca4fbe8 100644 --- a/src/GitVersion.LibGit2Sharp/Git/BranchCollection.cs +++ b/src/GitVersion.LibGit2Sharp/Git/BranchCollection.cs @@ -29,19 +29,20 @@ public IEnumerable ExcludeBranches(IEnumerable branchesToExclu { branchesToExclude = branchesToExclude.NotNull(); + return this.Where(BranchIsNotExcluded); + bool BranchIsNotExcluded(IBranch branch) => branchesToExclude.All(branchToExclude => !branch.Equals(branchToExclude)); - - return this.Where(BranchIsNotExcluded); } public void UpdateTrackedBranch(IBranch branch, string remoteTrackingReferenceName) { var branchToUpdate = (Branch)branch.NotNull(); + this.innerCollection.Update(branchToUpdate, Updater); + return; + void Updater(BranchUpdater branchUpdater) => branchUpdater.TrackedBranch = remoteTrackingReferenceName; - - this.innerCollection.Update(branchToUpdate, Updater); } } diff --git a/src/GitVersion.LibGit2Sharp/Git/CommitCollection.cs b/src/GitVersion.LibGit2Sharp/Git/CommitCollection.cs index 08ebb91393..e6dcee288c 100644 --- a/src/GitVersion.LibGit2Sharp/Git/CommitCollection.cs +++ b/src/GitVersion.LibGit2Sharp/Git/CommitCollection.cs @@ -19,6 +19,12 @@ public IEnumerable GetCommitsPriorTo(DateTimeOffset olderThan) public IEnumerable QueryBy(CommitFilter commitFilter) { + var includeReachableFrom = GetReacheableFrom(commitFilter.IncludeReachableFrom); + var excludeReachableFrom = GetReacheableFrom(commitFilter.ExcludeReachableFrom); + var filter = new LibGit2Sharp.CommitFilter { IncludeReachableFrom = includeReachableFrom, ExcludeReachableFrom = excludeReachableFrom, FirstParentOnly = commitFilter.FirstParentOnly, SortBy = (LibGit2Sharp.CommitSortStrategies)commitFilter.SortBy }; + var commitLog = ((IQueryableCommitLog)this.innerCollection).QueryBy(filter); + return new CommitCollection(commitLog); + static object? GetReacheableFrom(object? item) => item switch { @@ -26,11 +32,5 @@ public IEnumerable QueryBy(CommitFilter commitFilter) Branch b => (LibGit2Sharp.Branch)b, _ => null }; - - var includeReachableFrom = GetReacheableFrom(commitFilter.IncludeReachableFrom); - var excludeReachableFrom = GetReacheableFrom(commitFilter.ExcludeReachableFrom); - var filter = new LibGit2Sharp.CommitFilter { IncludeReachableFrom = includeReachableFrom, ExcludeReachableFrom = excludeReachableFrom, FirstParentOnly = commitFilter.FirstParentOnly, SortBy = (LibGit2Sharp.CommitSortStrategies)commitFilter.SortBy }; - var commitLog = ((IQueryableCommitLog)this.innerCollection).QueryBy(filter); - return new CommitCollection(commitLog); } } diff --git a/src/GitVersion.LibGit2Sharp/Git/GitRepository.cs b/src/GitVersion.LibGit2Sharp/Git/GitRepository.cs index 683a6571ee..aea0217adc 100644 --- a/src/GitVersion.LibGit2Sharp/Git/GitRepository.cs +++ b/src/GitVersion.LibGit2Sharp/Git/GitRepository.cs @@ -22,6 +22,7 @@ private IRepository RepositoryInstance public bool IsHeadDetached => RepositoryInstance.Info.IsHeadDetached; public bool IsShallow => RepositoryInstance.Info.IsShallow; public IBranch Head => new Branch(RepositoryInstance.Head); + public ITagCollection Tags => new TagCollection(RepositoryInstance.Tags); public IReferenceCollection Refs => new ReferenceCollection(RepositoryInstance.Refs); public IBranchCollection Branches => new BranchCollection(RepositoryInstance.Branches); @@ -52,10 +53,10 @@ public void DiscoverRepository(string? gitDirectory) }); } - public int GetNumberOfUncommittedChanges() + public int UncommittedChangesCount() { var retryAction = new RetryAction(); - return retryAction.Execute(GetNumberOfUncommittedChangesInternal); + return retryAction.Execute(GetUncommittedChangesCountInternal); } public void Dispose() @@ -63,7 +64,7 @@ public void Dispose() if (this.repositoryLazy is { IsValueCreated: true }) RepositoryInstance.Dispose(); } - private int GetNumberOfUncommittedChangesInternal() + private int GetUncommittedChangesCountInternal() { // check if we have a branch tip at all to behave properly with empty repos // => return that we have actually un-committed changes because we are apparently diff --git a/src/GitVersion.LibGit2Sharp/Git/GitRepository.extended.cs b/src/GitVersion.LibGit2Sharp/Git/GitRepository.mutating.cs similarity index 100% rename from src/GitVersion.LibGit2Sharp/Git/GitRepository.extended.cs rename to src/GitVersion.LibGit2Sharp/Git/GitRepository.mutating.cs From ec258135c3402d8178f45ccd3db538c9e954e391 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 9 Oct 2024 10:32:49 +0200 Subject: [PATCH 238/544] attempt to fix performance issues with a cache --- src/GitVersion.Core/Core/RepositoryStore.cs | 2 +- .../Git/BranchCollection.cs | 13 +++++++----- .../Git/CommitCollection.cs | 17 +++++++++++++--- .../Git/RefSpecCollection.cs | 9 ++++++--- .../Git/ReferenceCollection.cs | 16 +++++++++++---- .../Git/RemoteCollection.cs | 20 ++++++++++++++----- .../Git/TagCollection.cs | 9 ++++++--- 7 files changed, 62 insertions(+), 24 deletions(-) diff --git a/src/GitVersion.Core/Core/RepositoryStore.cs b/src/GitVersion.Core/Core/RepositoryStore.cs index d0fe0d9151..aaa1856c15 100644 --- a/src/GitVersion.Core/Core/RepositoryStore.cs +++ b/src/GitVersion.Core/Core/RepositoryStore.cs @@ -219,7 +219,7 @@ public IReadOnlyList GetCommitLog(ICommit? baseVersionSource, ICommit c SortBy = CommitSortStrategies.Topological | CommitSortStrategies.Time }; - var commits = this.repository.Commits.QueryBy(filter).ToArray(); + var commits = this.repository.Commits.QueryBy(filter); return ignore.Filter(commits).ToList(); } diff --git a/src/GitVersion.LibGit2Sharp/Git/BranchCollection.cs b/src/GitVersion.LibGit2Sharp/Git/BranchCollection.cs index 447ca4fbe8..fe0da131c0 100644 --- a/src/GitVersion.LibGit2Sharp/Git/BranchCollection.cs +++ b/src/GitVersion.LibGit2Sharp/Git/BranchCollection.cs @@ -6,12 +6,16 @@ namespace GitVersion.Git; internal sealed class BranchCollection : IBranchCollection { private readonly LibGit2Sharp.BranchCollection innerCollection; + private readonly Lazy> branches; internal BranchCollection(LibGit2Sharp.BranchCollection collection) - => this.innerCollection = collection.NotNull(); + { + this.innerCollection = collection.NotNull(); + this.branches = new Lazy>(() => this.innerCollection.Select(branch => new Branch(branch)).ToArray()); + } public IEnumerator GetEnumerator() - => this.innerCollection.Select(branch => new Branch(branch)).GetEnumerator(); + => this.branches.Value.GetEnumerator(); IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); @@ -27,12 +31,11 @@ public IBranch? this[string name] public IEnumerable ExcludeBranches(IEnumerable branchesToExclude) { - branchesToExclude = branchesToExclude.NotNull(); + var toExclude = branchesToExclude as IBranch[] ?? branchesToExclude.ToArray(); return this.Where(BranchIsNotExcluded); - bool BranchIsNotExcluded(IBranch branch) - => branchesToExclude.All(branchToExclude => !branch.Equals(branchToExclude)); + bool BranchIsNotExcluded(IBranch branch) => toExclude.All(branchToExclude => !branch.Equals(branchToExclude)); } public void UpdateTrackedBranch(IBranch branch, string remoteTrackingReferenceName) diff --git a/src/GitVersion.LibGit2Sharp/Git/CommitCollection.cs b/src/GitVersion.LibGit2Sharp/Git/CommitCollection.cs index e6dcee288c..9bc0c89227 100644 --- a/src/GitVersion.LibGit2Sharp/Git/CommitCollection.cs +++ b/src/GitVersion.LibGit2Sharp/Git/CommitCollection.cs @@ -6,11 +6,16 @@ namespace GitVersion.Git; internal sealed class CommitCollection : ICommitCollection { private readonly ICommitLog innerCollection; + private readonly Lazy> commits; - internal CommitCollection(ICommitLog collection) => this.innerCollection = collection.NotNull(); + internal CommitCollection(ICommitLog collection) + { + this.innerCollection = collection.NotNull(); + this.commits = new Lazy>(() => this.innerCollection.Select(commit => new Commit(commit)).ToArray()); + } public IEnumerator GetEnumerator() - => this.innerCollection.Select(commit => new Commit(commit)).GetEnumerator(); + => this.commits.Value.GetEnumerator(); IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); @@ -21,7 +26,13 @@ public IEnumerable QueryBy(CommitFilter commitFilter) { var includeReachableFrom = GetReacheableFrom(commitFilter.IncludeReachableFrom); var excludeReachableFrom = GetReacheableFrom(commitFilter.ExcludeReachableFrom); - var filter = new LibGit2Sharp.CommitFilter { IncludeReachableFrom = includeReachableFrom, ExcludeReachableFrom = excludeReachableFrom, FirstParentOnly = commitFilter.FirstParentOnly, SortBy = (LibGit2Sharp.CommitSortStrategies)commitFilter.SortBy }; + var filter = new LibGit2Sharp.CommitFilter + { + IncludeReachableFrom = includeReachableFrom, + ExcludeReachableFrom = excludeReachableFrom, + FirstParentOnly = commitFilter.FirstParentOnly, + SortBy = (LibGit2Sharp.CommitSortStrategies)commitFilter.SortBy + }; var commitLog = ((IQueryableCommitLog)this.innerCollection).QueryBy(filter); return new CommitCollection(commitLog); diff --git a/src/GitVersion.LibGit2Sharp/Git/RefSpecCollection.cs b/src/GitVersion.LibGit2Sharp/Git/RefSpecCollection.cs index a465fcbd5d..3d1ef7d004 100644 --- a/src/GitVersion.LibGit2Sharp/Git/RefSpecCollection.cs +++ b/src/GitVersion.LibGit2Sharp/Git/RefSpecCollection.cs @@ -4,11 +4,14 @@ namespace GitVersion.Git; internal sealed class RefSpecCollection : IRefSpecCollection { - private readonly LibGit2Sharp.RefSpecCollection innerCollection; + private readonly Lazy> refSpecs; internal RefSpecCollection(LibGit2Sharp.RefSpecCollection collection) - => this.innerCollection = collection.NotNull(); + { + collection = collection.NotNull(); + this.refSpecs = new Lazy>(() => collection.Select(tag => new RefSpec(tag)).ToArray()); + } - public IEnumerator GetEnumerator() => this.innerCollection.Select(tag => new RefSpec(tag)).GetEnumerator(); + public IEnumerator GetEnumerator() => this.refSpecs.Value.GetEnumerator(); IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); } diff --git a/src/GitVersion.LibGit2Sharp/Git/ReferenceCollection.cs b/src/GitVersion.LibGit2Sharp/Git/ReferenceCollection.cs index 1159dfe87a..a230af724c 100644 --- a/src/GitVersion.LibGit2Sharp/Git/ReferenceCollection.cs +++ b/src/GitVersion.LibGit2Sharp/Git/ReferenceCollection.cs @@ -5,15 +5,23 @@ namespace GitVersion.Git; internal sealed class ReferenceCollection : IReferenceCollection { private readonly LibGit2Sharp.ReferenceCollection innerCollection; + private IReadOnlyCollection? references; - internal ReferenceCollection(LibGit2Sharp.ReferenceCollection collection) - => this.innerCollection = collection.NotNull(); + internal ReferenceCollection(LibGit2Sharp.ReferenceCollection collection) => this.innerCollection = collection.NotNull(); - public IEnumerator GetEnumerator() => this.innerCollection.Select(reference => new Reference(reference)).GetEnumerator(); + public IEnumerator GetEnumerator() + { + this.references ??= this.innerCollection.Select(reference => new Reference(reference)).ToArray(); + return this.references.GetEnumerator(); + } public void Add(string name, string canonicalRefNameOrObject, bool allowOverwrite = false) => this.innerCollection.Add(name, canonicalRefNameOrObject, allowOverwrite); - public void UpdateTarget(IReference directRef, IObjectId targetId) => RepositoryExtensions.RunSafe(() => this.innerCollection.UpdateTarget((Reference)directRef, (ObjectId)targetId)); + public void UpdateTarget(IReference directRef, IObjectId targetId) + { + RepositoryExtensions.RunSafe(() => this.innerCollection.UpdateTarget((Reference)directRef, (ObjectId)targetId)); + this.references = null; + } IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); diff --git a/src/GitVersion.LibGit2Sharp/Git/RemoteCollection.cs b/src/GitVersion.LibGit2Sharp/Git/RemoteCollection.cs index 5fc8433621..9ecea312db 100644 --- a/src/GitVersion.LibGit2Sharp/Git/RemoteCollection.cs +++ b/src/GitVersion.LibGit2Sharp/Git/RemoteCollection.cs @@ -5,12 +5,15 @@ namespace GitVersion.Git; internal sealed class RemoteCollection : IRemoteCollection { private readonly LibGit2Sharp.RemoteCollection innerCollection; + private IReadOnlyCollection? remotes; - internal RemoteCollection(LibGit2Sharp.RemoteCollection collection) - => this.innerCollection = collection.NotNull(); + internal RemoteCollection(LibGit2Sharp.RemoteCollection collection) => this.innerCollection = collection.NotNull(); public IEnumerator GetEnumerator() - => this.innerCollection.Select(reference => new Remote(reference)).GetEnumerator(); + { + this.remotes ??= this.innerCollection.Select(reference => new Remote(reference)).ToArray(); + return this.remotes.GetEnumerator(); + } IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); @@ -23,8 +26,15 @@ public IRemote? this[string name] } } - public void Remove(string remoteName) => this.innerCollection.Remove(remoteName); + public void Remove(string remoteName) + { + this.innerCollection.Remove(remoteName); + this.remotes = null; + } public void Update(string remoteName, string refSpec) - => this.innerCollection.Update(remoteName, r => r.FetchRefSpecs.Add(refSpec)); + { + this.innerCollection.Update(remoteName, r => r.FetchRefSpecs.Add(refSpec)); + this.remotes = null; + } } diff --git a/src/GitVersion.LibGit2Sharp/Git/TagCollection.cs b/src/GitVersion.LibGit2Sharp/Git/TagCollection.cs index 65f5637cda..a5ad79d237 100644 --- a/src/GitVersion.LibGit2Sharp/Git/TagCollection.cs +++ b/src/GitVersion.LibGit2Sharp/Git/TagCollection.cs @@ -4,13 +4,16 @@ namespace GitVersion.Git; internal sealed class TagCollection : ITagCollection { - private readonly LibGit2Sharp.TagCollection innerCollection; + private readonly Lazy> tags; internal TagCollection(LibGit2Sharp.TagCollection collection) - => this.innerCollection = collection.NotNull(); + { + collection = collection.NotNull(); + this.tags = new Lazy>(() => collection.Select(tag => new Tag(tag)).ToArray()); + } public IEnumerator GetEnumerator() - => this.innerCollection.Select(tag => new Tag(tag)).GetEnumerator(); + => this.tags.Value.GetEnumerator(); IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); } From 1200ae1ba4f20f30f0fe961b0c856e95da93266e Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 15 Oct 2024 10:53:57 +0200 Subject: [PATCH 239/544] code cleanup --- .../IgnoreConfigurationExtensions.cs | 16 ++++---------- src/GitVersion.Core/Core/RepositoryStore.cs | 21 ++++++++++--------- .../Core/TaggedSemanticVersionRepository.cs | 6 +++--- .../MainlineVersionStrategy.cs | 2 +- .../MergeMessageVersionStrategy.cs | 2 +- 5 files changed, 20 insertions(+), 27 deletions(-) diff --git a/src/GitVersion.Core/Configuration/IgnoreConfigurationExtensions.cs b/src/GitVersion.Core/Configuration/IgnoreConfigurationExtensions.cs index d99c33db76..eeaf3a0ded 100644 --- a/src/GitVersion.Core/Configuration/IgnoreConfigurationExtensions.cs +++ b/src/GitVersion.Core/Configuration/IgnoreConfigurationExtensions.cs @@ -5,28 +5,20 @@ namespace GitVersion.Configuration; internal static class IgnoreConfigurationExtensions { - public static IEnumerable Filter(this IIgnoreConfiguration ignore, IEnumerable source) + public static IEnumerable Filter(this IIgnoreConfiguration ignore, ITag[] source) { ignore.NotNull(); source.NotNull(); - if (!ignore.IsEmpty) - { - return source.Where(element => ShouldBeIgnored(element.Commit, ignore)); - } - return source; + return !ignore.IsEmpty ? source.Where(element => ShouldBeIgnored(element.Commit, ignore)) : source; } - public static IEnumerable Filter(this IIgnoreConfiguration ignore, IEnumerable source) + public static IEnumerable Filter(this IIgnoreConfiguration ignore, ICommit[] source) { ignore.NotNull(); source.NotNull(); - if (!ignore.IsEmpty) - { - return source.Where(element => ShouldBeIgnored(element, ignore)); - } - return source; + return !ignore.IsEmpty ? source.Where(element => ShouldBeIgnored(element, ignore)) : source; } private static bool ShouldBeIgnored(ICommit commit, IIgnoreConfiguration ignore) diff --git a/src/GitVersion.Core/Core/RepositoryStore.cs b/src/GitVersion.Core/Core/RepositoryStore.cs index aaa1856c15..bc8554f32e 100644 --- a/src/GitVersion.Core/Core/RepositoryStore.cs +++ b/src/GitVersion.Core/Core/RepositoryStore.cs @@ -60,7 +60,7 @@ internal class RepositoryStore(ILog log, IGitRepository repository) : IRepositor this.log.Info("Using latest commit on specified branch"); } - commits = ignore.Filter(commits); + commits = ignore.Filter(commits.ToArray()); return commits.FirstOrDefault(); } @@ -219,8 +219,7 @@ public IReadOnlyList GetCommitLog(ICommit? baseVersionSource, ICommit c SortBy = CommitSortStrategies.Topological | CommitSortStrategies.Time }; - var commits = this.repository.Commits.QueryBy(filter); - + var commits = FilterCommits(filter).ToArray(); return ignore.Filter(commits).ToList(); } @@ -232,16 +231,16 @@ public IReadOnlyList GetCommitsReacheableFromHead(ICommit? headCommit, SortBy = CommitSortStrategies.Topological | CommitSortStrategies.Reverse }; - var commits = this.repository.Commits.QueryBy(filter); + var commits = FilterCommits(filter).ToArray(); return ignore.Filter(commits).ToList(); } public IReadOnlyList GetCommitsReacheableFrom(IGitObject commit, IBranch branch) { var filter = new CommitFilter { IncludeReachableFrom = branch }; - var commitCollection = this.repository.Commits.QueryBy(filter); - return commitCollection.Where(c => c.Sha == commit.Sha).ToList(); + var commits = FilterCommits(filter); + return commits.Where(c => c.Sha == commit.Sha).ToList(); } public ICommit? GetForwardMerge(ICommit? commitToFindCommonBase, ICommit? findMergeBase) @@ -251,18 +250,20 @@ public IReadOnlyList GetCommitsReacheableFrom(IGitObject commit, IBranc IncludeReachableFrom = commitToFindCommonBase, ExcludeReachableFrom = findMergeBase }; - var commitCollection = this.repository.Commits.QueryBy(filter); - return commitCollection.FirstOrDefault(c => c.Parents.Contains(findMergeBase)); + var commits = FilterCommits(filter); + return commits.FirstOrDefault(c => c.Parents.Contains(findMergeBase)); } public bool IsCommitOnBranch(ICommit? baseVersionSource, IBranch branch, ICommit firstMatchingCommit) { var filter = new CommitFilter { IncludeReachableFrom = branch, ExcludeReachableFrom = baseVersionSource, FirstParentOnly = true }; - var commitCollection = this.repository.Commits.QueryBy(filter); - return commitCollection.Contains(firstMatchingCommit); + var commits = FilterCommits(filter); + return commits.Contains(firstMatchingCommit); } + private IEnumerable FilterCommits(CommitFilter filter) => this.repository.Commits.QueryBy(filter); + public ICommit? FindMergeBase(ICommit commit, ICommit mainlineTip) => this.repository.FindMergeBase(commit, mainlineTip); private IBranch? FindBranch(string branchName) => this.repository.Branches.FirstOrDefault(x => x.Name.EquivalentTo(branchName)); diff --git a/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs b/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs index 24649b9687..f6f0de0459 100644 --- a/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs +++ b/src/GitVersion.Core/Core/TaggedSemanticVersionRepository.cs @@ -49,7 +49,7 @@ IEnumerable GetElements() { var semanticVersions = GetTaggedSemanticVersions(tagPrefix, format, ignore); - foreach (var commit in ignore.Filter(branch.Commits)) + foreach (var commit in ignore.Filter(branch.Commits.ToArray())) { foreach (var semanticVersion in semanticVersions[commit]) { @@ -88,7 +88,7 @@ public ILookup GetTaggedSemanticVersionsOfMerge using (this.log.IndentLog($"Getting tagged semantic versions by track merge target '{branch.Name.Canonical}'. " + $"TagPrefix: {tagPrefix} and Format: {format}")) { - var shaHashSet = new HashSet(ignore.Filter(branch.Commits).Select(element => element.Id.Sha)); + var shaHashSet = new HashSet(ignore.Filter(branch.Commits.ToArray()).Select(element => element.Id.Sha)); foreach (var semanticVersion in GetTaggedSemanticVersions(tagPrefix, format, ignore).SelectMany(v => v)) { @@ -124,7 +124,7 @@ IEnumerable GetElements() { this.log.Info($"Getting tagged semantic versions. TagPrefix: {tagPrefix} and Format: {format}"); - foreach (var tag in ignore.Filter(this.repositoryStore.Tags)) + foreach (var tag in ignore.Filter(this.repositoryStore.Tags.ToArray())) { if (SemanticVersion.TryParse(tag.Name.Friendly, tagPrefix, out var semanticVersion, format)) { diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs index 2dd181c896..1e0dd74209 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs @@ -82,7 +82,7 @@ public IEnumerable GetBaseVersions(EffectiveBranchConfiguration con configuration: branchConfiguration ); - var commitsInReverseOrder = Context.Configuration.Ignore.Filter(Context.CurrentBranchCommits); + var commitsInReverseOrder = Context.Configuration.Ignore.Filter(Context.CurrentBranchCommits.ToArray()); TaggedSemanticVersions taggedSemanticVersion = TaggedSemanticVersions.OfBranch; if (branchConfiguration.TrackMergeTarget == true) taggedSemanticVersion |= TaggedSemanticVersions.OfMergeTargets; diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs index 7dfe751dc3..2ffeaf3d9e 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MergeMessageVersionStrategy.cs @@ -33,7 +33,7 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur || !configuration.Value.TrackMergeMessage) yield break; - foreach (var commit in configuration.Value.Ignore.Filter(Context.CurrentBranchCommits)) + foreach (var commit in configuration.Value.Ignore.Filter(Context.CurrentBranchCommits.ToArray())) { if (MergeMessage.TryParse(commit, Context.Configuration, out var mergeMessage) && mergeMessage.Version is not null From c99ec59c823c13d446247a5537cd93d55e523138 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 15 Oct 2024 15:37:05 +0200 Subject: [PATCH 240/544] fixed remark-lint issues there were 2 obsolete plugins that needed to be removed --- .github/PULL_REQUEST_TEMPLATE.md | 23 +++- .remarkrc.yaml | 2 - BREAKING_CHANGES.md | 53 ++++++-- CONTRIBUTING.md | 12 +- README.md | 113 ++++++++++++------ SECURITY.md | 4 +- build/CI.sln | 7 ++ build/nuspec/README.md | 54 ++++++--- .../branching-strategies/gitflow/examples.md | 25 ++-- .../branching-strategies/gitflow/index.md | 22 ++-- .../githubflow/examples.md | 7 +- .../learn/branching-strategies/overview.md | 12 +- docs/input/docs/learn/credits.md | 15 +++ docs/input/docs/learn/faq.md | 5 + docs/input/docs/learn/how-it-works.md | 38 +++--- docs/input/docs/learn/why.md | 4 +- .../docs/reference/build-servers/appveyor.md | 2 +- .../reference/build-servers/azure-devops.md | 1 + .../docs/reference/build-servers/buildkite.md | 3 + .../docs/reference/build-servers/continua.md | 8 +- .../reference/build-servers/github-actions.md | 1 + .../docs/reference/build-servers/gitlab.md | 27 +++-- .../docs/reference/build-servers/jenkins.md | 5 +- .../docs/reference/build-servers/myget.md | 14 +-- .../reference/build-servers/octopus-deploy.md | 7 +- .../docs/reference/build-servers/teamcity.md | 25 ++-- docs/input/docs/reference/configuration.md | 67 +++++++---- .../mdsource/configuration.source.md | 55 +++++---- .../reference/modes/continuous-delivery.md | 2 + .../reference/modes/continuous-deployment.md | 1 + .../docs/reference/modes/manual-deployment.md | 6 +- docs/input/docs/reference/requirements.md | 3 + .../docs/reference/version-increments.md | 8 +- docs/input/docs/reference/version-sources.md | 4 +- docs/input/docs/usage/ci.md | 2 + docs/input/docs/usage/cli/assembly-patch.md | 9 +- docs/input/docs/usage/cli/installation.md | 5 + docs/input/docs/usage/msbuild.md | 2 +- docs/readme.md | 3 + package-lock.json | 28 ----- package.json | 2 - 41 files changed, 428 insertions(+), 258 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 35967a1a21..4f351aa9c3 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,30 +1,43 @@ ## Description + ## Related Issue + + + + ## Motivation and Context + ## How Has This Been Tested? + + + ## Screenshots (if appropriate): + + ## Checklist: + + -- [ ] My code follows the code style of this project. -- [ ] My change requires a change to the documentation. -- [ ] I have updated the documentation accordingly. -- [ ] I have added tests to cover my changes. -- [ ] All new and existing tests passed. +* \[ ] My code follows the code style of this project. +* \[ ] My change requires a change to the documentation. +* \[ ] I have updated the documentation accordingly. +* \[ ] I have added tests to cover my changes. +* \[ ] All new and existing tests passed. diff --git a/.remarkrc.yaml b/.remarkrc.yaml index cf4ada6d5f..381dd0220c 100644 --- a/.remarkrc.yaml +++ b/.remarkrc.yaml @@ -21,7 +21,6 @@ plugins: - remark-lint-list-item-bullet-indent - remark-lint-list-item-content-indent - remark-lint-maximum-heading-length: 120 - - remark-lint-no-auto-link-without-protocol - remark-lint-no-blockquote-without-marker - remark-lint-no-consecutive-blank-lines - remark-lint-no-duplicate-definitions @@ -36,7 +35,6 @@ plugins: - remark-lint-no-heading-content-indent - remark-lint-no-heading-indent - remark-lint-no-heading-like-paragraph - - remark-lint-no-inline-padding - remark-lint-no-literal-urls - remark-lint-no-multiple-toplevel-headings - remark-lint-no-reference-like-url diff --git a/BREAKING_CHANGES.md b/BREAKING_CHANGES.md index ec20701053..8d5b4408b7 100644 --- a/BREAKING_CHANGES.md +++ b/BREAKING_CHANGES.md @@ -11,14 +11,19 @@ ### Configuration changes: * The configuration properties `continuous-delivery-fallback-tag`, `tag-number-pattern`, and `tag` were renamed to `continuous-delivery-fallback-label`, `label-number-pattern`, and `label` respectively. `tag-pre-release-weight` and `tag-prefix` remained as they were as they are referring to a Git tag. + * When using a commit message that matches **both** `*-version-bump-message` and `no-bump-message`, there is no increment for that commit. In other words, `no-bump-message` now takes precedence over `*-version-bump-message`. + * The fallback version strategy now returns `0.0.0` and is flagged with `ShouldIncrement` equal to `true`. This yields the version `0.1.0` on the `develop` branch (`IncrementStrategy.Minor` by default) and `0.0.1` on the `main` branch (`IncremetnStrategy.Patch` by default). + * The current branch (child) inherits its configuration from the source (parent) branch if the `increment` strategy is set to `Inherit`. This makes branch configuration recursive, simpler, more intuitive, more flexible, and more robust. + * Instead of having a single effective configuration, we now have one effective configuration per branch where the increment strategy is not set to `inherit`. + * The new implementation of the branch configuration inheritance affects per default only the pull-requests, hotfix and feature branches. In this case the next version will be generated like the child branch is not existing and the commits have been made on the source branch. * The following example illustrates this behavior. On the feature branch the semantic version `1.1.0-just-a-test.1+2` will now be generated instead of version `1.0.0-just-a-test.1+3` previously: - ``` log + ```log * 1f1cfb4 52 minutes ago (HEAD -> feature/just-a-test) * 1f9654d 54 minutes ago (release/1.1.0) * be72411 56 minutes ago (develop) @@ -26,34 +31,49 @@ ``` * A new `unknown` branch magic string has been introduced to give the user the possibility to specify the branch configuration for a branch which is not known. A branch is not known if only the regular expression of the branch configuration with the name `unknown` is matching. Please notice that this branch configuration behaves like any other branch configurations. + * Additional `fallback` branch configuration properties have been introduced at the root to define base properties which will be inherit to the branch configurations. That means if no other branch configuration in the inheritance line defines the given property the fallback property applies. Notice that the inheritance tree can be controlled using the increment strategy property in the branch configuration section. * The following example illustrates this behavior. The hotfix branch configuration overrides the main branch configuration and the result overrides the fallback branch configuration. - ``` log + ```log * 1f1cfb4 52 minutes ago (HEAD -> hotfix/just-a-test) * 14800ff 58 minutes ago (tag: 1.0.0, main) ``` * When overriding the configuration with e.g. GitVersion.yaml the software distinguishes between properties who are not existent and properties who are `null`. This is especially important if the user wants to define branch related configuration which are marked with `increment` strategy `Inherit`. + * Following root configuration properties have been removed: * continuous-delivery-fallback-tag + * A new branch related property with name `track-merge-message` has been introduced. Consider we have a `main` branch and a `release/1.0.0` branch and merge changes from `release/1.0.0` to the main branch. In this scenario the merge message will be interpreted as a next version `1.0.0` when `track-merge-message` is set to `true` otherwise `0.0.1`. + * The pre-release tags are only considered when they are matching with the label name of the branch. This has an effect on the way how the `CommitCountSource` will be determined. + * The process of increasing the version with bump message when `CommitMessageIncrementing` is enabled and increment strategy is `None` has been changed. + * A new configuration property with name `version-in-branch-pattern` has been introduced. This setting only applies on branches where the option `is-release-branch` is set to `true`. Please notice that the branch name needs to be defined after the version number by default (instead of `support/lts-2.0.0` please name the branch like `support/2.0.0-lts`). + * The `is-release-branch` property of the `hotfix` branch setting has been changed from `false` to `true`. If present the hotfix number will be considered now by default. + * In the GitHub and the Git Flow workflows the `label` property is by default set to an empty string on the `main` branch. This yields to a pre-release version on `main` with an empty tag. Instead of for instance `1.0.1+46` GitVersion generates the full semantic version `1.0.1-46` instead. This behavior can be changed to generate only stable versions (no pre-release version) with setting the label to `null` (Please keep in mind that the `label` property on root needs to be set to `null` as well, otherwise the fallback applies). This change is caused by issue #2347. + * The `useBranchName` magic string has been removed. Instead use `{BranchName}` for `label`. + * The `BranchPrefixToTrim` configuration property has been removed. `RegularExpression` is now used to capture named groups instead. * Default `RegularExpression` for feature branches is changed from `^features?[/-]` to `^features?[/-](?.+)` to support using `{BranchName}` out-of-the-box * Default `RegularExpression` for unknown branches is changed from `.*` to `(?.+)` to support using `{BranchName}` out-of-the-box + * The `Mainline` mode and the related implementation has been removed completely. The new `Mainline` version strategy should be used instead. + * The `Mainline` version strategy doesn't support downgrading the increment for calculating the next version. This is the case if e.g. a bump messages has been defined which is lower than the branch increment. + * The branch related property `is-mainline` in the configuration system has been renamed to `is-main-branch` + * The versioning mode has been renamed to deployment mode and consists of following values: * ManualDeployment (previously ContinuousDelivery) * ContinuousDelivery (previously ContinuousDeployment) * ContinuousDeployment (new) + * At the configuration root level, a new array called `strategies` has been introduced, which can consist of on or more following values: * ConfiguredNextVersion * MergeMessage @@ -61,14 +81,21 @@ * TrackReleaseBranches * VersionInBranchName * Mainline + * The initialization wizard has been removed. + * On the `develop`, `release` and `hotfix` branch the introduced branch related property `prevent-increment.when-current-commit-tagged` has been set to `false` to get the incremented instead of the tagged semantic version. + * When setting the "ignore commits before" parameter to a future value, an exception will occur if no commits are found on the current branch. This behavior mimics that of an empty repository. + * On the `GitFlow` workflow the increment property has been changed: * in branch `release` from `None` to `Minor` and * in branch `hotfix` from `None` to `Patch` + * On the `GitHubFlow` workflow the increment property has been changed in branch `release` from `None` to `Patch`. + * When creating a branch with name `hotfix/next` (by using the `GitFlow` workflow) or `release/next` (by the `GitHubFlow` workflow) the resulting version will yield to a patched version per default. + * If you have a tag `1.0.0` on `main` and branch from `main` to `release/1.0.1` then the next version number will be `1.1.0` when using the `GitFlow` workflow. This behavior is expected (but different compared to the `GitHubFlow` workflow) because on the `GitFlow` workflow you have an addition branch configuration with name hotfix where `is-release-branch` is set to `true`. That means if you want `1.0.1` as a next version you need to branch to `hotfix/1.0.1` or `hotfix/next`. On the other hand if you use the `GitHubFlow` workflow the next version number will be `1.0.1` because the increment on the `release` branch is set to `Patch`. ### Legacy Output Variables @@ -87,9 +114,9 @@ The following legacy output variables have been removed in this version: ## v5.0.0 * Version numbers in branches other than `release` branches are no longer - considered as a version source by default. Implemented in [#1541][pr-1541]. + considered as a version source by default. Implemented in [#1541][pr-1541]. * [#1581][pr-1581] folds `GitTools.Core` back into GitVersion to make - maintaining GitVersion easier. + maintaining GitVersion easier. ## v4.0.0 @@ -107,27 +134,29 @@ work for you * `GitVersionConfig.yaml` is deprecated in favor of `GitVersion.yml`. * Regular expressions are no longer used as keys in branch config * We have named branches, and introduced a `regex` config which you can - override. + override. * The default keys are: `master`, `develop`, `feature`, `release`, `pull-request`, - `hotfix` and `support` + `hotfix` and `support` * Just run `GitVersion.exe` in your project directory and it will tell you - what to change your config keys to + what to change your config keys to * For example, `dev(elop)?(ment)?$` is now just `develop`, we suggest not - overring regular expressions unless you really want to use a different convention. + overring regular expressions unless you really want to use a different convention. * `source-branches` added as a configuration option for branches, it helps - GitVersion pick the correct source branch + GitVersion pick the correct source branch ## v3.0.0 * NextVersion.txt has been deprecated, only `GitVersionConfig.yaml` is supported * `AssemblyFileSemVer` variable removed, `AssemblyVersioningScheme` configuration - value makes this variable obsolete + value makes this variable obsolete * Variables `ClassicVersion` and `ClassicVersionWithTag` removed * MSBuild task arguments (`AssemblyVersioningScheme`, `DevelopBranchTag`, - `ReleaseBranchTag`, `TagPrefix`, `NextVersion`) have been removed, use - `GitVersionConfig.yaml` instead + `ReleaseBranchTag`, `TagPrefix`, `NextVersion`) have been removed, use + `GitVersionConfig.yaml` instead * GitVersionTask's `ReleaseDateAttribute` no longer exists [gitflow]: https://gitversion.net/docs/learn/branching-strategies/gitflow-examples_complete + [pr-1541]: https://github.com/GitTools/GitVersion/pull/1541 + [pr-1581]: https://github.com/GitTools/GitVersion/pull/1581 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fa2ab0c87e..ac82b46b95 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,9 +17,9 @@ Issues are also welcome, [failing tests](#writing-tests) are even more welcome. * Try to use feature branches rather than developing on main. * Please include tests covering the change. * The documentation is stored in the repository under the [`docs`](docs) folder. - Have a look at the [documentation readme file](docs/readme.md) for guidance - on how to improve the documentation and please include documentation updates - with your PR. + Have a look at the [documentation readme file](docs/readme.md) for guidance + on how to improve the documentation and please include documentation updates + with your PR. ## How it works @@ -100,15 +100,15 @@ We use Cake for our build and deployment process. The way the release process is 1. We build releasable artifacts with GitHub Actions 2. We create a milestone for the release if it's not already created. Our milestones are named using the semver. - For example `5.12.0` or `6.0.0-beta.2` + For example `5.12.0` or `6.0.0-beta.2` 3. We move all the closed issues and closed pull requests that are going to be included in the release to the milestone. 4. We check that all the issues and pull requests that are going to be included in the release have a label assigned, - otherwise it will fail the release. + otherwise it will fail the release. 5. We create a release in the GitHub UI, and create a tag and name it using the milestone name. For example `5.12.0` or `6.0.0-beta.2` 6. We specify if the release is a pre-release or latest release in the GitHub UI. 7. We publish the release. 8. The GitHub Actions will create a GitHub release and publish the artifacts to NuGet, Chocolatey, Docker, Homebrew - and other distribution channels. + and other distribution channels. 9. The issues and pull requests will get updated with message specifying in which release it was included. ## Code Style diff --git a/README.md b/README.md index b9498ad3b2..849048e10a 100644 --- a/README.md +++ b/README.md @@ -49,41 +49,78 @@ You are seeing: designed by [David Chapman][app-icon-author] from The Noun Project. -[semver]: https://semver.org -[gitter]: https://gitter.im/GitTools/GitVersion?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge -[gitter-badge]: https://badges.gitter.im/Join+Chat.svg -[azure-pipeline]: https://dev.azure.com/GitTools/GitVersion/_build/latest?definitionId=1 -[azure-pipeline-badge]: https://dev.azure.com/GitTools/GitVersion/_apis/build/status/GitTools.GitVersion -[github-actions]: https://github.com/GitTools/GitVersion/actions -[github-actions-badge]: https://github.com/GitTools/GitVersion/workflows/CI/badge.svg -[codecov]: https://codecov.io/gh/GitTools/GitVersion -[codecov-badge]: https://codecov.io/gh/GitTools/GitVersion/branch/main/graph/badge.svg -[docs]: https://gitversion.net/docs/ -[gh-rel]: https://github.com/GitTools/GitVersion/releases/latest -[gh-rel-badge]: https://img.shields.io/github/release/gittools/gitversion.svg?logo=github -[choco]: https://chocolatey.org/packages/GitVersion.Portable -[choco-badge]: https://img.shields.io/chocolatey/v/gitversion.portable.svg?logo=nuget -[gvt]: https://www.nuget.org/packages/GitVersion.MsBuild -[gvt-badge]: https://img.shields.io/nuget/v/GitVersion.MsBuild.svg?logo=nuget -[gvgt]: https://www.nuget.org/packages/GitVersion.Tool -[gvgt-badge]: https://img.shields.io/nuget/v/GitVersion.Tool.svg?logo=nuget -[brew]: https://formulae.brew.sh/formula/gitversion -[brew-badge]: https://img.shields.io/homebrew/v/gitversion.svg?logo=homebrew -[winget]: https://github.com/microsoft/winget-pkgs/tree/master/manifests/g/GitTools/GitVersion -[winget-badge]: https://img.shields.io/badge/winget-v6.0.2-blue.svg?logo=microsoft -[dockerhub]: https://hub.docker.com/r/gittools/gitversion/ -[dockerhub-badge]: https://img.shields.io/docker/pulls/gittools/gitversion.svg?logo=docker -[az-pipeline-task]: https://marketplace.visualstudio.com/items?itemName=gittools.gittools -[az-pipeline-task-badge]: https://img.shields.io/badge/marketplace-gittools.gittools-blue?logo=azure-pipelines -[gh-actions]: https://github.com/marketplace/actions/gittools -[gh-actions-badge]: https://img.shields.io/badge/marketplace-gittools-blue?logo=github -[contribute]: https://github.com/GitTools/GitVersion/blob/main/CONTRIBUTING.md -[why]: https://gitversion.net/docs/learn/why -[usage]: https://gitversion.net/docs/usage -[how]: https://gitversion.net/docs/learn/how-it-works -[faq]: https://gitversion.net/docs/learn/faq -[who]: https://gitversion.net/docs/learn/who -[gv-in-action]: https://raw.githubusercontent.com/GitTools/GitVersion/master/docs/input/docs/img/README.png -[banner]: https://raw.githubusercontent.com/GitTools/graphics/master/GitVersion/banner-1280x640.png -[app-icon]: https://thenounproject.com/term/tree/13389/ -[app-icon-author]: https://thenounproject.com/david.chapman +[semver]: https://semver.org + +[gitter]: https://gitter.im/GitTools/GitVersion?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge + +[gitter-badge]: https://badges.gitter.im/Join+Chat.svg + +[azure-pipeline]: https://dev.azure.com/GitTools/GitVersion/_build/latest?definitionId=1 + +[azure-pipeline-badge]: https://dev.azure.com/GitTools/GitVersion/_apis/build/status/GitTools.GitVersion + +[github-actions]: https://github.com/GitTools/GitVersion/actions + +[github-actions-badge]: https://github.com/GitTools/GitVersion/workflows/CI/badge.svg + +[codecov]: https://codecov.io/gh/GitTools/GitVersion + +[codecov-badge]: https://codecov.io/gh/GitTools/GitVersion/branch/main/graph/badge.svg + +[docs]: https://gitversion.net/docs/ + +[gh-rel]: https://github.com/GitTools/GitVersion/releases/latest + +[gh-rel-badge]: https://img.shields.io/github/release/gittools/gitversion.svg?logo=github + +[choco]: https://chocolatey.org/packages/GitVersion.Portable + +[choco-badge]: https://img.shields.io/chocolatey/v/gitversion.portable.svg?logo=nuget + +[gvt]: https://www.nuget.org/packages/GitVersion.MsBuild + +[gvt-badge]: https://img.shields.io/nuget/v/GitVersion.MsBuild.svg?logo=nuget + +[gvgt]: https://www.nuget.org/packages/GitVersion.Tool + +[gvgt-badge]: https://img.shields.io/nuget/v/GitVersion.Tool.svg?logo=nuget + +[brew]: https://formulae.brew.sh/formula/gitversion + +[brew-badge]: https://img.shields.io/homebrew/v/gitversion.svg?logo=homebrew + +[winget]: https://github.com/microsoft/winget-pkgs/tree/master/manifests/g/GitTools/GitVersion + +[winget-badge]: https://img.shields.io/badge/winget-v6.0.2-blue.svg?logo=microsoft + +[dockerhub]: https://hub.docker.com/r/gittools/gitversion/ + +[dockerhub-badge]: https://img.shields.io/docker/pulls/gittools/gitversion.svg?logo=docker + +[az-pipeline-task]: https://marketplace.visualstudio.com/items?itemName=gittools.gittools + +[az-pipeline-task-badge]: https://img.shields.io/badge/marketplace-gittools.gittools-blue?logo=azure-pipelines + +[gh-actions]: https://github.com/marketplace/actions/gittools + +[gh-actions-badge]: https://img.shields.io/badge/marketplace-gittools-blue?logo=github + +[contribute]: https://github.com/GitTools/GitVersion/blob/main/CONTRIBUTING.md + +[why]: https://gitversion.net/docs/learn/why + +[usage]: https://gitversion.net/docs/usage + +[how]: https://gitversion.net/docs/learn/how-it-works + +[faq]: https://gitversion.net/docs/learn/faq + +[who]: https://gitversion.net/docs/learn/who + +[gv-in-action]: https://raw.githubusercontent.com/GitTools/GitVersion/master/docs/input/docs/img/README.png + +[banner]: https://raw.githubusercontent.com/GitTools/graphics/master/GitVersion/banner-1280x640.png + +[app-icon]: https://thenounproject.com/term/tree/13389/ + +[app-icon-author]: https://thenounproject.com/david.chapman diff --git a/SECURITY.md b/SECURITY.md index 6e07e80a06..5d4f3799c2 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,14 +4,14 @@ | Version | Supported | | --------: | :----------------: | -| 5.x | :white_check_mark: | +| 5.x | :white\_check\_mark: | | ⋜ 5.x | :x: | ## Reporting Security Issues ⚠ **Please do not report security vulnerabilities through public GitHub issues.** ⚠ -Instead, please send an email to [security@gitversion.net](mailto:security@gitversion.net). +Instead, please send an email to . You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. diff --git a/build/CI.sln b/build/CI.sln index 4a5f522977..f0edfb151e 100644 --- a/build/CI.sln +++ b/build/CI.sln @@ -6,6 +6,13 @@ ProjectSection(SolutionItems) = preProject ..\global.json = ..\global.json ..\.gitignore = ..\.gitignore ..\.config\dotnet-tools.json = ..\.config\dotnet-tools.json + ..\package.json = ..\package.json + + + + + + ..\.remarkrc.yaml = ..\.remarkrc.yaml EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "build", "build\build.csproj", "{1AC00FB2-E28A-46B7-9683-AA7A1AFC29EB}" diff --git a/build/nuspec/README.md b/build/nuspec/README.md index e91094077a..02b3c0314a 100644 --- a/build/nuspec/README.md +++ b/build/nuspec/README.md @@ -39,22 +39,38 @@ You are seeing: designed by [David Chapman][app-icon-author] from The Noun Project. -[semver]: http://semver.org -[gitter]: https://gitter.im/GitTools/GitVersion?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge -[gitter-badge]: https://badges.gitter.im/Join+Chat.svg -[docs]: https://gitversion.net/docs/ -[gvt]: https://www.nuget.org/packages/GitVersion.MsBuild -[gvt-badge]: https://img.shields.io/nuget/v/GitVersion.MsBuild.svg?logo=nuget -[gitversiontask]: https://www.nuget.org/packages/GitVersionTask/ -[gvgt]: https://www.nuget.org/packages/GitVersion.Tool -[gvgt-badge]: https://img.shields.io/nuget/v/GitVersion.Tool.svg?logo=nuget -[contribute]: https://github.com/GitTools/GitVersion/blob/main/CONTRIBUTING.md -[why]: https://gitversion.net/docs/learn/why -[usage]: https://gitversion.net/docs/usage -[how]: https://gitversion.net/docs/learn/how-it-works -[faq]: https://gitversion.net/docs/learn/faq -[who]: https://gitversion.net/docs/learn/who -[gv-in-action]: https://raw.githubusercontent.com/GitTools/GitVersion/master/docs/input/docs/img/README.png -[banner]: https://raw.githubusercontent.com/GitTools/graphics/master/GitVersion/banner-1280x640.png -[app-icon]: https://thenounproject.com/term/tree/13389/ -[app-icon-author]: http://thenounproject.com/david.chapman +[semver]: http://semver.org + +[gitter]: https://gitter.im/GitTools/GitVersion?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge + +[gitter-badge]: https://badges.gitter.im/Join+Chat.svg + +[docs]: https://gitversion.net/docs/ + +[gvt]: https://www.nuget.org/packages/GitVersion.MsBuild + +[gvt-badge]: https://img.shields.io/nuget/v/GitVersion.MsBuild.svg?logo=nuget + +[gvgt]: https://www.nuget.org/packages/GitVersion.Tool + +[gvgt-badge]: https://img.shields.io/nuget/v/GitVersion.Tool.svg?logo=nuget + +[contribute]: https://github.com/GitTools/GitVersion/blob/main/CONTRIBUTING.md + +[why]: https://gitversion.net/docs/learn/why + +[usage]: https://gitversion.net/docs/usage + +[how]: https://gitversion.net/docs/learn/how-it-works + +[faq]: https://gitversion.net/docs/learn/faq + +[who]: https://gitversion.net/docs/learn/who + +[gv-in-action]: https://raw.githubusercontent.com/GitTools/GitVersion/master/docs/input/docs/img/README.png + +[banner]: https://raw.githubusercontent.com/GitTools/graphics/master/GitVersion/banner-1280x640.png + +[app-icon]: https://thenounproject.com/term/tree/13389/ + +[app-icon-author]: http://thenounproject.com/david.chapman diff --git a/docs/input/docs/learn/branching-strategies/gitflow/examples.md b/docs/input/docs/learn/branching-strategies/gitflow/examples.md index 1511b617fb..fd3876c5b0 100644 --- a/docs/input/docs/learn/branching-strategies/gitflow/examples.md +++ b/docs/input/docs/learn/branching-strategies/gitflow/examples.md @@ -10,6 +10,7 @@ These examples are illustrating the usage of the supported `GitFlow` workflow in GitVersion. To enable this workflow, the builtin template [GitFlow/v1](/docs/workflows/GitFlow/v1.json) needs to be referenced in the configuration as follows: + ```yaml workflow: GitFlow/v1 mode: ContinuousDelivery @@ -45,7 +46,7 @@ created from a `develop`, `release`, `main`, `support` or `hotfix` branch. ### Create feature branch from main -![GitFlow](/docs/img/DocumentationSamplesForGitFlow\_FeatureFromMainBranch.png) +![GitFlow](/docs/img/DocumentationSamplesForGitFlow_FeatureFromMainBranch.png) :::{.alert .alert-info} After the feature branch is merged, the version on `main` is `2.0.0-5`. @@ -55,7 +56,7 @@ configured to use _continuous deployment_ the version would be `2.0.0`. ### Create feature branch from develop -![GitFlow](/docs/img/DocumentationSamplesForGitFlow\_FeatureFromDevelopBranch.png) +![GitFlow](/docs/img/DocumentationSamplesForGitFlow_FeatureFromDevelopBranch.png) :::{.alert .alert-info} After the feature branch is merged, the version on `develop` is @@ -72,23 +73,23 @@ Hotfix branches are used when you need to do a _patch_ release in the ### Create hotfix branch -![GitFlow](/docs/img/DocumentationSamplesForGitFlow\_HotfixBranch.png) +![GitFlow](/docs/img/DocumentationSamplesForGitFlow_HotfixBranch.png) ### Create hotfix branch with version number -![GitFlow](/docs/img/DocumentationSamplesForGitFlow\_VersionedHotfixBranch.png) +![GitFlow](/docs/img/DocumentationSamplesForGitFlow_VersionedHotfixBranch.png) ## Release Branches -Release branches are used for major and minor releases to stabilize a RC +Release branches are used for major and minor releases to stabilize a RC (Release Candidate) or to integrate features (in parallel) targeting different iterations. Release branches are taken from `main` (or from `develop`) and will be merged back afterwards. Finally the `main` branch is tagged with the released version. Release branches can be used in the `GitFlow` as well as `GitHubFlow` workflow. -Sometimes you want to start on a large feature which may take a while -to stabilize so you want to keep it off main. +Sometimes you want to start on a large feature which may take a while +to stabilize so you want to keep it off main. In these scenarios you can either create a long lived feature branch (if you do not know the version number this large feature will go into, and it's non-breaking) otherwise you can create a release branch for the @@ -97,15 +98,15 @@ branch or the release branch. ### Create release branch -![GitFlow](/docs/img/DocumentationSamplesForGitFlow\_ReleaseBranch.png) +![GitFlow](/docs/img/DocumentationSamplesForGitFlow_ReleaseBranch.png) ### Create release branch with version -![GitFlow](/docs/img/DocumentationSamplesForGitFlow\_VersionedReleaseBranch.png) +![GitFlow](/docs/img/DocumentationSamplesForGitFlow_VersionedReleaseBranch.png) ## Develop Branch -![GitFlow](/docs/img/DocumentationSamplesForGitFlow\_DevelopBranch.png) +![GitFlow](/docs/img/DocumentationSamplesForGitFlow_DevelopBranch.png) ## Support Branches @@ -116,7 +117,7 @@ majors, then name your branch `support/.x` (i.e `support/1.x`), to support minors use `support/..x` or `support/..0`. (i.e `support/1.3.x` or `support/1.3.0`) -![GitFlow](/docs/img/DocumentationSamplesForGitFlow\_SupportBranch.png) +![GitFlow](/docs/img/DocumentationSamplesForGitFlow_SupportBranch.png) :::{.alert .alert-info} Depending on what you name your support branch, you may or may not need a @@ -135,5 +136,7 @@ See [contributing examples](/docs/learn/branching-strategies/contribute-examples See `DocumentationSamplesForGitFlow.cs`. To update, modify then run test. [continuous-deployment]: /docs/reference/modes/continuous-deployment + [continuous-delivery]: /docs/reference/modes/continuous-delivery + [manual-deployment]: /docs/reference/modes/manual-deployment diff --git a/docs/input/docs/learn/branching-strategies/gitflow/index.md b/docs/input/docs/learn/branching-strategies/gitflow/index.md index dbb5688c1b..2c3019d88b 100644 --- a/docs/input/docs/learn/branching-strategies/gitflow/index.md +++ b/docs/input/docs/learn/branching-strategies/gitflow/index.md @@ -11,18 +11,18 @@ SemVer compatible versions from this structure. ## Assumptions: * Using [GitFlow branching model](https://nvie.com/git-model/) which always has a - main and a develop branch + main and a develop branch * Following [Semantic Versioning](https://semver.org/) * Planned releases (bumps in major or minor) are done on release branches - prefixed with release-. Eg: release-4.1 (or release-4.1.0) + prefixed with release-. Eg: release-4.1 (or release-4.1.0) * Hotfixes are prefixed with hotfix- Eg. hotfix-4.0.4 * The original [GitFlow model](https://nvie.com/posts/a-successful-git-branching-model/) - specifies branches with a "-" separator while the [git flow extensions](https://github.com/CJ-Systems/gitflow-cjs) - default to a "/" separator. Either work with GitVersion. + specifies branches with a "-" separator while the [git flow extensions](https://github.com/CJ-Systems/gitflow-cjs) + default to a "/" separator. Either work with GitVersion. * Tags are used on the main branch and reflects the SemVer of each stable - release eg 3.3.8 , 4.0.0, etc + release eg 3.3.8 , 4.0.0, etc * Tags can also be used to override versions while we transition repositories - over to GitVersion + over to GitVersion * Using a build server with multi-branch building enabled eg TeamCity 8 ## How Branches are handled @@ -72,7 +72,7 @@ Long version: * minor: `mainMergeVersion.Minor + 1` (0 if the override above is used) * patch: 0 * pre-release: `alpha.{n}` where n = how many commits `develop` is in front of - `mainVersionCommit.Date` ('0' padded to 4 characters) + `mainVersionCommit.Date` ('0' padded to 4 characters) Long version: @@ -91,7 +91,7 @@ Named: `hotfix-{versionNumber}` eg `hotfix-1.2` * minor: `mergeVersion.Minor` * patch: `mergeVersion.Patch` * pre-release: `beta{n}` where n = number of commits on branch ('0' padded to - 4 characters) + 4 characters) Long version: @@ -116,7 +116,7 @@ tag would be `1.2.0-alpha1` * minor: `mergeVersion.Minor` * patch: 0 * pre-release: `{releaseTag.preRelease}.{n}` where n = 1 + the number of commits - since `releaseTag`. + since `releaseTag`. So on a branch named `release-1.2` with a tag `1.2.0-alpha1` and 4 commits after that tag the version would be `1.2.0-alpha1.4` @@ -143,7 +143,7 @@ branches named like "4.0.3" * minor: `mainMergeVersion.Minor + 1` (0 if the override above is used) * patch: 0 * pre-release: `alpha.feature-{n}` where n = First 8 characters of the commit - SHA of the first commit + SHA of the first commit Long version: @@ -163,7 +163,7 @@ Branch naming convention: anything except `main`, `develop`, `release-{n}`, or * minor: `mainMergeVersion.Minor + 1` (0 if the override above is used) * patch: 0 * pre-release: `alpha.pull{n}` where n = the pull request number ('0' padded to - 4 characters) + 4 characters) ## Nightly Builds diff --git a/docs/input/docs/learn/branching-strategies/githubflow/examples.md b/docs/input/docs/learn/branching-strategies/githubflow/examples.md index 0f79be951a..92f07d1e89 100644 --- a/docs/input/docs/learn/branching-strategies/githubflow/examples.md +++ b/docs/input/docs/learn/branching-strategies/githubflow/examples.md @@ -8,6 +8,7 @@ These examples are illustrating the usage of the supported `GitHubFlow` workflow in GitVersion. To enable this workflow, the builtin template [GitHubFlow/v1](/docs/workflows/GitHubFlow/v1.json) needs to be referenced in the configuration as follows: + ```yaml workflow: GitHubFlow/v1 mode: ContinuousDelivery @@ -26,7 +27,7 @@ All other branches are manually published. Read more about this at [version increments](/docs/reference/version-increments). :::{.alert .alert-info} -The _continuous delivery_ mode has been used for the `main` branch in this +The _continuous delivery_ mode has been used for the `main` branch in this examples (specified as a fallback on the root configuration layer) to illustrate how the version increments are applied. In production context the _continuous deployment_ mode might be a better @@ -37,7 +38,7 @@ by the pipeline automatically. ## Feature Branch Feature branches can be used in the `GitHubFlow` workflow to implement a -feature or fix a bug in an isolated environment. Feature branches will take +feature or fix a bug in an isolated environment. Feature branches will take the feature branch name and use that as the pre-release label. Feature branches will be created from a `main` or `release` branch. @@ -87,5 +88,7 @@ See [contributing examples](/docs/learn/branching-strategies/contribute-examples See `DocumentationSamplesForGitHubFlow.cs`. To update, modify then run test. [continuous-deployment]: /docs/reference/modes/continuous-deployment + [continuous-delivery]: /docs/reference/modes/continuous-delivery + [manual-deployment]: /docs/reference/modes/manual-deployment diff --git a/docs/input/docs/learn/branching-strategies/overview.md b/docs/input/docs/learn/branching-strategies/overview.md index b5053214b3..4af9d6638f 100644 --- a/docs/input/docs/learn/branching-strategies/overview.md +++ b/docs/input/docs/learn/branching-strategies/overview.md @@ -28,7 +28,7 @@ and the branching strategy most open source projects use. * [Mainline development][mainline] on `main`. * Work on [feature branches][feature-branches], merge into `main` via a [pull - request][pull-request]. + request][pull-request]. * Works well for [continuous delivery][continuous-delivery]. * Does not have a way to manage/maintain old releases. * Only allows working on a single release at a time. @@ -41,7 +41,7 @@ more control over when features and code is released. * Development on `develop` branch. * `main` only contains _released_ code. * Supports maintaining old releases (like nServiceBus, they support the last 3 - major versions with bug fixes and security updates). + major versions with bug fixes and security updates). * Supports development on multiple releases at one time. ## Choosing a branching strategy @@ -52,16 +52,22 @@ There are a few reasons you would pick GitFlow over GitHubFlow, they are: 2. You need to work on multiple releases at the same time. * For example a new feature which will go in the next major version, while bug - fixes/smaller features are still going into the current release + fixes/smaller features are still going into the current release But if you do not have a good reason to go with GitFlow, then start with GitHubFlow. It is a far simpler model and if you end up needing GitFlow later, it is [easy to convert][converting-to-gitflow]. [continuous-delivery]: /docs/reference/modes/continuous-delivery + [converting-to-gitflow]: /docs/learn/branching-strategies/gitflow/converting-to-gitflow + [feature-branches]: /docs/learn/branching-strategies/gitflow/examples#feature-branches + [gitflow]: /docs/learn/branching-strategies/gitflow + [githubflow]: /docs/learn/branching-strategies/githubflow + [mainline]: /docs/reference/modes/mainline + [pull-request]: /docs/learn/branching-strategies/gitflow/examples#pull-request diff --git a/docs/input/docs/learn/credits.md b/docs/input/docs/learn/credits.md index d00e906c52..69e6326eb1 100644 --- a/docs/input/docs/learn/credits.md +++ b/docs/input/docs/learn/credits.md @@ -16,18 +16,33 @@ Icons sourced, with love, from [The Noun Project][the-noun-project]: ::: [artz91]: https://thenounproject.com/ArtZ91/ + [collect-icon]: /assets/img/collect.svg + [collect-link]: https://thenounproject.com/term/collect/424422/ + [david-chapman]: https://thenounproject.com/david.chapman/ + [ghayn]: https://thenounproject.com/Ghayn/ + [kevineichhorn]: https://thenounproject.com/kevineichhorn/ + [library-icon]: /assets/img/library.svg + [library-link]: https://thenounproject.com/term/library/1386683/ + [monstercritic]: https://thenounproject.com/monstercritic/ + [repeat-icon]: /assets/img/repeat.svg + [repeat-link]: https://thenounproject.com/term/repeat/304152/ + [terminal-icon]: /assets/img/terminal.svg + [terminal-link]: https://thenounproject.com/term/terminal/2191738/ + [the-noun-project]: https://thenounproject.com/ + [tree-icon]: /assets/img/icon.svg + [tree-link]: https://thenounproject.com/term/tree/13389/ diff --git a/docs/input/docs/learn/faq.md b/docs/input/docs/learn/faq.md index b179215d85..4f972dad4a 100644 --- a/docs/input/docs/learn/faq.md +++ b/docs/input/docs/learn/faq.md @@ -69,8 +69,13 @@ therefore not be considered for version calculation in the target branch of the merge. [dynamic-repos]: /docs/learn/dynamic-repositories + [increments]: /docs/reference/version-increments + [octopus]: /docs/reference/build-servers/octopus-deploy + [semver-intro]: /docs/learn/intro-to-semver + [semver]: https://semver.org + [variables]: /docs/reference/variables diff --git a/docs/input/docs/learn/how-it-works.md b/docs/input/docs/learn/how-it-works.md index 03391ae1e4..a556661b26 100644 --- a/docs/input/docs/learn/how-it-works.md +++ b/docs/input/docs/learn/how-it-works.md @@ -17,11 +17,11 @@ it _much_ more predictable and easier to diagnose when odd things are happening. GitVersion has three distinct steps for calculating versions in v3. 1. If the current commit is tagged, the tag is used and build metadata - (excluding commit count) is added. The other two steps will not execute. + (excluding commit count) is added. The other two steps will not execute. 2. A set of strategies are evaluated to decide on the base version and some - metadata about that version. See [Version Strategies](#version-strategies) + metadata about that version. See [Version Strategies](#version-strategies) 3. The highest base version is selected, using that base version as the new - version is calculated. + version is calculated. Visually it looks something like this: @@ -39,19 +39,19 @@ simply to show what happens if the check is true. Currently we have the following strategies: * `Fallback` - Always returns 0.0.0 and will be used for - calculating the next version which is dependent on the increment strategy of - the effected branch (e.g. on main the next version is 0.0.1 or on develop it is 0.1.0). - The fallback strategy only applies if no other selected strategy returns a base version. + calculating the next version which is dependent on the increment strategy of + the effected branch (e.g. on main the next version is 0.0.1 or on develop it is 0.1.0). + The fallback strategy only applies if no other selected strategy returns a base version. * `ConfiguredNextVersion` - Returns the version from the GitVersion.yaml file * `MergeMessage` - Finds version numbers from merge messages - (e.g., `Merge 'release/3.0.0' into 'main'` will return `3.0.0`) + (e.g., `Merge 'release/3.0.0' into 'main'` will return `3.0.0`) * `TaggedCommit` - Extracts version information from all tags on the branch which are valid, - and not newer than the current commit. + and not newer than the current commit. * `TrackReleaseBranches` - Considers the base version extracted from release branches when - calculating the next version for branches configured with `track-release-branches: true` - (part of default configuration for `develop` branch in `GitFlow` workflow) + calculating the next version for branches configured with `track-release-branches: true` + (part of default configuration for `develop` branch in `GitFlow` workflow) * `VersionInBranchName` - Extracts version information from the - branch name (e.g., `release/3.0.0` will find `3.0.0`) + branch name (e.g., `release/3.0.0` will find `3.0.0`) * `Mainline` - Increments the version on every commit for branches configured with `is-main-branch: true` Each strategy needs to return an instance of `BaseVersion` which has the @@ -59,14 +59,14 @@ following properties: * `Source` - Description of the source (e.g., `Merge message 'Merge 'release/3.0.0' into 'main'`) * `ShouldIncrement` - Some strategies should have the version incremented, - others do not (e.g., `ConfiguredNextVersion` returns false, - `TaggedCommit` returns true) + others do not (e.g., `ConfiguredNextVersion` returns false, + `TaggedCommit` returns true) * `SemanticVersion` - SemVer of the base version strategy * `BaseVersionSource` - SHA hash of the source. Commits will be counted from - this hash. Can be null (e.g., `ConfiguredNextVersion` returns - null). + this hash. Can be null (e.g., `ConfiguredNextVersion` returns + null). * `BranchNameOverride` - When `useBranchName` or `{BranchName}` is used in the - tag configuration, this allows the branch name to be changed by a base version. - `VersionInBranchName` uses this to strip out anything before the - first `-` or `/.` so `foo` ends up being evaluated as `foo`. If in doubt, just - use null. + tag configuration, this allows the branch name to be changed by a base version. + `VersionInBranchName` uses this to strip out anything before the + first `-` or `/.` so `foo` ends up being evaluated as `foo`. If in doubt, just + use null. diff --git a/docs/input/docs/learn/why.md b/docs/input/docs/learn/why.md index a87ef0cc3a..0b08792e30 100644 --- a/docs/input/docs/learn/why.md +++ b/docs/input/docs/learn/why.md @@ -14,9 +14,9 @@ It solves: * Rebuilding tags always produces the same version * Not having to rebuild to increment versions * Not duplicating version information in multiple places (branch release/2.0.0 - already has the version in it, why do I need to change something else) + already has the version in it, why do I need to change something else) * Each branch calculates its SemVer and versions flow between branches when - they are merged + they are merged * Pull requests produce unique pre-release version numbers * NuGet semver issues * Build server integration diff --git a/docs/input/docs/reference/build-servers/appveyor.md b/docs/input/docs/reference/build-servers/appveyor.md index 2232c49a15..5cf4199c94 100644 --- a/docs/input/docs/reference/build-servers/appveyor.md +++ b/docs/input/docs/reference/build-servers/appveyor.md @@ -12,4 +12,4 @@ AppVeyor is the first build server which has a setup helper built into 2. Choose `Setup build scripts` (currently option 7, but that could change) 3. Choose `AppVeyor` 4. Follow the prompts to generate an AppVeyor.yml file which works nicely with - GitVersion + GitVersion diff --git a/docs/input/docs/reference/build-servers/azure-devops.md b/docs/input/docs/reference/build-servers/azure-devops.md index 3f548d18a4..500b15b7b2 100644 --- a/docs/input/docs/reference/build-servers/azure-devops.md +++ b/docs/input/docs/reference/build-servers/azure-devops.md @@ -5,6 +5,7 @@ Description: | Details on the Azure DevOps Build Pipeline support in GitVersion RedirectFrom: docs/build-server-support/build-server/azure-devops --- + ## Installation and usage For Azure DevOps Services or Azure DevOps Server you can install the [GitTools Bundle](https://marketplace.visualstudio.com/items?itemName=gittools.gittools). diff --git a/docs/input/docs/reference/build-servers/buildkite.md b/docs/input/docs/reference/build-servers/buildkite.md index 5bae6a9729..30c04c14cf 100644 --- a/docs/input/docs/reference/build-servers/buildkite.md +++ b/docs/input/docs/reference/build-servers/buildkite.md @@ -50,6 +50,9 @@ eval $(gitversion | jq -r 'to_entries[] | "buildkite-agent meta-data set GitVers Assuming your Buildkite agent has dotnet and gitversion installed and on the path, all the calculated GitVersion variables will have a corresponding meta-data key set. [buildkite]: https://buildkite.com/ + [configuration]: https://buildkite.com/docs/agent/v3/hooks + [hooks]: https://buildkite.com/docs/agent/v3/hooks + [meta-data]: https://buildkite.com/docs/agent/v3/cli-meta-data diff --git a/docs/input/docs/reference/build-servers/continua.md b/docs/input/docs/reference/build-servers/continua.md index eefe6048df..e2af69c06e 100644 --- a/docs/input/docs/reference/build-servers/continua.md +++ b/docs/input/docs/reference/build-servers/continua.md @@ -23,9 +23,9 @@ It also requires a few variables which will automatically be filled by GitVersion. The example below are just a few, any of the GitVersion variables written to the output can be used. -* GitVersion_FullSemVer -* GitVersion_MajorMinorPatch -* GitVersion_NuGetVersion +* GitVersion\_FullSemVer +* GitVersion\_MajorMinorPatch +* GitVersion\_NuGetVersion You also need to add a property collector for the agents to detect the GitVersion tool on the agents: @@ -36,7 +36,7 @@ GitVersion tool on the agents: * Property Name => Path * Executable => GitVersion.exe * Search paths => your installation folder (e.g. `C:\Tools\GitVersion` or if you - are using Chocolatey `C:\ProgramData\chocolatey\lib\GitVersion.Portable\tools`) + are using Chocolatey `C:\ProgramData\chocolatey\lib\GitVersion.Portable\tools`) ## Basic Usage diff --git a/docs/input/docs/reference/build-servers/github-actions.md b/docs/input/docs/reference/build-servers/github-actions.md index d19e4489a5..77ae3a9023 100644 --- a/docs/input/docs/reference/build-servers/github-actions.md +++ b/docs/input/docs/reference/build-servers/github-actions.md @@ -4,6 +4,7 @@ Title: GitHub Actions Description: | Details on the GitHub Actions Workflow support in GitVersion --- + ## Installation and usage For GitHub Actions you can install the action from [GitTools Bundle](https://github.com/marketplace/actions/gittools). diff --git a/docs/input/docs/reference/build-servers/gitlab.md b/docs/input/docs/reference/build-servers/gitlab.md index 9a03ac25b8..aa97d9e5fd 100755 --- a/docs/input/docs/reference/build-servers/gitlab.md +++ b/docs/input/docs/reference/build-servers/gitlab.md @@ -13,22 +13,29 @@ A working example of integrating GitVersion with GitLab is maintained in the pro Here is a summary of what it demonstrated (many more details in the [Readme][readme]) -- Is a reusable working example known as a Guided Exploration ([Guided Exploration Manifesto][guided-exploration-manifesto]) - so job logs and package artifacts can be reviewed. The project can also be imported to your own GitLab group or instance as a starting point for your own work. -- IMPORTANT: It demonstrates how to override GitLab CI's default cloning behavior so that GitVersion can do a dynamic copy. Selectively clones GitVersion.yml so that these settings take effect. This best practice demonstrates the best way to do this while avoiding a double-cloning of the project (once by GitLab Runner and once by GitVersion). -- Implements GitVersion as a CI/CD Extension that can be reused across many projects using includes. -- Implements GitVersion as a single job that runs the GitVersion container and passes the version number downstream into both _pipeline_ and _job_ level variables, which means... -- It can be used with ANY coding language, framework or packaging engine. -- Generates example packaged artifacts: - - Two ways of building Sem Versioned NuGet packages (msbuild-ish and nuget.exe-ish) and uploads them and tests them from a [GitLab NuGet Repository][gitlab-nuget-repository]. - - A Sem Versioned [GitLab Generic Package][gitlab-generic-package] - - A Sem Versioned docker container and uploads to [GitLab Container Registry][gitlab-container-registry]. -- It creates a Sem Versioned [GitLab Release][gitlab-release-help] and Git tag using the [GitLab Release Cli][gitlab-release-cli] and links the generic package as evidence. +* Is a reusable working example known as a Guided Exploration ([Guided Exploration Manifesto][guided-exploration-manifesto]) - so job logs and package artifacts can be reviewed. The project can also be imported to your own GitLab group or instance as a starting point for your own work. +* IMPORTANT: It demonstrates how to override GitLab CI's default cloning behavior so that GitVersion can do a dynamic copy. Selectively clones GitVersion.yml so that these settings take effect. This best practice demonstrates the best way to do this while avoiding a double-cloning of the project (once by GitLab Runner and once by GitVersion). +* Implements GitVersion as a CI/CD Extension that can be reused across many projects using includes. +* Implements GitVersion as a single job that runs the GitVersion container and passes the version number downstream into both _pipeline_ and _job_ level variables, which means... +* It can be used with ANY coding language, framework or packaging engine. +* Generates example packaged artifacts: + * Two ways of building Sem Versioned NuGet packages (msbuild-ish and nuget.exe-ish) and uploads them and tests them from a [GitLab NuGet Repository][gitlab-nuget-repository]. + * A Sem Versioned [GitLab Generic Package][gitlab-generic-package] + * A Sem Versioned docker container and uploads to [GitLab Container Registry][gitlab-container-registry]. +* It creates a Sem Versioned [GitLab Release][gitlab-release-help] and Git tag using the [GitLab Release Cli][gitlab-release-cli] and links the generic package as evidence. [gitlab-generic-package]: https://docs.gitlab.com/ee/user/packages/generic_packages/ + [gitlab-nuget-repository]: https://docs.gitlab.com/ee/user/packages/nuget_repository/ + [gitlab-release-cli]: https://gitlab.com/gitlab-org/release-cli/-/tree/master/docs + [gitlab-container-registry]: https://docs.gitlab.com/ee/user/packages/container_registry/ + [guided-exploration-manifesto]: https://gitlab.com/guided-explorations/guided-exploration-concept/-/blob/master/README.md + [readme]: https://gitlab.com/guided-explorations/devops-patterns/utterly-automated-versioning/-/blob/develop/README.md + [utterly-automated-versioning]: https://gitlab.com/guided-explorations/devops-patterns/utterly-automated-versioning/ + [gitlab-release-help]: https://docs.gitlab.com/ee/user/project/releases/ diff --git a/docs/input/docs/reference/build-servers/jenkins.md b/docs/input/docs/reference/build-servers/jenkins.md index 19669ee20f..93eb9cb6ab 100644 --- a/docs/input/docs/reference/build-servers/jenkins.md +++ b/docs/input/docs/reference/build-servers/jenkins.md @@ -31,9 +31,9 @@ To inject the GitVersion variables as environment variables for a build job using [EnvInject][env-inject], do the following: 1. Add an **Execute Windows batch command** build step with _Command_: - `gitversion /output buildserver` + `gitversion /output buildserver` 2. Add an **Inject environment variables** build step and use value - 'gitversion.properties' for the _Properties File Path_ parameter + 'gitversion.properties' for the _Properties File Path_ parameter This assumes GitVersion.exe is available on the command line. @@ -76,4 +76,5 @@ script { ``` [env-inject]: https://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin + [pipeline-utility-steps]: https://plugins.jenkins.io/pipeline-utility-steps diff --git a/docs/input/docs/reference/build-servers/myget.md b/docs/input/docs/reference/build-servers/myget.md index c2d34846c2..895862c2a9 100644 --- a/docs/input/docs/reference/build-servers/myget.md +++ b/docs/input/docs/reference/build-servers/myget.md @@ -9,16 +9,16 @@ MyGet Build Services has built-in support for GitVersion and is encouraging you to leverage GitVersion + GitFlow to produce Semantically Versioned packages. * Create a [custom build script](https://docs.myget.org/docs/reference/custom-build-scripts): - we advise to run a tool like GitVersion in a _pre-build_ script, so that it can - set additional environment variables for the actual build script. MyGet - [by convention](https://docs.myget.org/docs/reference/build-services#Pre-\_and_post-build_steps) - automatically picks up any of the following file names as pre-build script: + we advise to run a tool like GitVersion in a _pre-build_ script, so that it can + set additional environment variables for the actual build script. MyGet + [by convention](https://docs.myget.org/docs/reference/build-services#Pre-_and_post-build_steps) + automatically picks up any of the following file names as pre-build script: * `pre-build.(bat|cmd|ps1)` * `pre-myget.(bat|cmd|ps1)` * Run `GitVersion /output buildserver`: this will cause MyGet Build Services to - set the current `%PackageVersion%` value to the NuGet-compatible SemVer - generated by GitVersion and apply this [MyGet Environment Variable](https://docs.myget.org/docs/reference/build-services#Available_Environment_Variables) - wherever it is used during the build process. + set the current `%PackageVersion%` value to the NuGet-compatible SemVer + generated by GitVersion and apply this [MyGet Environment Variable](https://docs.myget.org/docs/reference/build-services#Available_Environment_Variables) + wherever it is used during the build process. * Ensure the build script has been pushed to your source repository root. Done :) :::{.alert .alert-info} diff --git a/docs/input/docs/reference/build-servers/octopus-deploy.md b/docs/input/docs/reference/build-servers/octopus-deploy.md index bbc38962b4..e7d50ff3e0 100644 --- a/docs/input/docs/reference/build-servers/octopus-deploy.md +++ b/docs/input/docs/reference/build-servers/octopus-deploy.md @@ -53,14 +53,14 @@ manual build in your _build server_ which pushes the package to Octopus deploy. Another simple option is to tag a stable version to release, the basic idea is: 1. GitVersion is set to continuous deployment mode, so main will create `-ci.x` - pre-release builds + pre-release builds 2. CI Builds only create NuGet packages for stable builds 3. You tag main with a stable version of the next version then push it 4. The CI build triggers, GitVersion will always respect tags so you will get a - stable version + stable version 5. The stable package will be pushed to Octopus 6. Because of the tag, then next build will be incremented and will be producing - pre-release packages of the next build + pre-release packages of the next build #### Script to create the release @@ -179,4 +179,5 @@ will burn multiple versions per release. This might not be an issue for you, but can confuse consumers of your library as the version has semantic meaning. [continuous-delivery]: /docs/reference/modes/continuous-delivery + [increment-per-commit]: /docs/reference/version-increments#incrementing-per-commit diff --git a/docs/input/docs/reference/build-servers/teamcity.md b/docs/input/docs/reference/build-servers/teamcity.md index 371bd3106e..60f84f5129 100644 --- a/docs/input/docs/reference/build-servers/teamcity.md +++ b/docs/input/docs/reference/build-servers/teamcity.md @@ -63,22 +63,22 @@ See [dynamic repositories][dynamic-repo] for more info. * We update the TC build number to the GitVersion number automatically * We output the individual values of the GitVersion version variables as build - parameters with format `GitVersion.*` (Eg: `GitVersion.Major`) if you need - access to them in your build script. Being system variables they will be passed - as msbuild/environmental variables to other build steps + parameters with format `GitVersion.*` (Eg: `GitVersion.Major`) if you need + access to them in your build script. Being system variables they will be passed + as msbuild/environmental variables to other build steps ### NuGet in TeamCity * Add a dummy [parameter][parameter] to the project called `GitVersion.NuGetVersion`. If - many of your projects uses git-flow and SemVer you can add the parameter to - the "root-project" (TeamCity 8.x+). You need a dummy param because - GitVersion creates the variables at runtime, and you cannot reference a - parameter which is not available statically. GitVersion will overwrite the - dummy value. + many of your projects uses git-flow and SemVer you can add the parameter to + the "root-project" (TeamCity 8.x+). You need a dummy param because + GitVersion creates the variables at runtime, and you cannot reference a + parameter which is not available statically. GitVersion will overwrite the + dummy value. * Then setup you nuget pack build set the "version" to - `%GitVersion.NuGetVersion%`. + `%GitVersion.NuGetVersion%`. * If you do your pack in a build script then you can just use environmental - variables because teamcity will pass them through automatically. + variables because teamcity will pass them through automatically. ### When TeamCity -> GitHub can't use https @@ -104,8 +104,13 @@ Sorry * [Continuous Delivery Setup in TeamCity][cd] [cd]: https://jake.ginnivan.net/blog/2014/07/09/my-typical-teamcity-build-setup + [dynamic-repo]: /docs/learn/dynamic-repositories + [general-settings]: https://www.jetbrains.com/help/teamcity/git.html#General+Settings + [parameter]: https://confluence.jetbrains.com/display/TCD8/Configuring+Build+Parameters + [teamcity]: https://www.jetbrains.com/teamcity/ + [meta-runner]: https://github.com/JetBrains/meta-runner-power-pack/tree/master/gitversion diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index a377ed692e..6502879d48 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -25,9 +25,9 @@ To see the effective configuration (defaults and overrides), you can run The following supported workflow configurations are available in GitVersion and can be referenced by the workflow property: -- GitFlow (GitFlow/v1) -- GitHubFlow (GitHubFlow/v1) -- TrunkBased (TrunkBased/preview1) +* GitFlow (GitFlow/v1) +* GitHubFlow (GitHubFlow/v1) +* TrunkBased (TrunkBased/preview1) Example of using a `GitHubFlow` workflow with a different `tag-prefix`: @@ -39,7 +39,9 @@ tag-prefix: '[abc]' The built-in configuration for the `GitFlow` workflow (`workflow: GitFlow/v1`) looks like: + + ```yml assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch @@ -209,13 +211,17 @@ tracks-release-branches: false is-release-branch: false is-main-branch: false ``` + snippet source | anchor + The supported built-in configuration for the `GitHubFlow` workflow (`workflow: GitHubFlow/v1`) looks like: + + ```yml assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch @@ -334,13 +340,17 @@ tracks-release-branches: false is-release-branch: false is-main-branch: false ``` + snippet source | anchor + The preview built-in configuration (experimental usage only) for the `TrunkBased` workflow (`workflow: TrunkBased/preview1`) looks like: + + ```yml assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch @@ -444,7 +454,9 @@ tracks-release-branches: false is-release-branch: false is-main-branch: false ``` + snippet source | anchor + The details of the available options are as follows: @@ -638,9 +650,9 @@ merge-message-formats: The regular expression should contain the following capture groups: -- `SourceBranch` - Identifies the source branch of the merge -- `TargetBranch` - Identifies the target branch of the merge -- `PullRequestNumber` - Captures the pull-request number +* `SourceBranch` - Identifies the source branch of the merge +* `TargetBranch` - Identifies the target branch of the merge +* `PullRequestNumber` - Captures the pull-request number Custom merge message formats are evaluated _before_ any built in formats. Support for [Conventional Commits][conventional-commits] can be @@ -768,16 +780,16 @@ Take this commit graph By looking at this graph, you cannot tell which of these scenarios happened: -- feature/foo branches off release/v1.0.0 - - Branch release/v1.0.0 from main - - Branch feature/foo from release/v1.0.0 - - Add a commit to both release/v1.0.0 and feature/foo - - release/v1.0.0 is the base for feature/foo -- release/v1.0.0 branches off feature/foo - - Branch feature/foo from main - - Branch release/v1.0.0 from feature/foo - - Add a commit to both release/v1.0.0 and feature/foo - - feature/foo is the base for release/v1.0.0 +* feature/foo branches off release/v1.0.0 + * Branch release/v1.0.0 from main + * Branch feature/foo from release/v1.0.0 + * Add a commit to both release/v1.0.0 and feature/foo + * release/v1.0.0 is the base for feature/foo +* release/v1.0.0 branches off feature/foo + * Branch feature/foo from main + * Branch release/v1.0.0 from feature/foo + * Add a commit to both release/v1.0.0 and feature/foo + * feature/foo is the base for release/v1.0.0 Or put more simply, you cannot tell which branch was created first, `release/v1.0.0` or `feature/foo`. @@ -941,7 +953,7 @@ Can be `Strict` - using the [regex](https://regex101.com/r/Ly7O1x/3/) or `Loose` the old way of parsing. The default if not specified is `Strict` Example of invalid `Strict`, but valid `Loose` -``` log +```log 1.2-alpha4 01.02.03-rc03 1.2.3.4 @@ -953,19 +965,26 @@ Specifies which version strategy implementation (one or more) will be used to de These strategies can be combined, and the order in which they are specified does not matter. The configuration accepts the following values: -- Fallback -- ConfiguredNextVersion -- MergeMessage -- TaggedCommit -- TrackReleaseBranches -- VersionInBranchName -- Mainline +* Fallback +* ConfiguredNextVersion +* MergeMessage +* TaggedCommit +* TrackReleaseBranches +* VersionInBranchName +* Mainline [1145]: https://github.com/GitTools/GitVersion/issues/1145 + [1366]: https://github.com/GitTools/GitVersion/issues/1366 + [2506]: https://github.com/GitTools/GitVersion/pull/2506#issuecomment-754754037 + [conventional-commits-config]: /docs/reference/version-increments#conventional-commit-messages + [conventional-commits]: https://www.conventionalcommits.org/ + [modes]: /docs/reference/modes + [variables]: /docs/reference/variables + [version-sources]: /docs/reference/version-sources diff --git a/docs/input/docs/reference/mdsource/configuration.source.md b/docs/input/docs/reference/mdsource/configuration.source.md index d913b67c6b..be3500ee72 100644 --- a/docs/input/docs/reference/mdsource/configuration.source.md +++ b/docs/input/docs/reference/mdsource/configuration.source.md @@ -25,9 +25,9 @@ To see the effective configuration (defaults and overrides), you can run The following supported workflow configurations are available in GitVersion and can be referenced by the workflow property: -- GitFlow (GitFlow/v1) -- GitHubFlow (GitHubFlow/v1) -- TrunkBased (TrunkBased/preview1) +* GitFlow (GitFlow/v1) +* GitHubFlow (GitHubFlow/v1) +* TrunkBased (TrunkBased/preview1) Example of using a `GitHubFlow` workflow with a different `tag-prefix`: @@ -239,9 +239,9 @@ merge-message-formats: The regular expression should contain the following capture groups: -- `SourceBranch` - Identifies the source branch of the merge -- `TargetBranch` - Identifies the target branch of the merge -- `PullRequestNumber` - Captures the pull-request number +* `SourceBranch` - Identifies the source branch of the merge +* `TargetBranch` - Identifies the target branch of the merge +* `PullRequestNumber` - Captures the pull-request number Custom merge message formats are evaluated _before_ any built in formats. Support for [Conventional Commits][conventional-commits] can be @@ -369,16 +369,16 @@ Take this commit graph By looking at this graph, you cannot tell which of these scenarios happened: -- feature/foo branches off release/v1.0.0 - - Branch release/v1.0.0 from main - - Branch feature/foo from release/v1.0.0 - - Add a commit to both release/v1.0.0 and feature/foo - - release/v1.0.0 is the base for feature/foo -- release/v1.0.0 branches off feature/foo - - Branch feature/foo from main - - Branch release/v1.0.0 from feature/foo - - Add a commit to both release/v1.0.0 and feature/foo - - feature/foo is the base for release/v1.0.0 +* feature/foo branches off release/v1.0.0 + * Branch release/v1.0.0 from main + * Branch feature/foo from release/v1.0.0 + * Add a commit to both release/v1.0.0 and feature/foo + * release/v1.0.0 is the base for feature/foo +* release/v1.0.0 branches off feature/foo + * Branch feature/foo from main + * Branch release/v1.0.0 from feature/foo + * Add a commit to both release/v1.0.0 and feature/foo + * feature/foo is the base for release/v1.0.0 Or put more simply, you cannot tell which branch was created first, `release/v1.0.0` or `feature/foo`. @@ -542,7 +542,7 @@ Can be `Strict` - using the [regex](https://regex101.com/r/Ly7O1x/3/) or `Loose` the old way of parsing. The default if not specified is `Strict` Example of invalid `Strict`, but valid `Loose` -``` log +```log 1.2-alpha4 01.02.03-rc03 1.2.3.4 @@ -554,19 +554,26 @@ Specifies which version strategy implementation (one or more) will be used to de These strategies can be combined, and the order in which they are specified does not matter. The configuration accepts the following values: -- Fallback -- ConfiguredNextVersion -- MergeMessage -- TaggedCommit -- TrackReleaseBranches -- VersionInBranchName -- Mainline +* Fallback +* ConfiguredNextVersion +* MergeMessage +* TaggedCommit +* TrackReleaseBranches +* VersionInBranchName +* Mainline [1145]: https://github.com/GitTools/GitVersion/issues/1145 + [1366]: https://github.com/GitTools/GitVersion/issues/1366 + [2506]: https://github.com/GitTools/GitVersion/pull/2506#issuecomment-754754037 + [conventional-commits-config]: /docs/reference/version-increments#conventional-commit-messages + [conventional-commits]: https://www.conventionalcommits.org/ + [modes]: /docs/reference/modes + [variables]: /docs/reference/variables + [version-sources]: /docs/reference/version-sources diff --git a/docs/input/docs/reference/modes/continuous-delivery.md b/docs/input/docs/reference/modes/continuous-delivery.md index d1d2a1e712..3b6aa456ae 100644 --- a/docs/input/docs/reference/modes/continuous-delivery.md +++ b/docs/input/docs/reference/modes/continuous-delivery.md @@ -36,5 +36,7 @@ is done as it's an automated process. * [Continuous delivery][wikipedia] [configuration]: /docs/reference/configuration + [blog]: https://www.xavierdecoster.com/semantic-versioning-auto-incremented-nuget-package-versions + [wikipedia]: https://en.wikipedia.org/wiki/Continuous_delivery diff --git a/docs/input/docs/reference/modes/continuous-deployment.md b/docs/input/docs/reference/modes/continuous-deployment.md index 852936e67f..d393f299ec 100644 --- a/docs/input/docs/reference/modes/continuous-deployment.md +++ b/docs/input/docs/reference/modes/continuous-deployment.md @@ -31,4 +31,5 @@ Tags are required in this mode to communicate when the deployement happens on pr * [Semantic Versioning & auto-incremented NuGet package versions][blog] [configuration]: /docs/reference/configuration + [blog]: https://www.xavierdecoster.com/semantic-versioning-auto-incremented-nuget-package-versions diff --git a/docs/input/docs/reference/modes/manual-deployment.md b/docs/input/docs/reference/modes/manual-deployment.md index 9ea3383d94..e76e3e08d0 100644 --- a/docs/input/docs/reference/modes/manual-deployment.md +++ b/docs/input/docs/reference/modes/manual-deployment.md @@ -8,14 +8,14 @@ RedirectFrom: docs/reference/versioning-modes/manual-deployment --- Having not the necessity to deploy the build artifacts on every commit is an -indecation of using the __Manual Deployment__ mode. This mode can be used to +indecation of using the **Manual Deployment** mode. This mode can be used to remain on the same pre-released version until it has been deployed dedicatedly. ## How Manual Deployment affects GitVersion The thing about manual deployment is that there will be _multiple_ candidates to deploy on testing and it is a human choice to deploy. This means that -GitVersion will build __the same semantic version__ until that version is +GitVersion will build **the same semantic version** until that version is deployed. For instance: * 1.1.0-2+1 @@ -33,5 +33,7 @@ an external manual process. * [Continuous Delivery, the book][book] [configuration]: /docs/reference/configuration + [book]: https://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912 + [wikipedia]: https://en.wikipedia.org/wiki/Continuous_delivery diff --git a/docs/input/docs/reference/requirements.md b/docs/input/docs/reference/requirements.md index fd205ea8aa..3d950f4e6f 100644 --- a/docs/input/docs/reference/requirements.md +++ b/docs/input/docs/reference/requirements.md @@ -43,6 +43,9 @@ the case on build servers, the `Git_Branch` environment variable needs to be defined and set to the reference being built. [git-unshallow]: https://git-scm.com/docs/git-fetch#Documentation/git-fetch.txt---unshallow + [gitflow]: /docs/learn/branching-strategies/gitflow + [build-servers]: /docs/reference/build-servers + [configuration]: /docs/reference/configuration diff --git a/docs/input/docs/reference/version-increments.md b/docs/input/docs/reference/version-increments.md index 27cf1d6b33..7dd4f83f82 100644 --- a/docs/input/docs/reference/version-increments.md +++ b/docs/input/docs/reference/version-increments.md @@ -109,9 +109,9 @@ If your CI/CD workflow uses semantic-release's commit-analyzer, change Alternatively, you can override this rule in the [configuration](https://github.com/semantic-release/commit-analyzer/tree/master#usage) -of \@semantic-release/commit-analyzer. If you intend to write rules with +of @semantic-release/commit-analyzer. If you intend to write rules with patterns, note that instead of using Regular Expression, -\@semantic-release/commit-analyzer uses +@semantic-release/commit-analyzer uses [micromatch's glob implementation](https://github.com/micromatch/micromatch#matching-features). ### GitVersion.yml @@ -172,7 +172,11 @@ For more information/background on why we have come to this conclusion, read [Xavier Decoster's blog post on the subject][auto-incremented-nuget-package]. [auto-incremented-nuget-package]: https://www.xavierdecoster.com/semantic-versioning-auto-incremented-nuget-package-versions + [continuous-delivery]: /docs/reference/modes/continuous-delivery + [conventional-commits]: https://www.conventionalcommits.org/ + [faq-branch-name-source]: /docs/learn/faq#merged-branch-names-as-version-source + [git-tagging]: https://git-scm.com/book/en/v2/Git-Basics-Tagging diff --git a/docs/input/docs/reference/version-sources.md b/docs/input/docs/reference/version-sources.md index c12adfd217..dcdae9f82d 100644 --- a/docs/input/docs/reference/version-sources.md +++ b/docs/input/docs/reference/version-sources.md @@ -17,7 +17,7 @@ The logic of GitVersion is something like this: * Calculate the base version (highest version from all the sources) * Increment version if needed based on branch config * Calculate the build metadata (everything after the +) and append to the - calculated version + calculated version ## Version Sources @@ -51,7 +51,7 @@ Will increment: false For the develop branch, i.e. marked with `is-develop: true` * Returns the version number extracted from any child release-branches, i.e. - those marked with `is-release-branch: true` + those marked with `is-release-branch: true` * Returns the version number of any tags on the main branch Will increment: true diff --git a/docs/input/docs/usage/ci.md b/docs/input/docs/usage/ci.md index 95b4106329..6affabd81b 100644 --- a/docs/input/docs/usage/ci.md +++ b/docs/input/docs/usage/ci.md @@ -32,5 +32,7 @@ GitVersion into an Azure DevOps build pipeline. The GitLab CI example [gitlab-sample][] implements GitVersion support at the pipeline level by using a single job that runs the GitVersion container and passes the version number downstream into both _pipeline_ and _job_ level variables. It is also implemented as a reusable CI/CD Extension that can be included in many different projects. [gittools-actions]: https://github.com/marketplace/actions/gittools + [gittools-task]: https://marketplace.visualstudio.com/items?itemName=gittools.gittools + [gitlab-sample]: https://gitlab.com/guided-explorations/devops-patterns/utterly-automated-versioning/ diff --git a/docs/input/docs/usage/cli/assembly-patch.md b/docs/input/docs/usage/cli/assembly-patch.md index ef1a7b2f07..94509e65c8 100644 --- a/docs/input/docs/usage/cli/assembly-patch.md +++ b/docs/input/docs/usage/cli/assembly-patch.md @@ -12,9 +12,9 @@ It will update the following assembly attributes: * `AssemblyVersion` will be set to the `AssemblySemVer` variable. * `AssemblyFileVersion` will be set to the `MajorMinorPatch` variable with an - appended `.0`. + appended `.0`. * `AssemblyInformationalVersion` will be set to the `InformationalVersion` - variable. + variable. Note that contrary to when using the [MSBuild Task][msbuild-task] the attributes must already exist in the `AssemblyInfo.cs` or `AssemblyInfo.vb` @@ -31,9 +31,9 @@ will be generated based on a known template that adds: * `AssemblyVersion` will be set to the `AssemblySemVer` variable. * `AssemblyFileVersion` will be set to the `MajorMinorPatch` variable with an - appended `.0`. + appended `.0`. * `AssemblyInformationalVersion` will be set to the `InformationalVersion` - variable. + variable. This can be done for \*.cs, \*.vb and \*.fs files. @@ -81,4 +81,5 @@ To support integration with WiX projects, use `GitVersion.exe referenced in the WiX project files. [msbuild-task]: /docs/usage/msbuild + [variables]: /docs/reference/variables diff --git a/docs/input/docs/usage/cli/installation.md b/docs/input/docs/usage/cli/installation.md index 3699db9447..c6cd3e4e0d 100644 --- a/docs/input/docs/usage/cli/installation.md +++ b/docs/input/docs/usage/cli/installation.md @@ -83,8 +83,13 @@ This should work on all operating systems supported by Docker (at the time of writing: Linux, macOS, Windows). [dotnet-tool]: https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools#install-a-global-tool + [tool]: https://www.nuget.org/packages/GitVersion.Tool/ + [brew]: https://formulae.brew.sh/formula/gitversion + [homebrew]: https://brew.sh/ + [docker]: https://hub.docker.com/r/gittools/gitversion + [choco]: https://chocolatey.org/packages/GitVersion.Portable diff --git a/docs/input/docs/usage/msbuild.md b/docs/input/docs/usage/msbuild.md index badf8b99a6..1c9c588be8 100644 --- a/docs/input/docs/usage/msbuild.md +++ b/docs/input/docs/usage/msbuild.md @@ -92,7 +92,7 @@ Now, when you build: * `AssemblyVersion` will be set to the `AssemblySemVer` variable. * `AssemblyFileVersion` will be set to the `MajorMinorPatch` variable with `.0` - appended to it. + appended to it. * `AssemblyInformationalVersion` will be set to the `InformationalVersion` variable. #### Other injected Variables diff --git a/docs/readme.md b/docs/readme.md index a4ab0556a0..8898e0691b 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -53,6 +53,9 @@ a local web server. Information about the URL that can be used to view the docs will be shown in the output. Copy/paste this URL into a browser window. [gitversion.net]: https://gitversion.net/ + [forking]: https://guides.github.com/activities/forking/ + [ps-mac]: https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-7.1 + [ps-linux]: https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-7.1 diff --git a/package-lock.json b/package-lock.json index 5ee552e795..5275b79602 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,6 @@ "remark-lint-list-item-content-indent": "^4.0.0", "remark-lint-list-item-indent": "^4.0.0", "remark-lint-maximum-heading-length": "^4.0.0", - "remark-lint-no-auto-link-without-protocol": "^4.0.0", "remark-lint-no-blockquote-without-marker": "^6.0.0", "remark-lint-no-consecutive-blank-lines": "^5.0.0", "remark-lint-no-dead-urls": "^2.0.0", @@ -50,7 +49,6 @@ "remark-lint-no-heading-content-indent": "^5.0.0", "remark-lint-no-heading-indent": "^5.0.0", "remark-lint-no-heading-like-paragraph": "^4.0.0", - "remark-lint-no-inline-padding": "^5.0.0", "remark-lint-no-literal-urls": "^4.0.0", "remark-lint-no-multiple-toplevel-headings": "^4.0.0", "remark-lint-no-reference-like-url": "^4.0.0", @@ -9086,13 +9084,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-auto-link-without-protocol": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-4.0.0.tgz", - "integrity": "sha512-m9P2KgLxblySJ/0bI3MSsDYv3Bem7Ynz5P0OVAJlGvHra/YQyszyd6U/oUavTbel+8sPPymHtNAUTkiDLobn4A==", - "deprecated": "Deprecated", - "dev": true - }, "node_modules/remark-lint-no-blockquote-without-marker": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-6.0.0.tgz", @@ -11295,13 +11286,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-lint-no-inline-padding": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-5.0.0.tgz", - "integrity": "sha512-d88MYpPv4SAWUBmB6QS6gU4vgg5y66IesjijwQT0yg4HwENcO5IbMLs3WDqo6w53DOQPqw+MmDRszP9XaEePIw==", - "deprecated": "Deprecated", - "dev": true - }, "node_modules/remark-lint-no-literal-urls": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-4.0.0.tgz", @@ -23462,12 +23446,6 @@ } } }, - "remark-lint-no-auto-link-without-protocol": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-4.0.0.tgz", - "integrity": "sha512-m9P2KgLxblySJ/0bI3MSsDYv3Bem7Ynz5P0OVAJlGvHra/YQyszyd6U/oUavTbel+8sPPymHtNAUTkiDLobn4A==", - "dev": true - }, "remark-lint-no-blockquote-without-marker": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-6.0.0.tgz", @@ -25192,12 +25170,6 @@ } } }, - "remark-lint-no-inline-padding": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-5.0.0.tgz", - "integrity": "sha512-d88MYpPv4SAWUBmB6QS6gU4vgg5y66IesjijwQT0yg4HwENcO5IbMLs3WDqo6w53DOQPqw+MmDRszP9XaEePIw==", - "dev": true - }, "remark-lint-no-literal-urls": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-4.0.0.tgz", diff --git a/package.json b/package.json index 006ce70883..21159eacab 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,6 @@ "remark-lint-list-item-content-indent": "^4.0.0", "remark-lint-list-item-indent": "^4.0.0", "remark-lint-maximum-heading-length": "^4.0.0", - "remark-lint-no-auto-link-without-protocol": "^4.0.0", "remark-lint-no-blockquote-without-marker": "^6.0.0", "remark-lint-no-consecutive-blank-lines": "^5.0.0", "remark-lint-no-dead-urls": "^2.0.0", @@ -71,7 +70,6 @@ "remark-lint-no-heading-content-indent": "^5.0.0", "remark-lint-no-heading-indent": "^5.0.0", "remark-lint-no-heading-like-paragraph": "^4.0.0", - "remark-lint-no-inline-padding": "^5.0.0", "remark-lint-no-literal-urls": "^4.0.0", "remark-lint-no-multiple-toplevel-headings": "^4.0.0", "remark-lint-no-reference-like-url": "^4.0.0", From fd5a149c293516537ef46a317bc5adb5ef0254bd Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 15 Oct 2024 13:37:32 +0000 Subject: [PATCH 241/544] Docs changes --- docs/input/docs/reference/configuration.md | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index 6502879d48..9f7354f2ce 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -39,9 +39,7 @@ tag-prefix: '[abc]' The built-in configuration for the `GitFlow` workflow (`workflow: GitFlow/v1`) looks like: - - ```yml assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch @@ -211,17 +209,13 @@ tracks-release-branches: false is-release-branch: false is-main-branch: false ``` - snippet source | anchor - The supported built-in configuration for the `GitHubFlow` workflow (`workflow: GitHubFlow/v1`) looks like: - - ```yml assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch @@ -340,17 +334,13 @@ tracks-release-branches: false is-release-branch: false is-main-branch: false ``` - snippet source | anchor - The preview built-in configuration (experimental usage only) for the `TrunkBased` workflow (`workflow: TrunkBased/preview1`) looks like: - - ```yml assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch @@ -454,9 +444,7 @@ tracks-release-branches: false is-release-branch: false is-main-branch: false ``` - snippet source | anchor - The details of the available options are as follows: From 83c5aba2b2e7073abcf5f90b08cce14a8cdd84dc Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 15 Oct 2024 18:30:10 +0200 Subject: [PATCH 242/544] use global.json with sdk 9.0.100-rc.2.24474.11 --- .github/actions/artifacts-restore/action.yml | 2 +- .github/workflows/codeql-analysis.yml | 1 - global.json | 3 ++- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/actions/artifacts-restore/action.yml b/.github/actions/artifacts-restore/action.yml index 99be5e4897..88338f425c 100644 --- a/.github/actions/artifacts-restore/action.yml +++ b/.github/actions/artifacts-restore/action.yml @@ -22,4 +22,4 @@ runs: name: Setup .NET SDK uses: actions/setup-dotnet@v4 with: - global-json-file: global.json + global-json-file: global.json \ No newline at end of file diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 0597068156..b05b693cd2 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -71,7 +71,6 @@ jobs: uses: actions/setup-dotnet@v4 with: global-json-file: global.json - - name: '[Prepare]' if: steps.cache-cake.outputs.cache-hit != 'true' diff --git a/global.json b/global.json index d0ef4f8df2..0d09a52257 100644 --- a/global.json +++ b/global.json @@ -5,6 +5,7 @@ "src" ], "sdk": { - "version": "8.0.402" + "version": "9.0.100-rc.2.24474.11", + "allowPrerelease": true } } From 432a6720497252d7e4a4bdc7a4faf7891729165e Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 15 Oct 2024 19:39:23 +0200 Subject: [PATCH 243/544] (deps): Bump MSBuild.ProjectCreation to 13.0.0 see https://github.com/jeffkl/MSBuildProjectCreator/releases/tag/v13.0.0 --- src/Directory.Packages.props | 5 ++++- src/GitVersion.Configuration/GitVersion.Configuration.csproj | 1 - src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj | 4 ++++ src/GitVersion.Output/GitVersion.Output.csproj | 4 ---- src/GitVersion.Schema/GitVersion.Schema.csproj | 1 + 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 8b618a13de..ceca4cc776 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -13,6 +13,7 @@ + @@ -20,7 +21,7 @@ - + @@ -35,6 +36,8 @@ + + diff --git a/src/GitVersion.Configuration/GitVersion.Configuration.csproj b/src/GitVersion.Configuration/GitVersion.Configuration.csproj index 75a9ad34e1..f4a84de083 100644 --- a/src/GitVersion.Configuration/GitVersion.Configuration.csproj +++ b/src/GitVersion.Configuration/GitVersion.Configuration.csproj @@ -9,7 +9,6 @@ - diff --git a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj index f709d21896..b7677e977d 100644 --- a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj +++ b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj @@ -10,7 +10,11 @@ + + + + diff --git a/src/GitVersion.Output/GitVersion.Output.csproj b/src/GitVersion.Output/GitVersion.Output.csproj index 8b771aa5b5..179b5e8198 100644 --- a/src/GitVersion.Output/GitVersion.Output.csproj +++ b/src/GitVersion.Output/GitVersion.Output.csproj @@ -7,10 +7,6 @@ - - - - diff --git a/src/GitVersion.Schema/GitVersion.Schema.csproj b/src/GitVersion.Schema/GitVersion.Schema.csproj index db01045451..beef892b98 100644 --- a/src/GitVersion.Schema/GitVersion.Schema.csproj +++ b/src/GitVersion.Schema/GitVersion.Schema.csproj @@ -6,6 +6,7 @@ + From dba9244e7a312a0649c2339bc8e8936e2ecaee38 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 15 Oct 2024 23:00:30 +0200 Subject: [PATCH 244/544] (build) use macos-15 for build --- .github/workflows/_build.yml | 4 ++-- .github/workflows/_prepare.yml | 2 +- .github/workflows/_unit_tests.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/_build.yml b/.github/workflows/_build.yml index f3cfe1411a..dc57215083 100644 --- a/.github/workflows/_build.yml +++ b/.github/workflows/_build.yml @@ -11,7 +11,7 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-latest, ubuntu-latest, macos-13, macos-14] + os: [windows-latest, ubuntu-latest, macos-15] runs-on: ${{ matrix.os }} steps: @@ -44,7 +44,7 @@ jobs: - name: 'Upload native packages' uses: actions/upload-artifact@v4 - if: matrix.os != 'windows-latest' && matrix.os != 'macos-13' + if: matrix.os != 'windows-latest' with: name: native-${{ runner.os }} path: ${{ github.workspace }}/artifacts/packages/native/*.tar.gz diff --git a/.github/workflows/_prepare.yml b/.github/workflows/_prepare.yml index 9f70c547f7..0195ffdb25 100644 --- a/.github/workflows/_prepare.yml +++ b/.github/workflows/_prepare.yml @@ -7,7 +7,7 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-latest, ubuntu-latest, macos-13, macos-14] + os: [windows-latest, ubuntu-latest, macos-15] runs-on: ${{ matrix.os }} steps: diff --git a/.github/workflows/_unit_tests.yml b/.github/workflows/_unit_tests.yml index 165c19d078..03b45d14e5 100644 --- a/.github/workflows/_unit_tests.yml +++ b/.github/workflows/_unit_tests.yml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-latest, ubuntu-latest, macos-13, macos-14] + os: [windows-latest, ubuntu-latest, macos-15] targetFramework: [ '8.0', '6.0' ] runs-on: ${{ matrix.os }} From 03972ee9902447ead500d4d5316f3fa1da40d43e Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 16 Oct 2024 19:37:22 +0200 Subject: [PATCH 245/544] (build) add actions/attest-build-provenance --- .github/actions/artifacts-attest/action.yml | 13 ++++++ .github/actions/artifacts-restore/action.yml | 31 +++++++------ .github/actions/cache-restore/action.yml | 25 +++++++++++ .github/workflows/_artifacts_linux.yml | 4 +- .github/workflows/_artifacts_windows.yml | 2 +- .github/workflows/_build.yml | 2 +- .github/workflows/_docker.yml | 2 +- .github/workflows/_docker_manifests.yml | 2 +- .github/workflows/_publish.yml | 4 +- .github/workflows/_unit_tests.yml | 2 +- .github/workflows/ci.yml | 25 ++++------- .github/workflows/docs.yml | 4 +- build/CI.sln | 46 +++++++++++++++----- 13 files changed, 110 insertions(+), 52 deletions(-) create mode 100644 .github/actions/artifacts-attest/action.yml create mode 100644 .github/actions/cache-restore/action.yml diff --git a/.github/actions/artifacts-attest/action.yml b/.github/actions/artifacts-attest/action.yml new file mode 100644 index 0000000000..a1d424e510 --- /dev/null +++ b/.github/actions/artifacts-attest/action.yml @@ -0,0 +1,13 @@ +name: 'Artifacts attestation' +description: 'Artifacts attestation' + +runs: + using: 'composite' + steps: + - + name: 'Attestation' + uses: actions/attest-build-provenance@v1 + with: + subject-path: | + ${{ github.workspace }}/artifacts/packages/native + ${{ github.workspace }}/artifacts/packages/nuget \ No newline at end of file diff --git a/.github/actions/artifacts-restore/action.yml b/.github/actions/artifacts-restore/action.yml index 88338f425c..acca453639 100644 --- a/.github/actions/artifacts-restore/action.yml +++ b/.github/actions/artifacts-restore/action.yml @@ -5,21 +5,26 @@ runs: using: 'composite' steps: - - name: Use cached cake frosting - id: cache-cake - uses: actions/cache@v4 + uses: actions/download-artifact@v4 + name: Download native linux packages with: - path: run - key: run-${{ runner.os }}-${{ hashFiles('./build/**') }} + name: native-Linux + path: ${{ github.workspace }}/artifacts/packages/native - - name: Use cached tools - id: cache-tools - uses: actions/cache@v4 + uses: actions/download-artifact@v4 + name: Download native windows packages with: - path: tools - key: tools-${{ runner.os }}-${{ hashFiles('./build/**') }} + name: native-Windows + path: ${{ github.workspace }}/artifacts/packages/native - - name: Setup .NET SDK - uses: actions/setup-dotnet@v4 + uses: actions/download-artifact@v4 + name: Download native macos packages with: - global-json-file: global.json \ No newline at end of file + name: native-macOS + path: ${{ github.workspace }}/artifacts/packages/native + - + uses: actions/download-artifact@v4 + name: Download nuget packages + with: + name: nuget + path: ${{ github.workspace }}/artifacts/packages/nuget \ No newline at end of file diff --git a/.github/actions/cache-restore/action.yml b/.github/actions/cache-restore/action.yml new file mode 100644 index 0000000000..3a3487843b --- /dev/null +++ b/.github/actions/cache-restore/action.yml @@ -0,0 +1,25 @@ +name: 'Cache restore' +description: 'Cache restore' + +runs: + using: 'composite' + steps: + - + name: Use cached cake frosting + id: cache-cake + uses: actions/cache@v4 + with: + path: run + key: run-${{ runner.os }}-${{ hashFiles('./build/**') }} + - + name: Use cached tools + id: cache-tools + uses: actions/cache@v4 + with: + path: tools + key: tools-${{ runner.os }}-${{ hashFiles('./build/**') }} + - + name: Setup .NET SDK + uses: actions/setup-dotnet@v4 + with: + global-json-file: global.json \ No newline at end of file diff --git a/.github/workflows/_artifacts_linux.yml b/.github/workflows/_artifacts_linux.yml index 86e13a9256..5d6bcd5454 100644 --- a/.github/workflows/_artifacts_linux.yml +++ b/.github/workflows/_artifacts_linux.yml @@ -37,7 +37,7 @@ jobs: fetch-depth: 0 - name: Restore State - uses: ./.github/actions/artifacts-restore + uses: ./.github/actions/cache-restore - uses: actions/download-artifact@v4 name: Download nuget packages @@ -48,7 +48,7 @@ jobs: uses: actions/download-artifact@v4 name: Download native packages with: - name: native-${{ runner.os }} + name: native-Linux path: ${{ github.workspace }}/artifacts/packages/native - name: '[Test Artifacts]' diff --git a/.github/workflows/_artifacts_windows.yml b/.github/workflows/_artifacts_windows.yml index 0f569701a5..6c1832961e 100644 --- a/.github/workflows/_artifacts_windows.yml +++ b/.github/workflows/_artifacts_windows.yml @@ -22,7 +22,7 @@ jobs: fetch-depth: 0 - name: Restore State - uses: ./.github/actions/artifacts-restore + uses: ./.github/actions/cache-restore - uses: actions/download-artifact@v4 name: Download nuget packages diff --git a/.github/workflows/_build.yml b/.github/workflows/_build.yml index dc57215083..75ed54e3c2 100644 --- a/.github/workflows/_build.yml +++ b/.github/workflows/_build.yml @@ -22,7 +22,7 @@ jobs: fetch-depth: 0 - name: Restore State - uses: ./.github/actions/artifacts-restore + uses: ./.github/actions/cache-restore - name: '[Build]' shell: pwsh diff --git a/.github/workflows/_docker.yml b/.github/workflows/_docker.yml index edecf7f857..c502782848 100644 --- a/.github/workflows/_docker.yml +++ b/.github/workflows/_docker.yml @@ -37,7 +37,7 @@ jobs: fetch-depth: 0 - name: Restore State - uses: ./.github/actions/artifacts-restore + uses: ./.github/actions/cache-restore - uses: actions/download-artifact@v4 name: Download nuget packages diff --git a/.github/workflows/_docker_manifests.yml b/.github/workflows/_docker_manifests.yml index 0049c2438f..be38bf1bf5 100644 --- a/.github/workflows/_docker_manifests.yml +++ b/.github/workflows/_docker_manifests.yml @@ -30,7 +30,7 @@ jobs: fetch-depth: 0 - name: Restore State - uses: ./.github/actions/artifacts-restore + uses: ./.github/actions/cache-restore - name: Set up Docker uses: crazy-max/ghaction-setup-docker@v3 diff --git a/.github/workflows/_publish.yml b/.github/workflows/_publish.yml index ce6157faef..d9aec579e7 100644 --- a/.github/workflows/_publish.yml +++ b/.github/workflows/_publish.yml @@ -26,7 +26,7 @@ jobs: fetch-depth: 0 - name: Restore State - uses: ./.github/actions/artifacts-restore + uses: ./.github/actions/cache-restore - uses: actions/download-artifact@v4 name: Download nuget packages @@ -36,4 +36,4 @@ jobs: - name: '[Publish]' shell: pwsh - run: dotnet run/publish.dll --target=Publish${{ matrix.taskName }} + run: dotnet run/publish.dll --target=Publish${{ matrix.taskName }} \ No newline at end of file diff --git a/.github/workflows/_unit_tests.yml b/.github/workflows/_unit_tests.yml index 03b45d14e5..b59c395694 100644 --- a/.github/workflows/_unit_tests.yml +++ b/.github/workflows/_unit_tests.yml @@ -25,7 +25,7 @@ jobs: fetch-depth: 0 - name: Restore State - uses: ./.github/actions/artifacts-restore + uses: ./.github/actions/cache-restore - name: '[Unit Test]' shell: pwsh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a85688e8db..ae4576d4db 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,8 +34,10 @@ env: ENABLED_DIAGNOSTICS: ${{ secrets.ENABLED_DIAGNOSTICS }} permissions: + id-token: write contents: read packages: write + attestations: write jobs: prepare: @@ -118,25 +120,14 @@ jobs: fetch-depth: 0 - name: Restore State - uses: ./.github/actions/artifacts-restore - - - uses: actions/download-artifact@v4 - name: Download native linux packages - with: - name: native-Linux - path: ${{ github.workspace }}/artifacts/packages/native + uses: ./.github/actions/cache-restore - - uses: actions/download-artifact@v4 - name: Download native windows packages - with: - name: native-Windows - path: ${{ github.workspace }}/artifacts/packages/native + name: Restore Artifacts + uses: ./.github/actions/artifacts-restore - - uses: actions/download-artifact@v4 - name: Download native macos packages - with: - name: native-macOS - path: ${{ github.workspace }}/artifacts/packages/native + name: Attetstation + if: ${{ github.event_name == 'repository_dispatch' }} + uses: ./.github/actions/artifacts-attest - name: '[Release]' shell: pwsh diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index bc3fb3b7aa..9f4d8ed7ad 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -100,7 +100,7 @@ jobs: fetch-depth: 0 - name: Restore State - uses: ./.github/actions/artifacts-restore + uses: ./.github/actions/cache-restore - name: '[Build Documentation]' shell: pwsh @@ -139,7 +139,7 @@ jobs: fetch-depth: 0 - name: Restore State - uses: ./.github/actions/artifacts-restore + uses: ./.github/actions/cache-restore - name: '[Build Schemas]' shell: pwsh diff --git a/build/CI.sln b/build/CI.sln index f0edfb151e..fd9518e7a0 100644 --- a/build/CI.sln +++ b/build/CI.sln @@ -7,11 +7,6 @@ ProjectSection(SolutionItems) = preProject ..\.gitignore = ..\.gitignore ..\.config\dotnet-tools.json = ..\.config\dotnet-tools.json ..\package.json = ..\package.json - - - - - ..\.remarkrc.yaml = ..\.remarkrc.yaml EndProjectSection EndProject @@ -54,12 +49,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{ EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "actions", "actions", "{A9B92261-AB9C-47D6-A8A7-616A5A62B063}" - ProjectSection(SolutionItems) = preProject - ..\.github\actions\artifacts-restore\action.yml = ..\.github\actions\artifacts-restore\action.yml - ..\.github\actions\docker-manifests\action.yml = ..\.github\actions\docker-manifests\action.yml - ..\.github\actions\docker-publish\action.yml = ..\.github\actions\docker-publish\action.yml - ..\.github\actions\docker-test\action.yml = ..\.github\actions\docker-test\action.yml - EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{960DC223-117E-41DE-8A89-C85E3D69A8E8}" ProjectSection(SolutionItems) = preProject @@ -68,6 +57,33 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{960D ..\tests\scripts\test-native-tool.sh = ..\tests\scripts\test-native-tool.sh EndProjectSection EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "cache-restore", "cache-restore", "{6B2EAF4B-81AF-44F8-8578-1B051C8AAA26}" + ProjectSection(SolutionItems) = preProject + ..\.github\actions\cache-restore\action.yml = ..\.github\actions\cache-restore\action.yml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docker-manifests", "docker-manifests", "{9F17919E-097F-4696-AB9C-20036F7F5E1D}" + ProjectSection(SolutionItems) = preProject + ..\.github\actions\docker-manifests\action.yml = ..\.github\actions\docker-manifests\action.yml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docker-publish", "docker-publish", "{EEB7B107-B408-4C4B-886D-7728EC692CBD}" + ProjectSection(SolutionItems) = preProject + ..\.github\actions\docker-publish\action.yml = ..\.github\actions\docker-publish\action.yml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docker-test", "docker-test", "{965AC311-8A65-4AEB-B11F-3E4EBDFFBB8F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "artifacts-restore", "artifacts-restore", "{FF815E24-AE9E-49E5-BC93-F859450F9CD0}" + ProjectSection(SolutionItems) = preProject + ..\.github\actions\artifacts-restore\action.yml = ..\.github\actions\artifacts-restore\action.yml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "artifacts-attest", "artifacts-attest", "{C4A801B1-45B1-4D2E-8911-4823778BF582}" + ProjectSection(SolutionItems) = preProject + ..\.github\actions\artifacts-attest\action.yml = ..\.github\actions\artifacts-attest\action.yml + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -107,4 +123,12 @@ Global {8DAB65D8-57E8-4185-96FC-8A7C7373FC23}.Release|Any CPU.ActiveCfg = Release|Any CPU {8DAB65D8-57E8-4185-96FC-8A7C7373FC23}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {6B2EAF4B-81AF-44F8-8578-1B051C8AAA26} = {A9B92261-AB9C-47D6-A8A7-616A5A62B063} + {9F17919E-097F-4696-AB9C-20036F7F5E1D} = {A9B92261-AB9C-47D6-A8A7-616A5A62B063} + {EEB7B107-B408-4C4B-886D-7728EC692CBD} = {A9B92261-AB9C-47D6-A8A7-616A5A62B063} + {965AC311-8A65-4AEB-B11F-3E4EBDFFBB8F} = {A9B92261-AB9C-47D6-A8A7-616A5A62B063} + {FF815E24-AE9E-49E5-BC93-F859450F9CD0} = {A9B92261-AB9C-47D6-A8A7-616A5A62B063} + {C4A801B1-45B1-4D2E-8911-4823778BF582} = {A9B92261-AB9C-47D6-A8A7-616A5A62B063} + EndGlobalSection EndGlobal From c6ecf8ec00dfb5ab76f1bfe5af50353c73efb142 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Oct 2024 15:38:38 +0000 Subject: [PATCH 246/544] (deps): Bump System.CommandLine Bumps the microsoft group with 1 update in the /new-cli directory: [System.CommandLine](https://github.com/dotnet/command-line-api). Updates `System.CommandLine` from 2.0.0-beta4.24324.3 to 2.0.0-beta4.24517.1 - [Release notes](https://github.com/dotnet/command-line-api/releases) - [Changelog](https://github.com/dotnet/command-line-api/blob/main/docs/History.md) - [Commits](https://github.com/dotnet/command-line-api/commits) --- updated-dependencies: - dependency-name: System.CommandLine dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 53558d9f90..0863b02b0e 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -20,7 +20,7 @@ - + \ No newline at end of file From 3ea1fb30c17229f8e568da7b4db8c9b97468be9d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 24 Oct 2024 15:34:06 +0000 Subject: [PATCH 247/544] (deps): Bump Cake.Frosting from 4.0.0 to 4.2.0 in /build Bumps [Cake.Frosting](https://github.com/cake-build/cake) from 4.0.0 to 4.2.0. - [Release notes](https://github.com/cake-build/cake/releases) - [Changelog](https://github.com/cake-build/cake/blob/develop/ReleaseNotes.md) - [Commits](https://github.com/cake-build/cake/compare/v4.0.0...v4.2.0) --- updated-dependencies: - dependency-name: Cake.Frosting dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- build/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Directory.Packages.props b/build/Directory.Packages.props index 6cf9bc0619..878f537db9 100644 --- a/build/Directory.Packages.props +++ b/build/Directory.Packages.props @@ -6,7 +6,7 @@ - + From 8d8be6440a07748b139a69327b9472639c2b18e6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 15:56:29 +0000 Subject: [PATCH 248/544] (deps): Bump System.CommandLine Bumps the microsoft group with 1 update in the /new-cli directory: [System.CommandLine](https://github.com/dotnet/command-line-api). Updates `System.CommandLine` from 2.0.0-beta4.24517.1 to 2.0.0-beta4.24528.1 - [Release notes](https://github.com/dotnet/command-line-api/releases) - [Changelog](https://github.com/dotnet/command-line-api/blob/main/docs/History.md) - [Commits](https://github.com/dotnet/command-line-api/commits) --- updated-dependencies: - dependency-name: System.CommandLine dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 0863b02b0e..8a7e6d1fe4 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -20,7 +20,7 @@ - + \ No newline at end of file From 522c52ffc64c4f75011ae45b348f05530c683ff3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 16:03:59 +0000 Subject: [PATCH 249/544] (deps): Bump the analyzers group across 2 directories with 2 updates Bumps the analyzers group with 2 updates in the /new-cli directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Bumps the analyzers group with 2 updates in the /src directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Updates `Roslynator.Analyzers` from 4.12.8 to 4.12.9 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.8...v4.12.9) Updates `Roslynator.Formatting.Analyzers` from 4.12.8 to 4.12.9 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.8...v4.12.9) Updates `Roslynator.Analyzers` from 4.12.8 to 4.12.9 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.8...v4.12.9) Updates `Roslynator.Formatting.Analyzers` from 4.12.8 to 4.12.9 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.8...v4.12.9) --- updated-dependencies: - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 4 ++-- src/Directory.Packages.props | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 0863b02b0e..2cc93aee87 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -12,8 +12,8 @@ - - + + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index ceca4cc776..dfb08bec98 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -15,8 +15,8 @@ - - + + From 77a67ab3af127679911a30e4d9c9134ad54c42c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 16:07:11 +0000 Subject: [PATCH 250/544] (deps): Bump NSubstitute from 5.1.0 to 5.3.0 in /src Bumps [NSubstitute](https://github.com/nsubstitute/NSubstitute) from 5.1.0 to 5.3.0. - [Release notes](https://github.com/nsubstitute/NSubstitute/releases) - [Changelog](https://github.com/nsubstitute/NSubstitute/blob/main/CHANGELOG.md) - [Commits](https://github.com/nsubstitute/NSubstitute/compare/v5.1.0...v5.3.0) --- updated-dependencies: - dependency-name: NSubstitute dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index dfb08bec98..33fa2cc0cf 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -31,7 +31,7 @@ - + From f627d76aa293e4ffe5cbdaf64b4c28673961ee06 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 29 Oct 2024 13:43:45 +0100 Subject: [PATCH 251/544] (build) use dotnet_version and docker_distro --- .github/actions/docker-manifests/action.yml | 8 ++++---- .github/actions/docker-publish/action.yml | 8 ++++---- .github/actions/docker-test/action.yml | 8 ++++---- .github/workflows/_artifacts_linux.yml | 8 ++++---- .github/workflows/_docker.yml | 14 ++++++------- .github/workflows/_docker_manifests.yml | 10 +++++----- .github/workflows/_unit_tests.yml | 8 ++++---- build/.run/Artifacts DotnetTool Test.run.xml | 2 +- build/.run/Artifacts MsBuildCore Test.run.xml | 2 +- build/.run/Artifacts Native Test.run.xml | 2 +- build/.run/Artifacts Prepare.run.xml | 2 +- build/.run/Artifacts Test.run.xml | 2 +- build/.run/Clean.run.xml | 2 +- ... Chores.run.xml => Default Config.run.xml} | 8 ++++---- build/.run/Docker Build.run.xml | 2 +- build/.run/Docker Manifest.run.xml | 2 +- build/.run/Docker Publish.run.xml | 2 +- build/.run/Docker Test.run.xml | 2 +- build/.run/DockerMatrix.run.xml | 20 +++++++++++++++++++ build/.run/PublishCoverage.run.xml | 2 +- build/.run/TestMatrix.run.xml | 20 +++++++++++++++++++ build/.run/UnitTest (6.0).run.xml | 2 +- build/.run/UnitTest (8.0).run.xml | 2 +- build/artifacts/BuildLifetime.cs | 6 +++--- .../Tasks/ArtifactsMsBuildFullTest.cs | 2 +- build/build/Tasks/Test/UnitTest.cs | 12 +++++------ build/common/Utilities/Arguments.cs | 3 +-- build/common/Utilities/Constants.cs | 4 ++-- .../Utilities/TaskArgumentsAttribute.cs | 6 +++--- build/docker/BuildLifetime.cs | 6 +++--- 30 files changed, 108 insertions(+), 69 deletions(-) rename build/.run/{Default Chores.run.xml => Default Config.run.xml} (75%) create mode 100644 build/.run/DockerMatrix.run.xml create mode 100644 build/.run/TestMatrix.run.xml diff --git a/.github/actions/docker-manifests/action.yml b/.github/actions/docker-manifests/action.yml index 9c9a78ef9b..7bf0945382 100644 --- a/.github/actions/docker-manifests/action.yml +++ b/.github/actions/docker-manifests/action.yml @@ -1,10 +1,10 @@ name: 'Docker Manifests' description: 'Docker Publish Manifests' inputs: - distro: + dockerDistro: description: 'Linux Distro' required: true - targetFramework: + dotnetVersion: description: '.net version' required: true docker_registry_username: @@ -32,7 +32,7 @@ runs: - name: '[Docker Publish Manifests] DockerHub' shell: pwsh - run: dotnet run/docker.dll --target=DockerManifest --arch=amd64 --arch=arm64 --docker_dotnetversion=${{ inputs.targetFramework }} --docker_distro=${{ inputs.distro }} --docker_registry dockerhub + run: dotnet run/docker.dll --target=DockerManifest --arch=amd64 --arch=arm64 --dotnet_version=${{ inputs.dotnetVersion }} --docker_distro=${{ inputs.dockerDistro }} --docker_registry dockerhub - name: Login to GitHub uses: docker/login-action@v3 @@ -43,4 +43,4 @@ runs: - name: '[Docker Publish Manifests] GitHub' shell: pwsh - run: dotnet run/docker.dll --target=DockerManifest --arch=amd64 --arch=arm64 --docker_dotnetversion=${{ inputs.targetFramework }} --docker_distro=${{ inputs.distro }} --docker_registry github + run: dotnet run/docker.dll --target=DockerManifest --arch=amd64 --arch=arm64 --dotnet_version=${{ inputs.dotnetVersion }} --docker_distro=${{ inputs.dockerDistro }} --docker_registry github diff --git a/.github/actions/docker-publish/action.yml b/.github/actions/docker-publish/action.yml index feff913274..d65fbe5aee 100644 --- a/.github/actions/docker-publish/action.yml +++ b/.github/actions/docker-publish/action.yml @@ -4,10 +4,10 @@ inputs: arch: description: 'Docker architecture' required: true - distro: + dockerDistro: description: 'Linux Distro' required: true - targetFramework: + dotnetVersion: description: '.net version' required: true docker_registry_username: @@ -35,7 +35,7 @@ runs: - name: '[Docker Publish] DockerHub' shell: pwsh - run: dotnet run/docker.dll --target=DockerPublish --arch=${{ inputs.arch }} --docker_dotnetversion=${{ inputs.targetFramework }} --docker_distro=${{ inputs.distro }} --docker_registry dockerhub --verbosity=diagnostic + run: dotnet run/docker.dll --target=DockerPublish --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnetVersion }} --docker_distro=${{ inputs.dockerDistro }} --docker_registry dockerhub --verbosity=diagnostic - name: Login to GitHub uses: docker/login-action@v3 @@ -46,4 +46,4 @@ runs: - name: '[Docker Publish] GitHub' shell: pwsh - run: dotnet run/docker.dll --target=DockerPublish --arch=${{ inputs.arch }} --docker_dotnetversion=${{ inputs.targetFramework }} --docker_distro=${{ inputs.distro }} --docker_registry github --verbosity=diagnostic + run: dotnet run/docker.dll --target=DockerPublish --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnetVersion }} --docker_distro=${{ inputs.dockerDistro }} --docker_registry github --verbosity=diagnostic diff --git a/.github/actions/docker-test/action.yml b/.github/actions/docker-test/action.yml index 943bc4c75b..7e450d2d8e 100644 --- a/.github/actions/docker-test/action.yml +++ b/.github/actions/docker-test/action.yml @@ -4,10 +4,10 @@ inputs: arch: description: 'Docker architecture' default: 'amd64' - distro: + dockerDistro: description: 'Linux Distro' default: 'debian.12' - targetFramework: + dotnetVersion: description: '.net version' default: '8.0' @@ -17,8 +17,8 @@ runs: - name: '[Docker Build & Test] DockerHub' shell: pwsh - run: dotnet run/docker.dll --target=DockerTest --arch=${{ inputs.arch }} --docker_dotnetversion=${{ inputs.targetFramework }} --docker_distro=${{ inputs.distro }} --docker_registry dockerhub --verbosity=diagnostic + run: dotnet run/docker.dll --target=DockerTest --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnetVersion }} --docker_distro=${{ inputs.dockerDistro }} --docker_registry dockerhub --verbosity=diagnostic - name: '[Docker Build & Test] GitHub' shell: pwsh - run: dotnet run/docker.dll --target=DockerTest --arch=${{ inputs.arch }} --docker_dotnetversion=${{ inputs.targetFramework }} --docker_distro=${{ inputs.distro }} --docker_registry github --verbosity=diagnostic + run: dotnet run/docker.dll --target=DockerTest --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnetVersion }} --docker_distro=${{ inputs.dockerDistro }} --docker_registry github --verbosity=diagnostic diff --git a/.github/workflows/_artifacts_linux.yml b/.github/workflows/_artifacts_linux.yml index 5d6bcd5454..262adf454d 100644 --- a/.github/workflows/_artifacts_linux.yml +++ b/.github/workflows/_artifacts_linux.yml @@ -14,12 +14,12 @@ env: jobs: artifacts: - name: ${{ matrix.distro }} - net${{ matrix.targetFramework }} + name: ${{ matrix.dockerDistro }} - net${{ matrix.dotnetVersion }} runs-on: ${{ inputs.runner }} strategy: fail-fast: false matrix: - distro: + dockerDistro: - alpine.3.20 - centos.stream.9 - debian.12 @@ -27,7 +27,7 @@ jobs: - ubuntu.20.04 - ubuntu.22.04 - ubuntu.24.04 - targetFramework: [ '8.0', '6.0' ] + dotnetVersion: [ '8.0', '6.0' ] steps: - @@ -53,4 +53,4 @@ jobs: - name: '[Test Artifacts]' shell: pwsh - run: dotnet run/artifacts.dll --target=ArtifactsTest --arch=${{ inputs.arch }} --docker_dotnetversion=${{ matrix.targetFramework }} --docker_distro=${{ matrix.distro }} \ No newline at end of file + run: dotnet run/artifacts.dll --target=ArtifactsTest --arch=${{ inputs.arch }} --dotnet_version=${{ matrix.dotnetVersion }} --docker_distro=${{ matrix.dockerDistro }} \ No newline at end of file diff --git a/.github/workflows/_docker.yml b/.github/workflows/_docker.yml index c502782848..b226199e38 100644 --- a/.github/workflows/_docker.yml +++ b/.github/workflows/_docker.yml @@ -14,12 +14,12 @@ env: jobs: docker: - name: ${{ matrix.distro }} - net${{ matrix.targetFramework }} + name: ${{ matrix.dockerDistro }} - net${{ matrix.dotnetVersion }} runs-on: ${{ inputs.runner }} strategy: fail-fast: false matrix: - distro: + dockerDistro: - alpine.3.20 - centos.stream.9 - debian.12 @@ -27,7 +27,7 @@ jobs: - ubuntu.20.04 - ubuntu.22.04 - ubuntu.24.04 - targetFramework: [ '8.0', '6.0' ] + dotnetVersion: [ '8.0', '6.0' ] steps: - @@ -65,16 +65,16 @@ jobs: uses: ./.github/actions/docker-test with: arch: ${{ inputs.arch }} - distro: ${{ matrix.distro }} - targetFramework: ${{ matrix.targetFramework }} + dockerDistro: ${{ matrix.dockerDistro }} + dotnetVersion: ${{ matrix.dotnetVersion }} - name: Docker Publish if: success() && github.event_name != 'pull_request' && github.repository_owner == 'GitTools' && github.ref_name == 'main' uses: ./.github/actions/docker-publish with: arch: ${{ inputs.arch }} - distro: ${{ matrix.distro }} - targetFramework: ${{ matrix.targetFramework }} + dockerDistro: ${{ matrix.dockerDistro }} + dotnetVersion: ${{ matrix.dotnetVersion }} docker_registry_username: ${{ secrets.DOCKER_USERNAME }} docker_registry_password: ${{ secrets.DOCKER_PASSWORD }} github_registry_username: ${{ github.repository_owner }} diff --git a/.github/workflows/_docker_manifests.yml b/.github/workflows/_docker_manifests.yml index be38bf1bf5..33e65458cf 100644 --- a/.github/workflows/_docker_manifests.yml +++ b/.github/workflows/_docker_manifests.yml @@ -7,12 +7,12 @@ env: jobs: manifest: - name: ${{ matrix.distro }} - net${{ matrix.targetFramework }} + name: ${{ matrix.dockerDistro }} - net${{ matrix.dotnetVersion }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: - distro: + dockerDistro: - alpine.3.20 - centos.stream.9 - debian.12 @@ -20,7 +20,7 @@ jobs: - ubuntu.20.04 - ubuntu.22.04 - ubuntu.24.04 - targetFramework: [ '8.0', '6.0' ] + dotnetVersion: [ '8.0', '6.0' ] steps: - @@ -51,8 +51,8 @@ jobs: if: success() && github.event_name != 'pull_request' && github.repository_owner == 'GitTools' && github.ref_name == 'main' uses: ./.github/actions/docker-manifests with: - distro: ${{ matrix.distro }} - targetFramework: ${{ matrix.targetFramework }} + dockerDistro: ${{ matrix.dockerDistro }} + dotnetVersion: ${{ matrix.dotnetVersion }} docker_registry_username: ${{ secrets.DOCKER_USERNAME }} docker_registry_password: ${{ secrets.DOCKER_PASSWORD }} github_registry_username: ${{ github.repository_owner }} diff --git a/.github/workflows/_unit_tests.yml b/.github/workflows/_unit_tests.yml index b59c395694..96d954d9e5 100644 --- a/.github/workflows/_unit_tests.yml +++ b/.github/workflows/_unit_tests.yml @@ -7,14 +7,14 @@ env: jobs: unit_test: - name: ${{ matrix.os }} - net${{ matrix.targetFramework }} + name: ${{ matrix.os }} - net${{ matrix.dotnetVersion }} env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} strategy: fail-fast: false matrix: os: [windows-latest, ubuntu-latest, macos-15] - targetFramework: [ '8.0', '6.0' ] + dotnetVersion: [ '8.0', '6.0' ] runs-on: ${{ matrix.os }} steps: @@ -29,11 +29,11 @@ jobs: - name: '[Unit Test]' shell: pwsh - run: dotnet run/build.dll --target=Test --dotnet_target=${{ matrix.targetFramework }} + run: dotnet run/build.dll --target=Test --dotnet_version=${{ matrix.dotnetVersion }} - name: Test Summary uses: test-summary/action@v2.4 - if: matrix.targetFramework == '8.0' + if: matrix.dotnetVersion == '8.0' with: paths: artifacts/test-results/*.results.xml diff --git a/build/.run/Artifacts DotnetTool Test.run.xml b/build/.run/Artifacts DotnetTool Test.run.xml index 5d80a2eedf..5a4546c2b5 100644 --- a/build/.run/Artifacts DotnetTool Test.run.xml +++ b/build/.run/Artifacts DotnetTool Test.run.xml @@ -1,7 +1,7 @@ From 3b3c7e00ae5a06618acf9be3beb876f4c33d4921 Mon Sep 17 00:00:00 2001 From: Artur Date: Wed, 13 Nov 2024 02:25:09 +0100 Subject: [PATCH 268/544] Update issue-report.yml --- .github/ISSUE_TEMPLATE/issue-report.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/issue-report.yml b/.github/ISSUE_TEMPLATE/issue-report.yml index 373596a764..5e174295a5 100644 --- a/.github/ISSUE_TEMPLATE/issue-report.yml +++ b/.github/ISSUE_TEMPLATE/issue-report.yml @@ -20,6 +20,7 @@ body: - GitVersion.Portable - gittools/actions - AzureDevops task + - N/A multiple: true validations: required: true @@ -69,4 +70,4 @@ body: description: Log messages you receive when running. Make sure there is no sensitive data shared. No need for backticks here. render: shell validations: - required: false \ No newline at end of file + required: false From 4152db126032e542fd3c59340c975a928232c64c Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 13 Nov 2024 02:34:16 +0100 Subject: [PATCH 269/544] #4299 - add new schemas for 6.11.* --- schemas/6.1/GitVersion.configuration.json | 394 ++++++++++++++++++++++ schemas/6.1/GitVersion.json | 133 ++++++++ src/GitVersion.Schema/Program.cs | 9 + 3 files changed, 536 insertions(+) create mode 100644 schemas/6.1/GitVersion.configuration.json create mode 100644 schemas/6.1/GitVersion.json diff --git a/schemas/6.1/GitVersion.configuration.json b/schemas/6.1/GitVersion.configuration.json new file mode 100644 index 0000000000..affb98d33e --- /dev/null +++ b/schemas/6.1/GitVersion.configuration.json @@ -0,0 +1,394 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gitversion.net/schemas/6.1/GitVersion.configuration.json", + "title": "GitVersion Configuration (6.1)", + "description": "GitVersion configuration schema (6.1)", + "type": "object", + "properties": { + "assembly-file-versioning-format": { + "description": "Specifies the format of AssemblyFileVersion and overwrites the value of assembly-file-versioning-scheme.", + "type": "string" + }, + "assembly-file-versioning-scheme": { + "description": "The scheme to use when setting AssemblyFileVersion attribute. Can be 'MajorMinorPatchTag', 'MajorMinorPatch', 'MajorMinor', 'Major', 'None'. Defaults to 'MajorMinorPatch'.", + "default": "MajorMinorPatch", + "enum": [ + "MajorMinorPatchTag", + "MajorMinorPatch", + "MajorMinor", + "Major", + "None" + ] + }, + "assembly-informational-format": { + "description": "Specifies the format of AssemblyInformationalVersion. Defaults to '{InformationalVersion}'.", + "default": "'{InformationalVersion}'", + "type": "string" + }, + "assembly-versioning-format": { + "description": "Specifies the format of AssemblyVersion and overwrites the value of assembly-versioning-scheme.", + "type": "string" + }, + "assembly-versioning-scheme": { + "description": "The scheme to use when setting AssemblyVersion attribute. Can be 'MajorMinorPatchTag', 'MajorMinorPatch', 'MajorMinor', 'Major', 'None'. Defaults to 'MajorMinorPatch'.", + "default": "MajorMinorPatch", + "enum": [ + "MajorMinorPatchTag", + "MajorMinorPatch", + "MajorMinor", + "Major", + "None" + ] + }, + "branches": { + "description": "The header for all the individual branch configuration.", + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/branchConfiguration" + } + }, + "commit-date-format": { + "description": "The format to use when calculating the commit date. Defaults to 'yyyy-MM-dd'. See [Standard Date and Time Format Strings](https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings) and [Custom Date and Time Format Strings](https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings).", + "default": "yyyy-MM-dd", + "type": "string" + }, + "commit-message-incrementing": { + "$ref": "#/$defs/nullableOfCommitMessageIncrementMode" + }, + "mode": { + "$ref": "#/$defs/nullableOfDeploymentMode" + }, + "ignore": { + "description": "The header property for the ignore configuration.", + "type": "object", + "properties": { + "commits-before": { + "$ref": "#/$defs/string3" + }, + "sha": { + "$ref": "#/$defs/hashSetOfString2" + } + } + }, + "increment": { + "$ref": "#/$defs/incrementStrategy" + }, + "is-main-branch": { + "$ref": "#/$defs/nullableOfBoolean" + }, + "is-release-branch": { + "$ref": "#/$defs/nullableOfBoolean1" + }, + "is-source-branch-for": { + "$ref": "#/$defs/hashSetOfString" + }, + "label": { + "$ref": "#/$defs/string" + }, + "label-number-pattern": { + "$ref": "#/$defs/string1" + }, + "major-version-bump-message": { + "format": "regex", + "description": "The regular expression to match commit messages with to perform a major version increment. Defaults to '\\+semver:\\s?(breaking|major)'", + "default": "\\+semver:\\s?(breaking|major)", + "type": "string" + }, + "merge-message-formats": { + "description": "Custom merge message formats to enable identification of merge messages that do not follow the built-in conventions.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "minor-version-bump-message": { + "format": "regex", + "description": "The regular expression to match commit messages with to perform a minor version increment. Defaults to '\\+semver:\\s?(feature|minor)'", + "default": "\\+semver:\\s?(feature|minor)", + "type": "string" + }, + "next-version": { + "description": "Allows you to bump the next version explicitly. Useful for bumping main or a feature branch with breaking changes", + "type": "string" + }, + "no-bump-message": { + "format": "regex", + "description": "Used to tell GitVersion not to increment when in Mainline development mode. Defaults to '\\+semver:\\s?(none|skip)'", + "default": "\\+semver:\\s?(none|skip)", + "type": "string" + }, + "patch-version-bump-message": { + "format": "regex", + "description": "The regular expression to match commit messages with to perform a patch version increment. Defaults to '\\+semver:\\s?(fix|patch)'", + "default": "\\+semver:\\s?(fix|patch)", + "type": "string" + }, + "pre-release-weight": { + "$ref": "#/$defs/nullableOfInt32" + }, + "prevent-increment": { + "$ref": "#/$defs/preventIncrementConfiguration" + }, + "regex": { + "$ref": "#/$defs/string2" + }, + "semantic-version-format": { + "description": "Specifies the semantic version format that is used when parsing the string. Can be 'Strict' or 'Loose'. Defaults to 'Strict'.", + "default": "Strict", + "enum": [ + "Strict", + "Loose" + ] + }, + "source-branches": { + "$ref": "#/$defs/hashSetOfString1" + }, + "tag-prefix": { + "format": "regex", + "description": "A regular expression which is used to trim Git tags before processing. Defaults to '[vV]?'", + "default": "[vV]?", + "type": "string" + }, + "tag-pre-release-weight": { + "description": "The pre-release weight in case of tagged commits. Defaults to 60000.", + "type": [ + "integer", + "null" + ] + }, + "track-merge-message": { + "$ref": "#/$defs/nullableOfBoolean4" + }, + "track-merge-target": { + "$ref": "#/$defs/nullableOfBoolean5" + }, + "tracks-release-branches": { + "$ref": "#/$defs/nullableOfBoolean6" + }, + "update-build-number": { + "description": "Whether to update the build number in the project file. Defaults to true.", + "default": "true", + "type": "boolean" + }, + "version-in-branch-pattern": { + "format": "regex", + "description": "A regular expression which is used to determine the version number in the branch name or commit message (e.g., v1.0.0-LTS). Defaults to '(?[vV]?\\d+(\\.\\d+)?(\\.\\d+)?).*'.", + "default": "(?[vV]?\\d+(\\.\\d+)?(\\.\\d+)?).*", + "type": "string" + }, + "strategies": { + "description": "Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfiguredNextVersion', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'Mainline'.", + "type": "array", + "items": { + "description": "Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfiguredNextVersion', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'Mainline'.", + "enum": [ + "None", + "Fallback", + "ConfiguredNextVersion", + "MergeMessage", + "TaggedCommit", + "TrackReleaseBranches", + "VersionInBranchName", + "Mainline" + ] + } + }, + "workflow": { + "description": "The base template of the configuration to use. Possible values are: 'GitFlow/v1' or 'GitHubFlow/v1'", + "type": "string" + } + }, + "$defs": { + "branchConfiguration": { + "type": "object", + "properties": { + "commit-message-incrementing": { + "$ref": "#/$defs/nullableOfCommitMessageIncrementMode" + }, + "mode": { + "$ref": "#/$defs/nullableOfDeploymentMode" + }, + "increment": { + "$ref": "#/$defs/incrementStrategy" + }, + "is-main-branch": { + "$ref": "#/$defs/nullableOfBoolean" + }, + "is-release-branch": { + "$ref": "#/$defs/nullableOfBoolean1" + }, + "is-source-branch-for": { + "$ref": "#/$defs/hashSetOfString" + }, + "label": { + "$ref": "#/$defs/string" + }, + "label-number-pattern": { + "$ref": "#/$defs/string1" + }, + "pre-release-weight": { + "$ref": "#/$defs/nullableOfInt32" + }, + "prevent-increment": { + "$ref": "#/$defs/preventIncrementConfiguration" + }, + "regex": { + "$ref": "#/$defs/string2" + }, + "source-branches": { + "$ref": "#/$defs/hashSetOfString1" + }, + "track-merge-message": { + "$ref": "#/$defs/nullableOfBoolean4" + }, + "track-merge-target": { + "$ref": "#/$defs/nullableOfBoolean5" + }, + "tracks-release-branches": { + "$ref": "#/$defs/nullableOfBoolean6" + } + } + }, + "nullableOfCommitMessageIncrementMode": { + "description": "Sets whether it should be possible to increment the version with special syntax in the commit message. Can be 'Disabled', 'Enabled' or 'MergeMessageOnly'.", + "enum": [ + "Enabled", + "Disabled", + "MergeMessageOnly" + ] + }, + "nullableOfDeploymentMode": { + "description": "The deployment mode for this branch. Can be 'ManualDeployment', 'ContinuousDelivery', 'ContinuousDeployment'.", + "enum": [ + "ManualDeployment", + "ContinuousDelivery", + "ContinuousDeployment" + ] + }, + "incrementStrategy": { + "description": "The increment strategy for this branch. Can be 'Inherit', 'Patch', 'Minor', 'Major', 'None'.", + "enum": [ + "None", + "Major", + "Minor", + "Patch", + "Inherit" + ] + }, + "nullableOfBoolean": { + "description": "When using Mainline mode, this indicates that this branch is a mainline. By default main and support/* are mainlines.", + "type": [ + "boolean", + "null" + ] + }, + "nullableOfBoolean1": { + "description": "Indicates this branch configuration represents a release branch in GitFlow.", + "type": [ + "boolean", + "null" + ] + }, + "hashSetOfString": { + "description": "The branches that this branch is a source branch.", + "type": "array", + "items": { + "description": "The branches that this branch is a source branch.", + "type": "string" + } + }, + "string": { + "description": "The label to use for this branch. Use the value {BranchName} or similar as a placeholder to insert a named capture group from RegularExpression (fx. the branch name).", + "type": "string" + }, + "string1": { + "format": "regex", + "description": "The regular expression pattern to use to extract the number from the branch name. Defaults to '[/-](?\\d+)'.", + "default": "[/-](?\\d+)", + "type": "string" + }, + "nullableOfInt32": { + "description": "Provides a way to translate the PreReleaseLabel to a number.", + "type": [ + "integer", + "null" + ] + }, + "preventIncrementConfiguration": { + "description": "The prevent increment configuration section.", + "type": "object", + "properties": { + "of-merged-branch": { + "$ref": "#/$defs/nullableOfBoolean2" + }, + "when-branch-merged": { + "$ref": "#/$defs/nullableOfBoolean2" + }, + "when-current-commit-tagged": { + "$ref": "#/$defs/nullableOfBoolean3" + } + } + }, + "nullableOfBoolean2": { + "description": "Prevent increment when branch merged.", + "type": [ + "boolean", + "null" + ] + }, + "nullableOfBoolean3": { + "description": "This branch related property controls the behavior whether to use the tagged (value set to true) or the incremented (value set to false) semantic version. Defaults to true.", + "type": [ + "boolean", + "null" + ] + }, + "string2": { + "format": "regex", + "description": "The regular expression pattern to use to match this branch.", + "type": "string" + }, + "hashSetOfString1": { + "description": "The source branches for this branch.", + "type": "array", + "items": { + "description": "The source branches for this branch.", + "type": "string" + } + }, + "nullableOfBoolean4": { + "description": "This property is a branch related property and gives the user the possibility to control the behavior of whether the merge commit message will be interpreted as a next version or not.", + "type": [ + "boolean", + "null" + ] + }, + "nullableOfBoolean5": { + "description": "Strategy which will look for tagged merge commits directly off the current branch.", + "type": [ + "boolean", + "null" + ] + }, + "nullableOfBoolean6": { + "description": "Indicates this branch configuration represents develop in GitFlow.", + "type": [ + "boolean", + "null" + ] + }, + "string3": { + "format": "date-time", + "description": "Commits before this date will be ignored. Format: yyyy-MM-ddTHH:mm:ss.", + "type": "string" + }, + "hashSetOfString2": { + "description": "A sequence of SHAs to be excluded from the version calculations.", + "type": "array", + "items": { + "description": "A sequence of SHAs to be excluded from the version calculations.", + "type": "string" + } + } + } +} \ No newline at end of file diff --git a/schemas/6.1/GitVersion.json b/schemas/6.1/GitVersion.json new file mode 100644 index 0000000000..037e6acbf4 --- /dev/null +++ b/schemas/6.1/GitVersion.json @@ -0,0 +1,133 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gitversion.net/schemas/6.1/GitVersion.json", + "title": "GitVersion version variables output", + "description": "GitVersion output schema", + "type": "object", + "properties": { + "AssemblySemFileVer": { + "description": "Suitable for .NET AssemblyFileVersion. Defaults to Major.Minor.Patch.0.", + "type": "string" + }, + "AssemblySemVer": { + "description": "Suitable for .NET AssemblyVersion. Defaults to Major.Minor.0.0", + "type": "string" + }, + "BranchName": { + "description": "The name of the checked out Git branch.", + "type": "string" + }, + "BuildMetaData": { + "description": "The build metadata, usually representing number of commits since the VersionSourceSha.", + "type": [ + "integer", + "null" + ] + }, + "CommitDate": { + "description": "The ISO-8601 formatted date of the commit identified by Sha.", + "type": "string" + }, + "CommitsSinceVersionSource": { + "description": "The number of commits since the version source.", + "type": [ + "integer", + "null" + ] + }, + "EscapedBranchName": { + "description": "Equal to BranchName, but with / replaced with -.", + "type": "string" + }, + "FullBuildMetaData": { + "description": "The BuildMetaData suffixed with BranchName and Sha.", + "type": "string" + }, + "FullSemVer": { + "description": "The full, SemVer 2.0 compliant version number.", + "type": "string" + }, + "InformationalVersion": { + "description": "Suitable for .NET AssemblyInformationalVersion. Defaults to FullSemVer suffixed by FullBuildMetaData.", + "type": "string" + }, + "Major": { + "description": "The major version. Should be incremented on breaking changes.", + "type": [ + "integer", + "null" + ] + }, + "MajorMinorPatch": { + "description": "Major, Minor and Patch joined together, separated by '.'.", + "type": "string" + }, + "Minor": { + "description": "The minor version. Should be incremented on new features.", + "type": [ + "integer", + "null" + ] + }, + "Patch": { + "description": "The patch version. Should be incremented on bug fixes.", + "type": [ + "integer", + "null" + ] + }, + "PreReleaseLabel": { + "description": "The pre-release label is the name of the pre-release.", + "type": "string" + }, + "PreReleaseLabelWithDash": { + "description": "The pre-release label prefixed with a dash.", + "type": "string" + }, + "PreReleaseNumber": { + "description": "The pre-release number is the number of commits since the last version bump.", + "type": [ + "integer", + "null" + ] + }, + "PreReleaseTag": { + "description": "The pre-release tag is the pre-release label suffixed by the PreReleaseNumber.", + "type": "string" + }, + "PreReleaseTagWithDash": { + "description": "The pre-release tag prefixed with a dash.", + "type": "string" + }, + "SemVer": { + "description": "The semantic version number, including PreReleaseTagWithDash for pre-release version numbers.", + "type": "string" + }, + "Sha": { + "description": "The SHA of the Git commit.", + "type": "string" + }, + "ShortSha": { + "description": "The Sha limited to 7 characters.", + "type": "string" + }, + "UncommittedChanges": { + "description": "The number of uncommitted changes present in the repository.", + "type": [ + "integer", + "null" + ] + }, + "VersionSourceSha": { + "description": "The SHA of the commit used as version source.", + "type": "string" + }, + "WeightedPreReleaseNumber": { + "description": "A summation of branch specific pre-release-weight and the PreReleaseNumber. Can be used to obtain a monotonically increasing version number across the branches.", + "type": [ + "integer", + "null" + ] + } + } +} \ No newline at end of file diff --git a/src/GitVersion.Schema/Program.cs b/src/GitVersion.Schema/Program.cs index 3bed198c98..ba84aed254 100644 --- a/src/GitVersion.Schema/Program.cs +++ b/src/GitVersion.Schema/Program.cs @@ -21,6 +21,15 @@ AttributeHandler.AddHandler(); AttributeHandler.AddHandler(); +if (!Directory.Exists(schemasDirectory)) +{ + Directory.CreateDirectory(schemasDirectory); +} +if (!Directory.Exists(Path.Combine(schemasDirectory, schemaVersion))) +{ + Directory.CreateDirectory(Path.Combine(schemasDirectory, schemaVersion)); +} + var builder = new JsonSchemaBuilder(); builder.Schema("http://json-schema.org/draft-07/schema#"); builder.Id($"https://gitversion.net/schemas/{schemaVersion}/GitVersion.configuration.json"); From ca58a8883a7c6c4e2e9c563528ad774ec808f58a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Oct 2024 15:35:01 +0000 Subject: [PATCH 270/544] (deps): Bump MSBuild.ProjectCreation from 13.0.0 to 14.0.0 in /src Bumps [MSBuild.ProjectCreation](https://github.com/jeffkl/MSBuildProjectCreator) from 13.0.0 to 14.0.0. - [Release notes](https://github.com/jeffkl/MSBuildProjectCreator/releases) - [Commits](https://github.com/jeffkl/MSBuildProjectCreator/compare/v13.0.0...v14.0.0) --- updated-dependencies: - dependency-name: MSBuild.ProjectCreation dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index cc96645729..f09a883642 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -21,7 +21,7 @@ - + From 7a8aa07c5dcd89593879011e797362f9a99ad76b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Nov 2024 02:02:32 +0000 Subject: [PATCH 271/544] (deps): Bump Cake.Frosting from 4.2.0 to 5.0.0 in /build Bumps [Cake.Frosting](https://github.com/cake-build/cake) from 4.2.0 to 5.0.0. - [Release notes](https://github.com/cake-build/cake/releases) - [Changelog](https://github.com/cake-build/cake/blob/develop/ReleaseNotes.md) - [Commits](https://github.com/cake-build/cake/compare/v4.2.0...v5.0.0) --- updated-dependencies: - dependency-name: Cake.Frosting dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- build/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Directory.Packages.props b/build/Directory.Packages.props index 878f537db9..2e0ac0583c 100644 --- a/build/Directory.Packages.props +++ b/build/Directory.Packages.props @@ -6,7 +6,7 @@ - + From 67e837216e8e479d1d722c63d487d400552338ae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Nov 2024 02:03:16 +0000 Subject: [PATCH 272/544] (deps): Bump Polly from 8.4.2 to 8.5.0 in /src Bumps [Polly](https://github.com/App-vNext/Polly) from 8.4.2 to 8.5.0. - [Release notes](https://github.com/App-vNext/Polly/releases) - [Changelog](https://github.com/App-vNext/Polly/blob/main/CHANGELOG.md) - [Commits](https://github.com/App-vNext/Polly/compare/8.4.2...8.5.0) --- updated-dependencies: - dependency-name: Polly dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index f09a883642..5fe1d766e7 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -14,7 +14,7 @@ - + From 04944bef75a5c3d4cfbe99041af9328a053f823c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Nov 2024 02:02:52 +0000 Subject: [PATCH 273/544] (deps): Bump Polly from 8.4.2 to 8.5.0 in /new-cli Bumps [Polly](https://github.com/App-vNext/Polly) from 8.4.2 to 8.5.0. - [Release notes](https://github.com/App-vNext/Polly/releases) - [Changelog](https://github.com/App-vNext/Polly/blob/main/CHANGELOG.md) - [Commits](https://github.com/App-vNext/Polly/compare/8.4.2...8.5.0) --- updated-dependencies: - dependency-name: Polly dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 7421cb3f91..70a981f6c4 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -11,7 +11,7 @@ - + From 6ff97aac7c137ed89f9b806dd23594a1db8e7cfb Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 13 Nov 2024 02:54:20 +0100 Subject: [PATCH 274/544] add .net9.0 target --- build/Directory.Build.props | 4 ++-- build/common/Utilities/Constants.cs | 2 +- new-cli/Directory.Build.props | 2 +- src/Directory.Build.props | 4 ++-- src/GitVersion.MsBuild/GitVersion.MsBuild.csproj | 1 + 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/build/Directory.Build.props b/build/Directory.Build.props index edbb8dac4d..97be940115 100644 --- a/build/Directory.Build.props +++ b/build/Directory.Build.props @@ -1,12 +1,12 @@  Exe - net8.0 + net9.0 $(MSBuildProjectDirectory) ..\..\run\ false enable - 12 + latest NU1604 enable diff --git a/build/common/Utilities/Constants.cs b/build/common/Utilities/Constants.cs index d8817cccc8..6a21c36e31 100644 --- a/build/common/Utilities/Constants.cs +++ b/build/common/Utilities/Constants.cs @@ -7,7 +7,7 @@ public static class Constants public const string Repository = "GitVersion"; public const string VersionLatest = "8.0"; - public static readonly string[] DotnetVersions = [VersionLatest]; + public static readonly string[] DotnetVersions = [VersionLatest, "9.0"]; public const string DefaultBranch = "main"; public const string DefaultConfiguration = "Release"; diff --git a/new-cli/Directory.Build.props b/new-cli/Directory.Build.props index ea7d0c9db2..88b7cf62da 100644 --- a/new-cli/Directory.Build.props +++ b/new-cli/Directory.Build.props @@ -1,6 +1,6 @@ - net8.0 + net9.0 GitVersion latest diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 6224b2b353..af1ddcba7f 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,6 +1,6 @@ - net8.0 + net8.0;net9.0 $([System.DateTime]::Today.Year) GitTools and Contributors @@ -22,7 +22,7 @@ $(WarningsAsErrors);RS0016;RS0017;RS0022;RS0024;RS0025;RS0026;RS0027 embedded - 12 + latest enable enable en diff --git a/src/GitVersion.MsBuild/GitVersion.MsBuild.csproj b/src/GitVersion.MsBuild/GitVersion.MsBuild.csproj index 61aed5a2d4..033f10f2b4 100644 --- a/src/GitVersion.MsBuild/GitVersion.MsBuild.csproj +++ b/src/GitVersion.MsBuild/GitVersion.MsBuild.csproj @@ -39,6 +39,7 @@ + From 75f1dfe799657076bc19c233b57e01973df2c324 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 13 Nov 2024 02:54:38 +0100 Subject: [PATCH 275/544] updated rider run configurations --- build/.run/Artifacts DotnetTool Test.run.xml | 4 ++-- build/.run/Artifacts Executable Test.run.xml | 4 ++-- build/.run/Artifacts MsBuildCore Test.run.xml | 4 ++-- build/.run/Artifacts MsBuildFull Test.run.xml | 4 ++-- build/.run/Artifacts Native Test.run.xml | 4 ++-- build/.run/Artifacts Prepare.run.xml | 4 ++-- build/.run/Artifacts Test.run.xml | 4 ++-- build/.run/Build Docs.run.xml | 4 ++-- build/.run/Build Prepare.run.xml | 4 ++-- build/.run/Build.run.xml | 4 ++-- build/.run/Clean.run.xml | 2 +- build/.run/Code Format.run.xml | 4 ++-- build/.run/Default Artifacts.run.xml | 4 ++-- build/.run/Default Build.run.xml | 4 ++-- build/.run/Default Config.run.xml | 2 +- build/.run/Default Docker.run.xml | 4 ++-- build/.run/Default Docs.run.xml | 4 ++-- build/.run/Default Publish.run.xml | 4 ++-- build/.run/Docker Build.run.xml | 4 ++-- build/.run/Docker Manifest.run.xml | 4 ++-- build/.run/Docker Publish.run.xml | 4 ++-- build/.run/Docker Test.run.xml | 4 ++-- build/.run/DockerHub Readme Publish.run.xml | 4 ++-- build/.run/Generate Schemas.run.xml | 4 ++-- build/.run/Package Archive.run.xml | 4 ++-- build/.run/Package Chocolatey.run.xml | 4 ++-- build/.run/Package Nuget.run.xml | 4 ++-- build/.run/Package Prepare.run.xml | 4 ++-- build/.run/Package.run.xml | 4 ++-- build/.run/Preview Docs.run.xml | 4 ++-- build/.run/Publish Chocolatey.run.xml | 4 ++-- build/.run/Publish Docs.run.xml | 4 ++-- build/.run/Publish Nuget.run.xml | 6 ++--- build/.run/Publish Release.run.xml | 4 ++-- build/.run/PublishCoverage.run.xml | 4 ++-- build/.run/SetMatrix.run.xml | 2 +- build/.run/Test.run.xml | 4 ++-- build/.run/UnitTest (8.0).run.xml | 2 +- build/.run/UnitTest (9.0).run.xml | 23 +++++++++++++++++++ build/.run/Validate Version.run.xml | 4 ++-- new-cli/.run/Calculate.run.xml | 4 ++-- new-cli/.run/Config Help.run.xml | 4 ++-- new-cli/.run/Config Init.run.xml | 4 ++-- new-cli/.run/Config Show.run.xml | 4 ++-- new-cli/.run/Help.run.xml | 4 ++-- new-cli/.run/Normalize.run.xml | 4 ++-- new-cli/.run/Output AssemblyInfo.run.xml | 4 ++-- new-cli/.run/Output Help.run.xml | 4 ++-- new-cli/.run/Output Project.run.xml | 4 ++-- new-cli/.run/Output Wix.run.xml | 4 ++-- new-cli/.run/Tester.run.xml | 6 ++--- new-cli/.run/Version.run.xml | 4 ++-- src/.run/cli (help).run.xml | 4 ++-- src/.run/cli (showconfig).run.xml | 4 ++-- src/.run/cli (version).run.xml | 4 ++-- src/.run/cli.run.xml | 6 ++--- src/.run/schema.run.xml | 6 ++--- 57 files changed, 135 insertions(+), 112 deletions(-) create mode 100644 build/.run/UnitTest (9.0).run.xml diff --git a/build/.run/Artifacts DotnetTool Test.run.xml b/build/.run/Artifacts DotnetTool Test.run.xml index 5a4546c2b5..f09edd6a7e 100644 --- a/build/.run/Artifacts DotnetTool Test.run.xml +++ b/build/.run/Artifacts DotnetTool Test.run.xml @@ -1,6 +1,6 @@ - \ No newline at end of file From eaa44473c959b764a8f09936611158ed4ffdf4ac Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Fri, 15 Nov 2024 18:10:12 +0100 Subject: [PATCH 282/544] (deps): Bump the microsoft group across 1 directory with 4 updates Bumps the microsoft group with 4 updates in the /src directory: [Microsoft.Build](https://github.com/dotnet/msbuild), [Microsoft.IO.Redist](https://github.com/dotnet/runtime), [System.Text.Json](https://github.com/dotnet/runtime) and [Microsoft.Build.Utilities.Core](https://github.com/dotnet/msbuild). Updates `Microsoft.Build` from 17.11.4 to 17.12.6 - [Release notes](https://github.com/dotnet/msbuild/releases) - [Changelog](https://github.com/dotnet/msbuild/blob/main/documentation/Changelog.md) - [Commits](https://github.com/dotnet/msbuild/compare/v17.11.4...v17.12.6) Updates `Microsoft.IO.Redist` from 6.1.0 to 6.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/commits/v6.0.1) Updates `System.Text.Json` from 9.0.0 to 8.0.5 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.0...v8.0.5) Updates `Microsoft.Build.Utilities.Core` from 17.11.4 to 17.12.6 - [Release notes](https://github.com/dotnet/msbuild/releases) - [Changelog](https://github.com/dotnet/msbuild/blob/main/documentation/Changelog.md) - [Commits](https://github.com/dotnet/msbuild/compare/v17.11.4...v17.12.6) --- updated-dependencies: - dependency-name: Microsoft.Build dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: Microsoft.IO.Redist dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: System.Text.Json dependency-type: direct:production update-type: version-update:semver-major dependency-group: microsoft - dependency-name: Microsoft.Build.Utilities.Core dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft ... Signed-off-by: dependabot[bot] 1c3b09 --- .github/workflows/_unit_tests.yml | 2 +- src/Directory.Packages.props | 4 ++-- .../msbuild/tools/GitVersion.MsBuild.targets | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/_unit_tests.yml b/.github/workflows/_unit_tests.yml index 594e2a55ae..f4925b5f59 100644 --- a/.github/workflows/_unit_tests.yml +++ b/.github/workflows/_unit_tests.yml @@ -37,6 +37,6 @@ jobs: - name: Test Summary uses: test-summary/action@v2.4 - if: matrix.dotnetVersion == '8.0' + if: matrix.dotnetVersion == '9.0' with: paths: artifacts/test-results/*.results.xml diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index e52b2266af..62986a291f 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -23,8 +23,8 @@ - - + + diff --git a/src/GitVersion.MsBuild/msbuild/tools/GitVersion.MsBuild.targets b/src/GitVersion.MsBuild/msbuild/tools/GitVersion.MsBuild.targets index 974a840d88..680bf52a1a 100644 --- a/src/GitVersion.MsBuild/msbuild/tools/GitVersion.MsBuild.targets +++ b/src/GitVersion.MsBuild/msbuild/tools/GitVersion.MsBuild.targets @@ -10,8 +10,8 @@ net8.0 - net6.0 - + net9.0 + net8.0 dotnet --roll-forward Major "$([MSBuild]::EnsureTrailingSlash($(MSBuildThisFileDirectory)$(GitVersionTargetFramework)))gitversion.dll" $([MSBuild]::EnsureTrailingSlash($(MSBuildThisFileDirectory)$(GitVersionTargetFramework)))GitVersion.MsBuild.dll From 7eb9399797a708948c65875aac5b4a2f61ea5c02 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Sun, 17 Nov 2024 13:49:46 +0100 Subject: [PATCH 283/544] cleanup code targeting < net8.0 --- .../Polyfills/StringSyntaxAttribute.cs | 35 --------------- ...neratorTests.ShouldCreateFile.approved.txt | 16 ------- ...rlyOutputNamespaceDeclaration.approved.txt | 16 ------- ...neratorTests.ShouldCreateFile.approved.txt | 16 ------- ...rlyOutputNamespaceDeclaration.approved.txt | 41 +++++++++++++++++ ...neratorTests.ShouldCreateFile.approved.txt | 16 ------- ...rlyOutputNamespaceDeclaration.approved.txt | 45 +++++++++++++++++++ .../Output/GitVersionInfoGeneratorTests.cs | 7 +-- .../Templates/GitVersionInformation.cs | 16 ------- .../Templates/GitVersionInformation.fs | 16 ------- .../Templates/GitVersionInformation.vb | 16 ------- .../Helpers/StringBuilderExtensions.cs | 4 -- 12 files changed, 90 insertions(+), 154 deletions(-) delete mode 100644 src/GitVersion.Core/Polyfills/StringSyntaxAttribute.cs create mode 100644 src/GitVersion.Output.Tests/Output/Approved/fs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt create mode 100644 src/GitVersion.Output.Tests/Output/Approved/vb/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt diff --git a/src/GitVersion.Core/Polyfills/StringSyntaxAttribute.cs b/src/GitVersion.Core/Polyfills/StringSyntaxAttribute.cs deleted file mode 100644 index f3faee9ed6..0000000000 --- a/src/GitVersion.Core/Polyfills/StringSyntaxAttribute.cs +++ /dev/null @@ -1,35 +0,0 @@ -#if !NET7_0_OR_GREATER - -// The namespace is important -namespace System.Diagnostics.CodeAnalysis; - -/// Fake version of the StringSyntaxAttribute, which was introduced in .NET 7 -[SuppressMessage("ApiDesign", "RS0016:Add public types and members to the declared API")] -[SuppressMessage("Style", "IDE0060:Remove unused parameter")] -[AttributeUsage(AttributeTargets.All)] -public sealed class StringSyntaxAttribute : Attribute -{ - /// The syntax identifier for strings containing composite formats. - public const string CompositeFormat = nameof(CompositeFormat); - - /// The syntax identifier for strings containing regular expressions. - public const string Regex = nameof(Regex); - - /// The syntax identifier for strings containing date information. - public const string DateTimeFormat = nameof(DateTimeFormat); - - /// - /// Initializes a new instance of the class. - /// - public StringSyntaxAttribute(string syntax) - { - } - - /// - /// Initializes a new instance of the class. - /// - public StringSyntaxAttribute(string syntax, params object?[] arguments) - { - } -} -#endif diff --git a/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt b/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt index 9c6b2b9a43..1289bd4dc8 100644 --- a/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt +++ b/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt @@ -8,22 +8,6 @@ // //------------------------------------------------------------------------------ -#if NET20 || NET35 || NETCOREAPP1_0 || NETCOREAPP1_1 || NETSTANDARD1_0 || NETSTANDARD1_1 || NETSTANDARD1_2 || NETSTANDARD1_3 || NETSTANDARD1_4 || NETSTANDARD1_5 || NETSTANDARD1_6 -namespace System.Diagnostics.CodeAnalysis -{ - [global::System.AttributeUsage( - global::System.AttributeTargets.Assembly | - global::System.AttributeTargets.Class | - global::System.AttributeTargets.Struct | - global::System.AttributeTargets.Constructor | - global::System.AttributeTargets.Method | - global::System.AttributeTargets.Property | - global::System.AttributeTargets.Event, - Inherited = false, AllowMultiple = false)] - internal sealed class ExcludeFromCodeCoverageAttribute : global::System.Attribute { } -} -#endif - [global::System.Runtime.CompilerServices.CompilerGenerated] [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] static class GitVersionInformation diff --git a/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt b/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt index 14109e5d29..8cb6fbe737 100644 --- a/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt +++ b/src/GitVersion.Output.Tests/Output/Approved/cs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt @@ -8,22 +8,6 @@ // //------------------------------------------------------------------------------ -#if NET20 || NET35 || NETCOREAPP1_0 || NETCOREAPP1_1 || NETSTANDARD1_0 || NETSTANDARD1_1 || NETSTANDARD1_2 || NETSTANDARD1_3 || NETSTANDARD1_4 || NETSTANDARD1_5 || NETSTANDARD1_6 -namespace System.Diagnostics.CodeAnalysis -{ - [global::System.AttributeUsage( - global::System.AttributeTargets.Assembly | - global::System.AttributeTargets.Class | - global::System.AttributeTargets.Struct | - global::System.AttributeTargets.Constructor | - global::System.AttributeTargets.Method | - global::System.AttributeTargets.Property | - global::System.AttributeTargets.Event, - Inherited = false, AllowMultiple = false)] - internal sealed class ExcludeFromCodeCoverageAttribute : global::System.Attribute { } -} -#endif - namespace My.Custom.Namespace { [global::System.Runtime.CompilerServices.CompilerGenerated] diff --git a/src/GitVersion.Output.Tests/Output/Approved/fs/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt b/src/GitVersion.Output.Tests/Output/Approved/fs/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt index 52f2f04d87..f653c20b31 100644 --- a/src/GitVersion.Output.Tests/Output/Approved/fs/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt +++ b/src/GitVersion.Output.Tests/Output/Approved/fs/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt @@ -8,22 +8,6 @@ // //------------------------------------------------------------------------------ -#if NET20 || NET35 || NETCOREAPP1_0 || NETCOREAPP1_1 || NETSTANDARD1_0 || NETSTANDARD1_1 || NETSTANDARD1_2 || NETSTANDARD1_3 || NETSTANDARD1_4 || NETSTANDARD1_5 || NETSTANDARD1_6 -namespace System.Diagnostics.CodeAnalysis - -[] -[] -type ExcludeFromCodeCoverageAttribute() = inherit global.System.Attribute() -#endif - namespace global [] diff --git a/src/GitVersion.Output.Tests/Output/Approved/fs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt b/src/GitVersion.Output.Tests/Output/Approved/fs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt new file mode 100644 index 0000000000..c73ca5fba9 --- /dev/null +++ b/src/GitVersion.Output.Tests/Output/Approved/fs/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt @@ -0,0 +1,41 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// GitVersion +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace My.Custom.Namespace + +[] +[] +[] +type GitVersionInformation = + static member AssemblySemFileVer = "1.2.3.0" + static member AssemblySemVer = "1.2.3.0" + static member BranchName = "feature1" + static member BuildMetaData = "5" + static member CommitDate = "2014-03-06" + static member CommitsSinceVersionSource = "5" + static member EscapedBranchName = "feature1" + static member FullBuildMetaData = "5.Branch.feature1.Sha.commitSha" + static member FullSemVer = "1.2.3-unstable.4+5" + static member InformationalVersion = "1.2.3-unstable.4+5.Branch.feature1.Sha.commitSha" + static member Major = "1" + static member MajorMinorPatch = "1.2.3" + static member Minor = "2" + static member Patch = "3" + static member PreReleaseLabel = "unstable" + static member PreReleaseLabelWithDash = "-unstable" + static member PreReleaseNumber = "4" + static member PreReleaseTag = "unstable.4" + static member PreReleaseTagWithDash = "-unstable.4" + static member SemVer = "1.2.3-unstable.4" + static member Sha = "commitSha" + static member ShortSha = "commitShortSha" + static member UncommittedChanges = "0" + static member VersionSourceSha = "versionSourceSha" + static member WeightedPreReleaseNumber = "4" diff --git a/src/GitVersion.Output.Tests/Output/Approved/vb/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt b/src/GitVersion.Output.Tests/Output/Approved/vb/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt index 200b58a1e2..91cb09fa24 100644 --- a/src/GitVersion.Output.Tests/Output/Approved/vb/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt +++ b/src/GitVersion.Output.Tests/Output/Approved/vb/GitVersionInfoGeneratorTests.ShouldCreateFile.approved.txt @@ -8,22 +8,6 @@ ' '------------------------------------------------------------------------------ -#If NET20 OrElse NET35 OrElse NETCOREAPP1_0 OrElse NETCOREAPP1_1 OrElse NETSTANDARD1_0 OrElse NETSTANDARD1_1 OrElse NETSTANDARD1_2 OrElse NETSTANDARD1_3 OrElse NETSTANDARD1_4 OrElse NETSTANDARD1_5 OrElse NETSTANDARD1_6 Then -Namespace Global.System.Diagnostics.CodeAnalysis - - Friend NotInheritable Class ExcludeFromCodeCoverageAttribute - Inherits Global.System.Attribute - End Class -End Namespace -#End If - Namespace Global diff --git a/src/GitVersion.Output.Tests/Output/Approved/vb/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt b/src/GitVersion.Output.Tests/Output/Approved/vb/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt new file mode 100644 index 0000000000..153d3275fa --- /dev/null +++ b/src/GitVersion.Output.Tests/Output/Approved/vb/GitVersionInfoGeneratorTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt @@ -0,0 +1,45 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' GitVersion +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Namespace My.Custom.Namespace + + + + NotInheritable Class GitVersionInformation + Private Sub New() + End Sub + Public Shared AssemblySemFileVer As String = "1.2.3.0" + Public Shared AssemblySemVer As String = "1.2.3.0" + Public Shared BranchName As String = "feature1" + Public Shared BuildMetaData As String = "5" + Public Shared CommitDate As String = "2014-03-06" + Public Shared CommitsSinceVersionSource As String = "5" + Public Shared EscapedBranchName As String = "feature1" + Public Shared FullBuildMetaData As String = "5.Branch.feature1.Sha.commitSha" + Public Shared FullSemVer As String = "1.2.3-unstable.4+5" + Public Shared InformationalVersion As String = "1.2.3-unstable.4+5.Branch.feature1.Sha.commitSha" + Public Shared Major As String = "1" + Public Shared MajorMinorPatch As String = "1.2.3" + Public Shared Minor As String = "2" + Public Shared Patch As String = "3" + Public Shared PreReleaseLabel As String = "unstable" + Public Shared PreReleaseLabelWithDash As String = "-unstable" + Public Shared PreReleaseNumber As String = "4" + Public Shared PreReleaseTag As String = "unstable.4" + Public Shared PreReleaseTagWithDash As String = "-unstable.4" + Public Shared SemVer As String = "1.2.3-unstable.4" + Public Shared Sha As String = "commitSha" + Public Shared ShortSha As String = "commitShortSha" + Public Shared UncommittedChanges As String = "0" + Public Shared VersionSourceSha As String = "versionSourceSha" + Public Shared WeightedPreReleaseNumber As String = "4" + End Class + +End Namespace diff --git a/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs b/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs index 2fa8cb6a09..56ac52df1b 100644 --- a/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs +++ b/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs @@ -53,10 +53,11 @@ public void ShouldCreateFile(string fileExtension) /// /// Regression test for issue #4196 (https://github.com/GitTools/GitVersion/issues/4196) /// - [TestCase] - public void ShouldProperlyOutputNamespaceDeclaration() + [TestCase("cs")] + [TestCase("fs")] + [TestCase("vb")] + public void ShouldProperlyOutputNamespaceDeclaration(string fileExtension) { - const string fileExtension = "cs"; const string targetNamespace = "My.Custom.Namespace"; var directory = PathHelper.Combine(PathHelper.GetTempPath(), "GitVersionInfoGeneratorTests", Guid.NewGuid().ToString()); diff --git a/src/GitVersion.Output/GitVersionInfo/Templates/GitVersionInformation.cs b/src/GitVersion.Output/GitVersionInfo/Templates/GitVersionInformation.cs index 12deef9fa3..46527b8ca3 100644 --- a/src/GitVersion.Output/GitVersionInfo/Templates/GitVersionInformation.cs +++ b/src/GitVersion.Output/GitVersionInfo/Templates/GitVersionInformation.cs @@ -7,22 +7,6 @@ // the code is regenerated. // //------------------------------------------------------------------------------ - -#if NET20 || NET35 || NETCOREAPP1_0 || NETCOREAPP1_1 || NETSTANDARD1_0 || NETSTANDARD1_1 || NETSTANDARD1_2 || NETSTANDARD1_3 || NETSTANDARD1_4 || NETSTANDARD1_5 || NETSTANDARD1_6 -namespace System.Diagnostics.CodeAnalysis -{{ - [global::System.AttributeUsage( - global::System.AttributeTargets.Assembly | - global::System.AttributeTargets.Class | - global::System.AttributeTargets.Struct | - global::System.AttributeTargets.Constructor | - global::System.AttributeTargets.Method | - global::System.AttributeTargets.Property | - global::System.AttributeTargets.Event, - Inherited = false, AllowMultiple = false)] - internal sealed class ExcludeFromCodeCoverageAttribute : global::System.Attribute {{ }} -}} -#endif {1}{2} {4}[global::System.Runtime.CompilerServices.CompilerGenerated] {4}[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] diff --git a/src/GitVersion.Output/GitVersionInfo/Templates/GitVersionInformation.fs b/src/GitVersion.Output/GitVersionInfo/Templates/GitVersionInformation.fs index 0862986636..5fff544676 100644 --- a/src/GitVersion.Output/GitVersionInfo/Templates/GitVersionInformation.fs +++ b/src/GitVersion.Output/GitVersionInfo/Templates/GitVersionInformation.fs @@ -8,22 +8,6 @@ // //------------------------------------------------------------------------------ -#if NET20 || NET35 || NETCOREAPP1_0 || NETCOREAPP1_1 || NETSTANDARD1_0 || NETSTANDARD1_1 || NETSTANDARD1_2 || NETSTANDARD1_3 || NETSTANDARD1_4 || NETSTANDARD1_5 || NETSTANDARD1_6 -namespace System.Diagnostics.CodeAnalysis - -[] -[] -type ExcludeFromCodeCoverageAttribute() = inherit global.System.Attribute() -#endif - namespace {1} [] diff --git a/src/GitVersion.Output/GitVersionInfo/Templates/GitVersionInformation.vb b/src/GitVersion.Output/GitVersionInfo/Templates/GitVersionInformation.vb index b7f3b7b923..48105ab7ce 100644 --- a/src/GitVersion.Output/GitVersionInfo/Templates/GitVersionInformation.vb +++ b/src/GitVersion.Output/GitVersionInfo/Templates/GitVersionInformation.vb @@ -8,22 +8,6 @@ ' '------------------------------------------------------------------------------ -#If NET20 OrElse NET35 OrElse NETCOREAPP1_0 OrElse NETCOREAPP1_1 OrElse NETSTANDARD1_0 OrElse NETSTANDARD1_1 OrElse NETSTANDARD1_2 OrElse NETSTANDARD1_3 OrElse NETSTANDARD1_4 OrElse NETSTANDARD1_5 OrElse NETSTANDARD1_6 Then -Namespace Global.System.Diagnostics.CodeAnalysis - - Friend NotInheritable Class ExcludeFromCodeCoverageAttribute - Inherits Global.System.Attribute - End Class -End Namespace -#End If - Namespace {1} diff --git a/src/GitVersion.Testing/Helpers/StringBuilderExtensions.cs b/src/GitVersion.Testing/Helpers/StringBuilderExtensions.cs index a17c0d4e1a..2893be4336 100644 --- a/src/GitVersion.Testing/Helpers/StringBuilderExtensions.cs +++ b/src/GitVersion.Testing/Helpers/StringBuilderExtensions.cs @@ -1,15 +1,11 @@ -#if NET7_0_OR_GREATER using System.Diagnostics.CodeAnalysis; -#endif namespace GitVersion.Testing.Internal; internal static class StringBuilderExtensions { public static void AppendLineFormat(this StringBuilder stringBuilder, -#if NET7_0_OR_GREATER [StringSyntax(StringSyntaxAttribute.CompositeFormat)] -#endif string format, params object?[] args) { From c595f606a7883122c95876251bd56bc395e9833e Mon Sep 17 00:00:00 2001 From: Wendelin Niesl Date: Mon, 18 Nov 2024 13:17:40 +0100 Subject: [PATCH 284/544] fix: Typo in continuous-deployment.md --- docs/input/docs/reference/modes/continuous-deployment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/input/docs/reference/modes/continuous-deployment.md b/docs/input/docs/reference/modes/continuous-deployment.md index d393f299ec..88d7f7887e 100644 --- a/docs/input/docs/reference/modes/continuous-deployment.md +++ b/docs/input/docs/reference/modes/continuous-deployment.md @@ -23,7 +23,7 @@ to deploy on production. This means that GitVersion will build * 1.1.0 * 1.1.1 -Tags are required in this mode to communicate when the deployement happens on production. +Tags are required in this mode to communicate when the deployment happens on production. ## Resources From deb3f51270c6a520a8400d1c725cf3ebfe8d39bc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 16:26:17 +0000 Subject: [PATCH 285/544] (deps): Bump Microsoft.CodeAnalysis.Common, Microsoft.CodeAnalysis.CSharp, Microsoft.CodeAnalysis.VisualBasic, Buildalyzer, Microsoft.Build, Microsoft.Build.Utilities.Core, Microsoft.Extensions.DependencyInjection and System.Security.Cryptography.Xml Bumps [Microsoft.CodeAnalysis.Common](https://github.com/dotnet/roslyn), [Microsoft.CodeAnalysis.CSharp](https://github.com/dotnet/roslyn), [Microsoft.CodeAnalysis.VisualBasic](https://github.com/dotnet/roslyn), [Buildalyzer](https://github.com/phmonte/Buildalyzer), [Microsoft.Build](https://github.com/dotnet/msbuild), [Microsoft.Build.Utilities.Core](https://github.com/dotnet/msbuild), [Microsoft.Extensions.DependencyInjection](https://github.com/dotnet/runtime) and [System.Security.Cryptography.Xml](https://github.com/dotnet/runtime). These dependencies needed to be updated together. Updates `Microsoft.CodeAnalysis.Common` from 4.11.0 to 4.0.0 - [Release notes](https://github.com/dotnet/roslyn/releases) - [Changelog](https://github.com/dotnet/roslyn/blob/main/docs/Breaking%20API%20Changes.md) - [Commits](https://github.com/dotnet/roslyn/commits) Updates `Microsoft.CodeAnalysis.CSharp` from 4.11.0 to 4.0.0 - [Release notes](https://github.com/dotnet/roslyn/releases) - [Changelog](https://github.com/dotnet/roslyn/blob/main/docs/Breaking%20API%20Changes.md) - [Commits](https://github.com/dotnet/roslyn/commits) Updates `Microsoft.CodeAnalysis.VisualBasic` from 4.11.0 to 4.0.0 - [Release notes](https://github.com/dotnet/roslyn/releases) - [Changelog](https://github.com/dotnet/roslyn/blob/main/docs/Breaking%20API%20Changes.md) - [Commits](https://github.com/dotnet/roslyn/commits) Updates `Buildalyzer` from 7.0.2 to 7.1.0 - [Release notes](https://github.com/phmonte/Buildalyzer/releases) - [Changelog](https://github.com/phmonte/Buildalyzer/blob/main/RELEASE.md) - [Commits](https://github.com/phmonte/Buildalyzer/compare/7.0.2...7.1.0) Updates `Microsoft.Build` from 17.12.6 to 17.10.4 - [Release notes](https://github.com/dotnet/msbuild/releases) - [Changelog](https://github.com/dotnet/msbuild/blob/main/documentation/Changelog.md) - [Commits](https://github.com/dotnet/msbuild/compare/v17.12.6...v17.10.4) Updates `Microsoft.Build.Utilities.Core` from 17.12.6 to 17.10.4 - [Release notes](https://github.com/dotnet/msbuild/releases) - [Changelog](https://github.com/dotnet/msbuild/blob/main/documentation/Changelog.md) - [Commits](https://github.com/dotnet/msbuild/compare/v17.12.6...v17.10.4) Updates `Microsoft.Extensions.DependencyInjection` from 9.0.0 to 6.0.0 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.0...v6.0.0) Updates `System.Security.Cryptography.Xml` from 9.0.0 to 8.0.0 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.0...v8.0.0) --- updated-dependencies: - dependency-name: Microsoft.CodeAnalysis.Common dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: Microsoft.CodeAnalysis.CSharp dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: Microsoft.CodeAnalysis.VisualBasic dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: Buildalyzer dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: Microsoft.Build dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: Microsoft.Build.Utilities.Core dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: Microsoft.Extensions.DependencyInjection dependency-type: direct:production update-type: version-update:semver-major - dependency-name: System.Security.Cryptography.Xml dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 62986a291f..f189e7cfaa 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -18,7 +18,7 @@ - + From b069cb8aa33b32c502b2e380f9ba7096982a913d Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 19 Nov 2024 07:49:54 +0100 Subject: [PATCH 286/544] refactor null checks using ArgumentException and ArgumentNullException Simplify null and whitespace checks by using ArgumentException.ThrowIfNullOrWhiteSpace and ArgumentNullException.ThrowIfNull. This reduces repetitive code and enhances readability across various methods. --- src/GitVersion.Core.Tests/Helpers/TestConsole.cs | 3 ++- src/GitVersion.Core/Core/FileSystem.cs | 6 ++---- .../Extensions/EnumerableExtensions.cs | 14 +++++--------- src/GitVersion.Core/Helpers/PathHelper.cs | 15 +++++++++------ src/GitVersion.Core/Helpers/StringFormatWith.cs | 11 ++--------- src/GitVersion.Core/Logging/LogExtensions.cs | 5 +---- src/GitVersion.Output/TemplateManager.cs | 15 +++------------ .../Fixtures/RepositoryFixtureBase.cs | 3 ++- src/GitVersion.Testing/Helpers/ProcessHelper.cs | 6 ++---- 9 files changed, 28 insertions(+), 50 deletions(-) diff --git a/src/GitVersion.Core.Tests/Helpers/TestConsole.cs b/src/GitVersion.Core.Tests/Helpers/TestConsole.cs index 6484730db2..8a73e0e7db 100644 --- a/src/GitVersion.Core.Tests/Helpers/TestConsole.cs +++ b/src/GitVersion.Core.Tests/Helpers/TestConsole.cs @@ -1,3 +1,4 @@ +using GitVersion.Extensions; using GitVersion.Helpers; using GitVersion.Logging; @@ -12,7 +13,7 @@ public class TestConsole(params string[] responses) : IConsole public void WriteLine() => this.log.Info(PathHelper.NewLine); - public void Write(string? msg) => this.log.Info(msg ?? throw new ArgumentNullException(nameof(msg))); + public void Write(string? msg) => this.log.Info(msg.NotNull()); public string ReadLine() => this.responses.Dequeue(); diff --git a/src/GitVersion.Core/Core/FileSystem.cs b/src/GitVersion.Core/Core/FileSystem.cs index d3c41b59ea..50bd61f3a2 100644 --- a/src/GitVersion.Core/Core/FileSystem.cs +++ b/src/GitVersion.Core/Core/FileSystem.cs @@ -24,16 +24,14 @@ public void WriteAllText(string? file, string fileContents) public void WriteAllText(string? file, string fileContents, Encoding encoding) { - if (string.IsNullOrEmpty(file)) - throw new ArgumentNullException(nameof(file)); + ArgumentException.ThrowIfNullOrWhiteSpace(file); File.WriteAllText(file, fileContents, encoding); } public IEnumerable DirectoryEnumerateFiles(string? directory, string searchPattern, SearchOption searchOption) { - if (string.IsNullOrEmpty(directory)) - throw new ArgumentNullException(nameof(directory)); + ArgumentException.ThrowIfNullOrWhiteSpace(directory); return Directory.EnumerateFiles(directory, searchPattern, searchOption); } diff --git a/src/GitVersion.Core/Extensions/EnumerableExtensions.cs b/src/GitVersion.Core/Extensions/EnumerableExtensions.cs index 085de0f618..764fb89008 100644 --- a/src/GitVersion.Core/Extensions/EnumerableExtensions.cs +++ b/src/GitVersion.Core/Extensions/EnumerableExtensions.cs @@ -4,12 +4,11 @@ public static class EnumerableExtensions { public static T? OnlyOrDefault(this IEnumerable source) { - switch (source) + ArgumentNullException.ThrowIfNull(source); + + if (source is IList { Count: 1 } list) { - case null: - throw new ArgumentNullException(nameof(source)); - case IList { Count: 1 } list: - return list[0]; + return list[0]; } using var e = source.GetEnumerator(); @@ -21,10 +20,7 @@ public static class EnumerableExtensions public static T SingleOfType(this IEnumerable source) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } + ArgumentNullException.ThrowIfNull(source); return source.OfType().Single(); } diff --git a/src/GitVersion.Core/Helpers/PathHelper.cs b/src/GitVersion.Core/Helpers/PathHelper.cs index b89918ed75..caafb1b703 100644 --- a/src/GitVersion.Core/Helpers/PathHelper.cs +++ b/src/GitVersion.Core/Helpers/PathHelper.cs @@ -35,8 +35,8 @@ public static string GetFullPath(string? path) public static string Combine(string? path1, string? path2) { - if (path1 == null || path2 == null) - throw new ArgumentNullException((path1 == null) ? nameof(path1) : nameof(path2)); + ArgumentException.ThrowIfNullOrWhiteSpace(path1); + ArgumentException.ThrowIfNullOrWhiteSpace(path2); return Path.Combine(path1, path2); } @@ -50,16 +50,19 @@ public static string Combine(string? path1) public static string Combine(string? path1, string? path2, string? path3) { - if (path1 == null || path2 == null || path3 == null) - throw new ArgumentNullException((path1 == null) ? nameof(path1) : (path2 == null) ? nameof(path2) : nameof(path3)); + ArgumentException.ThrowIfNullOrWhiteSpace(path1); + ArgumentException.ThrowIfNullOrWhiteSpace(path2); + ArgumentException.ThrowIfNullOrWhiteSpace(path3); return Path.Combine(path1, path2, path3); } public static string Combine(string? path1, string? path2, string? path3, string? path4) { - if (path1 == null || path2 == null || path3 == null || path4 == null) - throw new ArgumentNullException((path1 == null) ? nameof(path1) : (path2 == null) ? nameof(path2) : (path3 == null) ? nameof(path3) : nameof(path4)); + ArgumentException.ThrowIfNullOrWhiteSpace(path1); + ArgumentException.ThrowIfNullOrWhiteSpace(path2); + ArgumentException.ThrowIfNullOrWhiteSpace(path3); + ArgumentException.ThrowIfNullOrWhiteSpace(path4); return Path.Combine(path1, path2, path3, path4); } diff --git a/src/GitVersion.Core/Helpers/StringFormatWith.cs b/src/GitVersion.Core/Helpers/StringFormatWith.cs index c6732c24c5..5aa51b5ae0 100644 --- a/src/GitVersion.Core/Helpers/StringFormatWith.cs +++ b/src/GitVersion.Core/Helpers/StringFormatWith.cs @@ -30,15 +30,8 @@ internal static class StringFormatWithExtension /// public static string FormatWith(this string template, T? source, IEnvironment environment) { - if (template is null) - { - throw new ArgumentNullException(nameof(template)); - } - - if (source is null) - { - throw new ArgumentNullException(nameof(source)); - } + ArgumentNullException.ThrowIfNull(template); + ArgumentNullException.ThrowIfNull(source); foreach (Match match in RegexPatterns.Common.ExpandTokensRegex.Matches(template).Cast()) { diff --git a/src/GitVersion.Core/Logging/LogExtensions.cs b/src/GitVersion.Core/Logging/LogExtensions.cs index 77dff958a6..56d83b3321 100644 --- a/src/GitVersion.Core/Logging/LogExtensions.cs +++ b/src/GitVersion.Core/Logging/LogExtensions.cs @@ -96,10 +96,7 @@ private static void Write(this ILog log, LogLevel level, LogAction? logAction) private static IDisposable WithVerbosity(this ILog log, Verbosity verbosity) { - if (log == null) - { - throw new ArgumentNullException(nameof(log)); - } + ArgumentNullException.ThrowIfNull(log); var lastVerbosity = log.Verbosity; log.Verbosity = verbosity; return Disposable.Create(() => log.Verbosity = lastVerbosity); diff --git a/src/GitVersion.Output/TemplateManager.cs b/src/GitVersion.Output/TemplateManager.cs index 8246369fc2..7eb60d3d54 100644 --- a/src/GitVersion.Output/TemplateManager.cs +++ b/src/GitVersion.Output/TemplateManager.cs @@ -15,10 +15,7 @@ internal class TemplateManager(TemplateType templateType) public string? GetTemplateFor(string fileExtension) { - if (fileExtension == null) - { - throw new ArgumentNullException(nameof(fileExtension)); - } + ArgumentNullException.ThrowIfNull(fileExtension); string? result = null; @@ -32,10 +29,7 @@ internal class TemplateManager(TemplateType templateType) public string? GetAddFormatFor(string fileExtension) { - if (fileExtension == null) - { - throw new ArgumentNullException(nameof(fileExtension)); - } + ArgumentNullException.ThrowIfNull(fileExtension); string? result = null; @@ -49,10 +43,7 @@ internal class TemplateManager(TemplateType templateType) public bool IsSupported(string fileExtension) { - if (fileExtension == null) - { - throw new ArgumentNullException(nameof(fileExtension)); - } + ArgumentNullException.ThrowIfNull(fileExtension); return this.templates.ContainsKey(fileExtension); } diff --git a/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs b/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs index 2da6a5069f..1ac92f2086 100644 --- a/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs +++ b/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs @@ -1,6 +1,7 @@ using GitVersion.Helpers; using GitVersion.Testing.Internal; using LibGit2Sharp; +using Shouldly; namespace GitVersion.Testing; @@ -17,7 +18,7 @@ protected RepositoryFixtureBase(Func repositoryBuilder) protected RepositoryFixtureBase(Repository repository) { SequenceDiagram = new(); - Repository = repository ?? throw new ArgumentNullException(nameof(repository)); + Repository = repository.ShouldNotBeNull(); Repository.Config.Set("user.name", "Test"); Repository.Config.Set("user.email", "test@email.com"); } diff --git a/src/GitVersion.Testing/Helpers/ProcessHelper.cs b/src/GitVersion.Testing/Helpers/ProcessHelper.cs index b5f269ce95..466472bd1e 100644 --- a/src/GitVersion.Testing/Helpers/ProcessHelper.cs +++ b/src/GitVersion.Testing/Helpers/ProcessHelper.cs @@ -76,10 +76,8 @@ public static class ProcessHelper // http://csharptest.net/532/using-processstart-to-capture-console-output/ public static int Run(Action output, Action errorOutput, TextReader? input, string exe, string args, string workingDirectory, params KeyValuePair[] environmentalVariables) { - if (string.IsNullOrEmpty(exe)) - throw new ArgumentNullException(nameof(exe)); - if (output == null) - throw new ArgumentNullException(nameof(output)); + ArgumentException.ThrowIfNullOrWhiteSpace(exe); + ArgumentNullException.ThrowIfNull(output); var psi = new ProcessStartInfo { From 8dc3cd1c9fc8516f1c14b7594eb3dc3ed18ff222 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Nov 2024 16:12:36 +0000 Subject: [PATCH 287/544] (deps): Bump Microsoft.NET.Test.Sdk Bumps the microsoft group with 1 update in the /src directory: [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest). Updates `Microsoft.NET.Test.Sdk` from 17.11.1 to 17.12.0 - [Release notes](https://github.com/microsoft/vstest/releases) - [Changelog](https://github.com/microsoft/vstest/blob/main/docs/releases.md) - [Commits](https://github.com/microsoft/vstest/compare/v17.11.1...v17.12.0) --- updated-dependencies: - dependency-name: Microsoft.NET.Test.Sdk dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index f189e7cfaa..b16159dacf 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -29,7 +29,7 @@ - + From 6c1cfcc8c37396be3b9adbc88148280ae9c89462 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 20 Nov 2024 07:07:12 +0100 Subject: [PATCH 288/544] (dependabot) Add .NET SDK to Dependabot configuration This commit introduces the .NET SDK to the Dependabot configuration file. By doing so, it ensures that dependencies for .NET SDK are automatically tracked and updated. Labels and commit message prefixes are also specified for consistency. --- .github/dependabot.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index ecc644fda4..60831b08ed 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,5 +1,13 @@ version: 2 updates: +- package-ecosystem: dotnet-sdk + labels: + - "dependencies" + commit-message: + prefix: "(deps)" + directory: "/" + schedule: + interval: daily - package-ecosystem: nuget labels: - "dependencies" From de3e0f4166da8b8322f018902949ca2197829065 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2024 16:47:41 +0000 Subject: [PATCH 289/544] (deps): Bump YamlDotNet from 16.2.0 to 16.2.1 in /src Bumps [YamlDotNet](https://github.com/aaubry/YamlDotNet) from 16.2.0 to 16.2.1. - [Release notes](https://github.com/aaubry/YamlDotNet/releases) - [Commits](https://github.com/aaubry/YamlDotNet/compare/v16.2.0...v16.2.1) --- updated-dependencies: - dependency-name: YamlDotNet dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index b16159dacf..b5967e536e 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -39,7 +39,7 @@ - + \ No newline at end of file From ef7f0bc1ece6fe8c1211b27ba424ade47661b75c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2024 16:48:12 +0000 Subject: [PATCH 290/544] (deps): Bump JsonSchema.Net.Generation from 4.5.1 to 4.6.0 in /src Bumps [JsonSchema.Net.Generation](https://github.com/json-everything/json-everything) from 4.5.1 to 4.6.0. - [Commits](https://github.com/json-everything/json-everything/compare/schema-gen-v4.5.1...schema-gen-v4.6.0) --- updated-dependencies: - dependency-name: JsonSchema.Net.Generation dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index b5967e536e..7b94376646 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -19,7 +19,7 @@ - + From ec820b90cedf5cf8a7512e097be41002ddd7b5dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Dec 2024 15:50:39 +0000 Subject: [PATCH 291/544] (deps): Bump LibGit2Sharp from 0.30.0 to 0.31.0 in /new-cli Bumps [LibGit2Sharp](https://github.com/libgit2/libgit2sharp) from 0.30.0 to 0.31.0. - [Release notes](https://github.com/libgit2/libgit2sharp/releases) - [Changelog](https://github.com/libgit2/libgit2sharp/blob/master/CHANGES.md) - [Commits](https://github.com/libgit2/libgit2sharp/compare/0.30.0...0.31.0) --- updated-dependencies: - dependency-name: LibGit2Sharp dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 954cffd0ea..dfa00fa4e1 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -4,7 +4,7 @@ - + From 48161abf4762132612c7e84d20ae1977f1e4ba59 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Dec 2024 15:49:57 +0000 Subject: [PATCH 292/544] (deps): Bump dotnet-sdk from 9.0.100 to 9.0.101 Bumps [dotnet-sdk](https://github.com/dotnet/sdk) from 9.0.100 to 9.0.101. - [Release notes](https://github.com/dotnet/sdk/releases) - [Commits](https://github.com/dotnet/sdk/commits) --- updated-dependencies: - dependency-name: dotnet-sdk dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index 7806149646..7b200833ee 100644 --- a/global.json +++ b/global.json @@ -5,6 +5,6 @@ "src" ], "sdk": { - "version": "9.0.100" + "version": "9.0.101" } } From 5c84c80bf0049f2e81053decd5df2bfcd1a75b12 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 4 Dec 2024 13:17:55 +0100 Subject: [PATCH 293/544] Simplify ArgumentBuilder and remove unused parameters Refactored the ArgumentBuilder class to reduce complexity by consolidating constructors and eliminating redundant parameters. Removed the obsolete ExecuteIn method that utilized these parameters from GitVersionHelper. Updated the test case to align with the new method signature and ensure functionality remains intact. --- .../Helpers/ArgumentBuilder.cs | 53 ++----------------- .../Helpers/GitVersionHelper.cs | 14 ----- 2 files changed, 4 insertions(+), 63 deletions(-) diff --git a/src/GitVersion.App.Tests/Helpers/ArgumentBuilder.cs b/src/GitVersion.App.Tests/Helpers/ArgumentBuilder.cs index 5b05685c41..38678c4987 100644 --- a/src/GitVersion.App.Tests/Helpers/ArgumentBuilder.cs +++ b/src/GitVersion.App.Tests/Helpers/ArgumentBuilder.cs @@ -2,30 +2,11 @@ namespace GitVersion.App.Tests; -public class ArgumentBuilder +public class ArgumentBuilder(string? workingDirectory, string? additionalArguments, string? logFile) { - public ArgumentBuilder(string? workingDirectory) => this.WorkingDirectory = workingDirectory; + public string? WorkingDirectory { get; } = workingDirectory; - public ArgumentBuilder(string? workingDirectory, string? exec, string? execArgs, string? projectFile, string? projectArgs, string? logFile) - { - this.WorkingDirectory = workingDirectory; - this.exec = exec; - this.execArgs = execArgs; - this.projectFile = projectFile; - this.projectArgs = projectArgs; - this.LogFile = logFile; - } - - public ArgumentBuilder(string? workingDirectory, string? additionalArguments, string? logFile) - { - this.WorkingDirectory = workingDirectory; - this.additionalArguments = additionalArguments; - this.LogFile = logFile; - } - - public string? WorkingDirectory { get; } - - public string? LogFile { get; } + public string? LogFile { get; } = logFile; public override string ToString() { @@ -36,39 +17,13 @@ public override string ToString() arguments.Append(" /targetpath \"").Append(this.WorkingDirectory).Append('\"'); } - if (!this.exec.IsNullOrWhiteSpace()) - { - arguments.Append(" /exec \"").Append(this.exec).Append('\"'); - } - - if (!this.execArgs.IsNullOrWhiteSpace()) - { - arguments.Append(" /execArgs \"").Append(this.execArgs).Append('\"'); - } - - if (!this.projectFile.IsNullOrWhiteSpace()) - { - arguments.Append(" /proj \"").Append(this.projectFile).Append('\"'); - } - - if (!this.projectArgs.IsNullOrWhiteSpace()) - { - arguments.Append(" /projargs \"").Append(this.projectArgs).Append('\"'); - } - if (!this.LogFile.IsNullOrWhiteSpace()) { arguments.Append(" /l \"").Append(this.LogFile).Append('\"'); } - arguments.Append(this.additionalArguments); + arguments.Append(additionalArguments); return arguments.ToString(); } - - private readonly string? additionalArguments; - private readonly string? exec; - private readonly string? execArgs; - private readonly string? projectArgs; - private readonly string? projectFile; } diff --git a/src/GitVersion.App.Tests/Helpers/GitVersionHelper.cs b/src/GitVersion.App.Tests/Helpers/GitVersionHelper.cs index 2e8aa0e3ae..6e46593bb2 100644 --- a/src/GitVersion.App.Tests/Helpers/GitVersionHelper.cs +++ b/src/GitVersion.App.Tests/Helpers/GitVersionHelper.cs @@ -7,20 +7,6 @@ namespace GitVersion.App.Tests; public static class GitVersionHelper { - public static ExecutionResults ExecuteIn(string? workingDirectory, - string? exec = null, - string? execArgs = null, - string? projectFile = null, - string? projectArgs = null, - bool logToFile = true, - params KeyValuePair[] environments - ) - { - var logFile = logToFile ? PathHelper.Combine(workingDirectory, "log.txt") : null; - var args = new ArgumentBuilder(workingDirectory, exec, execArgs, projectFile, projectArgs, logFile); - return ExecuteIn(args, environments); - } - public static ExecutionResults ExecuteIn( string? workingDirectory, string? arguments, From 1ee8ef32a1746be018463f861f502ae353e4c095 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 4 Dec 2024 13:17:55 +0100 Subject: [PATCH 294/544] Simplify ArgumentBuilder and remove unused parameters Refactored the ArgumentBuilder class to reduce complexity by consolidating constructors and eliminating redundant parameters. Removed the obsolete ExecuteIn method that utilized these parameters from GitVersionHelper. Updated the test case to align with the new method signature and ensure functionality remains intact. --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index dfa00fa4e1..954cffd0ea 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -4,7 +4,7 @@ - + From fb71e8a2444a16ca6a2f0bb7405550321f30f653 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 4 Dec 2024 23:44:25 +0100 Subject: [PATCH 295/544] Ignore specific version of LibGit2Sharp in Dependabot This change adds an ignore rule for version 0.31.0 of the LibGit2Sharp dependency in the Dependabot configuration file. --- .github/dependabot.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 60831b08ed..f74944833f 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -32,6 +32,8 @@ updates: - "/new-cli" - "/src" - "/" + ignore: + - dependency-name: "LibGit2Sharp" schedule: interval: daily open-pull-requests-limit: 10 From 0fecafcccff25f3b06df0226e908fbe426708b42 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 15:48:35 +0000 Subject: [PATCH 296/544] (build deps): Bump crazy-max/ghaction-setup-docker from 3 to 4 Bumps [crazy-max/ghaction-setup-docker](https://github.com/crazy-max/ghaction-setup-docker) from 3 to 4. - [Release notes](https://github.com/crazy-max/ghaction-setup-docker/releases) - [Commits](https://github.com/crazy-max/ghaction-setup-docker/compare/v3...v4) --- updated-dependencies: - dependency-name: crazy-max/ghaction-setup-docker dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/_docker.yml | 2 +- .github/workflows/_docker_manifests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/_docker.yml b/.github/workflows/_docker.yml index dcf56d056c..8514377ad6 100644 --- a/.github/workflows/_docker.yml +++ b/.github/workflows/_docker.yml @@ -43,7 +43,7 @@ jobs: path: ${{ github.workspace }}/artifacts/packages/nuget - name: Set up Docker - uses: crazy-max/ghaction-setup-docker@v3 + uses: docker/setup-docker-action@v4 with: daemon-config: '{ "features": { "containerd-snapshotter": true } }' - diff --git a/.github/workflows/_docker_manifests.yml b/.github/workflows/_docker_manifests.yml index abb3b5cd05..2e72c53e51 100644 --- a/.github/workflows/_docker_manifests.yml +++ b/.github/workflows/_docker_manifests.yml @@ -31,7 +31,7 @@ jobs: uses: ./.github/actions/cache-restore - name: Set up Docker - uses: crazy-max/ghaction-setup-docker@v3 + uses: docker/setup-docker-action@v4 with: daemon-config: '{ "features": { "containerd-snapshotter": true } }' - From 2305b7cef270b6e248e6e123f3f33f130ee19fbd Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 18 Nov 2024 13:21:49 +0100 Subject: [PATCH 297/544] removed TestFileSystem and usage --- .../GitVersion.App.Tests.csproj | 2 - .../ConfigurationProviderTests.cs | 3 +- .../Configuration/Extensions.cs | 6 ++ .../Core/DynamicRepositoryTests.cs | 6 +- .../Helpers/GitVersionCoreTestModule.cs | 2 +- .../Helpers/TestFileSystem.cs | 96 ------------------- .../Helpers/TestStream.cs | 38 -------- src/GitVersion.Core/Helpers/PathHelper.cs | 7 ++ .../Caching/GitVersionCacheKeyFactory.cs | 2 +- .../GitVersion.MsBuild.Tests.csproj | 2 - .../Output/AssemblyInfoFileUpdaterTests.cs | 4 +- .../Output/WixFileTests.cs | 4 + .../WixUpdater/WixVersionFileUpdater.cs | 10 +- src/GitVersion.sln.DotSettings | 13 +-- 14 files changed, 39 insertions(+), 156 deletions(-) delete mode 100644 src/GitVersion.Core.Tests/Helpers/TestFileSystem.cs delete mode 100644 src/GitVersion.Core.Tests/Helpers/TestStream.cs diff --git a/src/GitVersion.App.Tests/GitVersion.App.Tests.csproj b/src/GitVersion.App.Tests/GitVersion.App.Tests.csproj index 0d2f6f3e71..111e288a9f 100644 --- a/src/GitVersion.App.Tests/GitVersion.App.Tests.csproj +++ b/src/GitVersion.App.Tests/GitVersion.App.Tests.csproj @@ -19,9 +19,7 @@ - - diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs index 9ece53a3f5..f693649640 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs @@ -285,7 +285,8 @@ public void NoWarnOnGitVersionYmlFile() this.configurationProvider.ProvideForDirectory(this.repoPath); - stringLogger.Length.ShouldBe(0); + var filePath = PathHelper.Combine(this.repoPath, ConfigurationFileLocator.DefaultFileName); + stringLogger.ShouldContain($"Found configuration file at '{filePath}'"); } [Test] diff --git a/src/GitVersion.Configuration.Tests/Configuration/Extensions.cs b/src/GitVersion.Configuration.Tests/Configuration/Extensions.cs index 96db0f145c..6000db6c6c 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/Extensions.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/Extensions.cs @@ -13,6 +13,12 @@ public static IDisposable SetupConfigFile(this IFileSystem fileSystem, s } var fullPath = PathHelper.Combine(path, fileName); + var directory = PathHelper.GetDirectoryName(fullPath); + if (!fileSystem.DirectoryExists(directory)) + { + fileSystem.CreateDirectory(directory); + } + fileSystem.WriteAllText(fullPath, text); return Disposable.Create(fullPath, () => fileSystem.Delete(fullPath)); diff --git a/src/GitVersion.Core.Tests/Core/DynamicRepositoryTests.cs b/src/GitVersion.Core.Tests/Core/DynamicRepositoryTests.cs index 0535fc714e..ff6db85e6e 100644 --- a/src/GitVersion.Core.Tests/Core/DynamicRepositoryTests.cs +++ b/src/GitVersion.Core.Tests/Core/DynamicRepositoryTests.cs @@ -23,7 +23,7 @@ private static void ClearReadOnly(DirectoryInfo parentDirectory) } } - [OneTimeSetUp] + [SetUp] public void CreateTemporaryRepository() { // Note: we can't use guid because paths will be too long @@ -41,15 +41,15 @@ public void CreateTemporaryRepository() Directory.CreateDirectory(this.workDirectory); } - [OneTimeTearDown] + [TearDown] public void Cleanup() { } // Note: use same name twice to see if changing commits works on same (cached) repository [NonParallelizable] - [TestCase("GV_main", "https://github.com/GitTools/GitVersion", MainBranch, "efddf2f92c539a9c27f1904d952dcab8fb955f0e", "5.8.2-56")] [TestCase("GV_main", "https://github.com/GitTools/GitVersion", MainBranch, "2dc142a4a4df77db61a00d9fb7510b18b3c2c85a", "5.8.2-47")] + [TestCase("GV_main", "https://github.com/GitTools/GitVersion", MainBranch, "efddf2f92c539a9c27f1904d952dcab8fb955f0e", "5.8.2-56")] public void FindsVersionInDynamicRepo(string name, string url, string targetBranch, string commitId, string expectedFullSemVer) { var root = PathHelper.Combine(this.workDirectory, name); diff --git a/src/GitVersion.Core.Tests/Helpers/GitVersionCoreTestModule.cs b/src/GitVersion.Core.Tests/Helpers/GitVersionCoreTestModule.cs index e6410ceb26..755287a94d 100644 --- a/src/GitVersion.Core.Tests/Helpers/GitVersionCoreTestModule.cs +++ b/src/GitVersion.Core.Tests/Helpers/GitVersionCoreTestModule.cs @@ -17,7 +17,7 @@ public void RegisterTypes(IServiceCollection services) services.AddModule(new GitVersionConfigurationModule()); services.AddModule(new GitVersionCoreModule()); - services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); } diff --git a/src/GitVersion.Core.Tests/Helpers/TestFileSystem.cs b/src/GitVersion.Core.Tests/Helpers/TestFileSystem.cs deleted file mode 100644 index 06a4f74ee4..0000000000 --- a/src/GitVersion.Core.Tests/Helpers/TestFileSystem.cs +++ /dev/null @@ -1,96 +0,0 @@ -using GitVersion.Helpers; - -namespace GitVersion.Core.Tests.Helpers; - -public class TestFileSystem : IFileSystem -{ - private readonly Dictionary fileSystem = new(SysEnv.OSVersion.Platform == PlatformID.Unix ? StringComparer.Ordinal : StringComparer.OrdinalIgnoreCase); - - public void Copy(string from, string to, bool overwrite) - { - var fromPath = Path.GetFullPath(from); - var toPath = Path.GetFullPath(to); - if (this.fileSystem.ContainsKey(toPath)) - { - if (overwrite) - this.fileSystem.Remove(toPath); - else - throw new IOException("File already exists"); - } - - if (!this.fileSystem.TryGetValue(fromPath, out var source)) - throw new FileNotFoundException($"The source file '{fromPath}' was not found", from); - - this.fileSystem.Add(toPath, source); - } - - public void Move(string from, string to) - { - var fromPath = Path.GetFullPath(from); - Copy(from, to, false); - this.fileSystem.Remove(fromPath); - } - - public bool Exists(string file) - { - var path = Path.GetFullPath(file); - return this.fileSystem.ContainsKey(path); - } - - public void Delete(string path) - { - var fullPath = Path.GetFullPath(path); - this.fileSystem.Remove(fullPath); - } - - public string ReadAllText(string path) - { - var fullPath = Path.GetFullPath(path); - if (!this.fileSystem.TryGetValue(fullPath, out var content)) - throw new FileNotFoundException($"The file '{fullPath}' was not found", fullPath); - - var encoding = EncodingHelper.DetectEncoding(content) ?? Encoding.UTF8; - return encoding.GetString(content); - } - - public void WriteAllText(string? file, string fileContents) - { - var path = Path.GetFullPath(file ?? throw new ArgumentNullException(nameof(file))); - var encoding = fileSystem.TryGetValue(path, out var value) ? EncodingHelper.DetectEncoding(value) ?? Encoding.UTF8 - : Encoding.UTF8; - WriteAllText(path, fileContents, encoding); - } - - public void WriteAllText(string? file, string fileContents, Encoding encoding) - { - var path = Path.GetFullPath(file ?? throw new ArgumentNullException(nameof(file))); - this.fileSystem[path] = encoding.GetBytes(fileContents); - } - - public IEnumerable DirectoryEnumerateFiles(string? directory, string searchPattern, SearchOption searchOption) => throw new NotImplementedException(); - - public Stream OpenWrite(string path) => new TestStream(path, this); - - public Stream OpenRead(string path) - { - var fullPath = Path.GetFullPath(path); - if (!this.fileSystem.TryGetValue(fullPath, out var content)) - throw new FileNotFoundException("File not found.", fullPath); - - return new MemoryStream(content); - } - - public void CreateDirectory(string path) - { - var fullPath = Path.GetFullPath(path); - this.fileSystem[fullPath] = []; - } - - public bool DirectoryExists(string path) - { - var fullPath = Path.GetFullPath(path); - return this.fileSystem.ContainsKey(fullPath); - } - - public long GetLastDirectoryWrite(string path) => 1; -} diff --git a/src/GitVersion.Core.Tests/Helpers/TestStream.cs b/src/GitVersion.Core.Tests/Helpers/TestStream.cs deleted file mode 100644 index 836a45474f..0000000000 --- a/src/GitVersion.Core.Tests/Helpers/TestStream.cs +++ /dev/null @@ -1,38 +0,0 @@ -namespace GitVersion.Core.Tests.Helpers; - -public class TestStream(string path, IFileSystem testFileSystem) : Stream -{ - private readonly MemoryStream underlying = new(); - - protected override void Dispose(bool disposing) - { - Flush(); - base.Dispose(disposing); - } - - public override void Flush() - { - this.underlying.Position = 0; - var readToEnd = new StreamReader(this.underlying).ReadToEnd(); - testFileSystem.WriteAllText(path, readToEnd); - } - - public override long Seek(long offset, SeekOrigin origin) => this.underlying.Seek(offset, origin); - - public override void SetLength(long value) => this.underlying.SetLength(value); - - public override int Read(byte[] buffer, int offset, int count) => this.underlying.Read(buffer, offset, count); - - public override void Write(byte[] buffer, int offset, int count) => this.underlying.Write(buffer, offset, count); - - public override bool CanRead => this.underlying.CanRead; - public override bool CanSeek => this.underlying.CanSeek; - public override bool CanWrite => this.underlying.CanWrite; - public override long Length => this.underlying.Length; - - public override long Position - { - get => this.underlying.Position; - set => this.underlying.Position = value; - } -} diff --git a/src/GitVersion.Core/Helpers/PathHelper.cs b/src/GitVersion.Core/Helpers/PathHelper.cs index caafb1b703..3c9d853a1d 100644 --- a/src/GitVersion.Core/Helpers/PathHelper.cs +++ b/src/GitVersion.Core/Helpers/PathHelper.cs @@ -26,6 +26,13 @@ public static string GetTempPath() public static string GetRepositoryTempPath() => Combine(GetTempPath(), "TestRepositories", Guid.NewGuid().ToString()); + public static string GetDirectoryName(string? path) + { + ArgumentNullException.ThrowIfNull(path, nameof(path)); + + return Path.GetDirectoryName(path)!; + } + public static string GetFullPath(string? path) { ArgumentNullException.ThrowIfNull(path, nameof(path)); diff --git a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs index f2cd6919a1..c24047a798 100644 --- a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs +++ b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs @@ -118,7 +118,7 @@ private List CalculateDirectoryContents(string root) { var fi = new FileInfo(file); result.Add(fi.Name); - result.Add(File.ReadAllText(file)); + result.Add(this.fileSystem.ReadAllText(file)); } catch (IOException e) { diff --git a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj index b7677e977d..428b5be4a2 100644 --- a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj +++ b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj @@ -31,9 +31,7 @@ - - diff --git a/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs b/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs index 8ce95285be..557d7d1abd 100644 --- a/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs +++ b/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs @@ -19,7 +19,7 @@ public class AssemblyInfoFileUpdaterTests : TestBase private string workingDir; [OneTimeSetUp] - public void OneTimeSetUp() => workingDir = PathHelper.Combine(PathHelper.GetTempPath(), "AssemblyInfoFileUpdaterTests"); + public void OneTimeSetUp() => workingDir = PathHelper.Combine(PathHelper.GetTempPath(), nameof(AssemblyInfoFileUpdaterTests)); [OneTimeTearDown] public void OneTimeTearDown() => DirectoryHelper.DeleteDirectory(workingDir); @@ -93,7 +93,7 @@ public void ShouldCreateAssemblyInfoFilesAtPathWhenNotExistsAndEnsureAssemblyInf [TestCase("vb")] public void ShouldNotCreateAssemblyInfoFileWhenNotExistsAndNotEnsureAssemblyInfo(string fileExtension) { - var assemblyInfoFile = "VersionAssemblyInfo." + fileExtension; + var assemblyInfoFile = "NoVersionAssemblyInfo." + fileExtension; var fullPath = PathHelper.Combine(workingDir, assemblyInfoFile); var variables = this.variableProvider.GetVariablesFor( SemanticVersion.Parse("1.0.0", RegexPatterns.Configuration.DefaultTagPrefixPattern), EmptyConfigurationBuilder.New.Build(), 0 diff --git a/src/GitVersion.Output.Tests/Output/WixFileTests.cs b/src/GitVersion.Output.Tests/Output/WixFileTests.cs index 4d41fec15b..ebd91284f2 100644 --- a/src/GitVersion.Output.Tests/Output/WixFileTests.cs +++ b/src/GitVersion.Output.Tests/Output/WixFileTests.cs @@ -95,6 +95,10 @@ public void UpdateWixVersionFileWhenFileAlreadyExists() // fake an already existing file var file = PathHelper.Combine(workingDir, WixVersionFileUpdater.WixVersionFileName); + if (!fileSystem.DirectoryExists(workingDir)) + { + fileSystem.CreateDirectory(workingDir); + } fileSystem.WriteAllText(file, new('x', 1024 * 1024)); wixVersionFileUpdater.Execute(versionVariables, new(workingDir)); diff --git a/src/GitVersion.Output/WixUpdater/WixVersionFileUpdater.cs b/src/GitVersion.Output/WixUpdater/WixVersionFileUpdater.cs index 3d2dfe0104..4f76e347ac 100644 --- a/src/GitVersion.Output/WixUpdater/WixVersionFileUpdater.cs +++ b/src/GitVersion.Output/WixUpdater/WixVersionFileUpdater.cs @@ -25,7 +25,15 @@ public void Execute(GitVersionVariables variables, WixVersionContext context) var root = doc.DocumentElement; doc.InsertBefore(xmlDecl, root); - this.fileSystem.Delete(this.wixVersionFile); + if (this.fileSystem.Exists(this.wixVersionFile)) + { + this.fileSystem.Delete(this.wixVersionFile); + } + + if (!this.fileSystem.DirectoryExists(context.WorkingDirectory)) + { + this.fileSystem.CreateDirectory(context.WorkingDirectory); + } using var fs = this.fileSystem.OpenWrite(this.wixVersionFile); doc.Save(fs); } diff --git a/src/GitVersion.sln.DotSettings b/src/GitVersion.sln.DotSettings index 9d9eae6664..970fd59ec8 100644 --- a/src/GitVersion.sln.DotSettings +++ b/src/GitVersion.sln.DotSettings @@ -707,16 +707,11 @@ II.2.12 <HandlesEvent /> True True True - - - True + True False - - - - - <data /> + <data /> <data><IncludeFilters /><ExcludeFilters /></data> True True - True + True + True From 62f782fa39603f0a32c304889eaa6b0df19cc1ca Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 27 Nov 2024 05:28:23 +0100 Subject: [PATCH 298/544] Fix repo setup logic in DynamicRepositoryTests code cleanup --- .../Core/DynamicRepositoryTests.cs | 31 ++++--------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/src/GitVersion.Core.Tests/Core/DynamicRepositoryTests.cs b/src/GitVersion.Core.Tests/Core/DynamicRepositoryTests.cs index ff6db85e6e..3a97ddbe3b 100644 --- a/src/GitVersion.Core.Tests/Core/DynamicRepositoryTests.cs +++ b/src/GitVersion.Core.Tests/Core/DynamicRepositoryTests.cs @@ -10,39 +10,20 @@ public class DynamicRepositoryTests : TestBase { private string? workDirectory; - private static void ClearReadOnly(DirectoryInfo parentDirectory) - { - parentDirectory.Attributes = FileAttributes.Normal; - foreach (var fi in parentDirectory.GetFiles()) - { - fi.Attributes = FileAttributes.Normal; - } - foreach (var di in parentDirectory.GetDirectories()) - { - ClearReadOnly(di); - } - } - [SetUp] - public void CreateTemporaryRepository() + public void SetUp() { - // Note: we can't use guid because paths will be too long + // // Note: we can't use guid because paths will be too long this.workDirectory = PathHelper.Combine(Path.GetTempPath(), "GV"); - // Clean directory upfront, some build agents are having troubles - if (Directory.Exists(this.workDirectory)) + if (!Directory.Exists(this.workDirectory)) { - var di = new DirectoryInfo(this.workDirectory); - ClearReadOnly(di); - - Directory.Delete(this.workDirectory, true); + Directory.CreateDirectory(this.workDirectory); } - - Directory.CreateDirectory(this.workDirectory); } [TearDown] - public void Cleanup() + public void TearDown() { } @@ -64,7 +45,7 @@ public void FindsVersionInDynamicRepo(string name, string url, string targetBran TargetBranch = targetBranch, CommitId = commitId }, - Settings = { NoFetch = false }, + Settings = { NoFetch = false, NoCache = true }, WorkingDirectory = workingDirectory }; var options = Options.Create(gitVersionOptions); From 5147e957b93a1a1dfce8c45a7f4a9bfd28d19854 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 27 Nov 2024 08:52:30 +0100 Subject: [PATCH 299/544] Refactor file system operations to use IFileSystem interface Replaced direct file and directory operations with IFileSystem methods. This change standardizes file system interactions and simplifies dependency injection across the codebase. --- .../ArgumentParserTests.cs | 7 +++-- src/GitVersion.App/ArgumentParser.cs | 15 ++++++--- src/GitVersion.App/GitVersionExecutor.cs | 4 ++- .../ConfigurationProvider.cs | 2 +- .../Core/DynamicRepositoryTests.cs | 18 +++-------- .../Core/GitVersionExecutorTests.cs | 12 +++++-- .../Core/Abstractions/IFileSystem.cs | 4 ++- src/GitVersion.Core/Core/FileSystem.cs | 18 ++++++----- src/GitVersion.Core/Core/GitPreparer.cs | 4 ++- .../Extensions/ConfigurationExtensions.cs | 8 ++--- src/GitVersion.Core/PublicAPI.Unshipped.txt | 2 ++ .../Caching/GitVersionCacheKeyFactory.cs | 6 ++-- .../GitVersionTaskExecutor.cs | 24 +++++++++++++- src/GitVersion.MsBuild/Helpers/FileHelper.cs | 31 +++---------------- .../Output/GitVersionInfoGeneratorTests.cs | 30 +++++++++--------- 15 files changed, 102 insertions(+), 83 deletions(-) diff --git a/src/GitVersion.App.Tests/ArgumentParserTests.cs b/src/GitVersion.App.Tests/ArgumentParserTests.cs index b8650499c8..6569742bb3 100644 --- a/src/GitVersion.App.Tests/ArgumentParserTests.cs +++ b/src/GitVersion.App.Tests/ArgumentParserTests.cs @@ -12,6 +12,7 @@ public class ArgumentParserTests : TestBase { private IEnvironment environment; private IArgumentParser argumentParser; + private IFileSystem fileSystem; [SetUp] public void SetUp() @@ -23,6 +24,7 @@ public void SetUp() }); this.environment = sp.GetRequiredService(); this.argumentParser = sp.GetRequiredService(); + this.fileSystem = sp.GetRequiredService(); } [Test] @@ -337,7 +339,8 @@ public void UpdateAssemblyInfoWithMultipleFilenamesMatchingGlobbing() using var file2 = File.Create(assemblyFile2); var subdir = PathHelper.Combine(repo.RepositoryPath, "subdir"); - Directory.CreateDirectory(subdir); + + this.fileSystem.CreateDirectory(subdir); var assemblyFile3 = PathHelper.Combine(subdir, "LocalAssemblyInfo.cs"); using var file3 = File.Create(assemblyFile3); @@ -358,7 +361,7 @@ public void UpdateAssemblyInfoWithRelativeFilename() using var file = File.Create(assemblyFile); var targetPath = PathHelper.Combine(repo.RepositoryPath, "subdir1", "subdir2"); - Directory.CreateDirectory(targetPath); + this.fileSystem.CreateDirectory(targetPath); var arguments = this.argumentParser.ParseArguments($"-targetpath {targetPath} -updateAssemblyInfo ..\\..\\CommonAssemblyInfo.cs"); arguments.UpdateAssemblyInfo.ShouldBe(true); diff --git a/src/GitVersion.App/ArgumentParser.cs b/src/GitVersion.App/ArgumentParser.cs index dc16d9d7ca..11f4a4ac37 100644 --- a/src/GitVersion.App/ArgumentParser.cs +++ b/src/GitVersion.App/ArgumentParser.cs @@ -6,10 +6,15 @@ namespace GitVersion; -internal class ArgumentParser(IEnvironment environment, ICurrentBuildAgent buildAgent, IConsole console, IGlobbingResolver globbingResolver) +internal class ArgumentParser(IEnvironment environment, + IFileSystem fileSystem, + ICurrentBuildAgent buildAgent, + IConsole console, + IGlobbingResolver globbingResolver) : IArgumentParser { private readonly IEnvironment environment = environment.NotNull(); + private readonly IFileSystem fileSystem = fileSystem.NotNull(); private readonly ICurrentBuildAgent buildAgent = buildAgent.NotNull(); private readonly IConsole console = console.NotNull(); private readonly IGlobbingResolver globbingResolver = globbingResolver.NotNull(); @@ -97,19 +102,19 @@ public Arguments ParseArguments(string[] commandLineArguments) return arguments; } - private static void ValidateConfigurationFile(Arguments arguments) + private void ValidateConfigurationFile(Arguments arguments) { if (arguments.ConfigurationFile.IsNullOrWhiteSpace()) return; if (Path.IsPathRooted(arguments.ConfigurationFile)) { - if (!File.Exists(arguments.ConfigurationFile)) throw new WarningException($"Could not find config file at '{arguments.ConfigurationFile}'"); + if (!this.fileSystem.Exists(arguments.ConfigurationFile)) throw new WarningException($"Could not find config file at '{arguments.ConfigurationFile}'"); arguments.ConfigurationFile = Path.GetFullPath(arguments.ConfigurationFile); } else { var configFilePath = Path.GetFullPath(PathHelper.Combine(arguments.TargetPath, arguments.ConfigurationFile)); - if (!File.Exists(configFilePath)) throw new WarningException($"Could not find config file at '{configFilePath}'"); + if (!this.fileSystem.Exists(configFilePath)) throw new WarningException($"Could not find config file at '{configFilePath}'"); arguments.ConfigurationFile = configFilePath; } } @@ -161,7 +166,7 @@ private void ParseTargetPath(Arguments arguments, string? name, IReadOnlyList this.log.Info(logMessage)); } - if (!Directory.Exists(workingDirectory)) + if (!this.fileSystem.DirectoryExists(workingDirectory)) { this.log.Warning($"The working directory '{workingDirectory}' does not exist."); } diff --git a/src/GitVersion.Configuration/ConfigurationProvider.cs b/src/GitVersion.Configuration/ConfigurationProvider.cs index daf2fc1a28..cf1a89a74f 100644 --- a/src/GitVersion.Configuration/ConfigurationProvider.cs +++ b/src/GitVersion.Configuration/ConfigurationProvider.cs @@ -21,7 +21,7 @@ public IGitVersionConfiguration Provide(IReadOnlyDictionary? ov { var gitVersionOptions = this.options.Value; var workingDirectory = gitVersionOptions.WorkingDirectory; - var projectRootDirectory = workingDirectory.FindGitDir()?.WorkingTreeDirectory; + var projectRootDirectory = this.fileSystem.FindGitDir(workingDirectory)?.WorkingTreeDirectory; var configurationFile = this.configFileLocator.GetConfigurationFile(workingDirectory) ?? this.configFileLocator.GetConfigurationFile(projectRootDirectory); diff --git a/src/GitVersion.Core.Tests/Core/DynamicRepositoryTests.cs b/src/GitVersion.Core.Tests/Core/DynamicRepositoryTests.cs index 3a97ddbe3b..9fe51feda9 100644 --- a/src/GitVersion.Core.Tests/Core/DynamicRepositoryTests.cs +++ b/src/GitVersion.Core.Tests/Core/DynamicRepositoryTests.cs @@ -11,16 +11,7 @@ public class DynamicRepositoryTests : TestBase private string? workDirectory; [SetUp] - public void SetUp() - { - // // Note: we can't use guid because paths will be too long - this.workDirectory = PathHelper.Combine(Path.GetTempPath(), "GV"); - - if (!Directory.Exists(this.workDirectory)) - { - Directory.CreateDirectory(this.workDirectory); - } - } + public void SetUp() => this.workDirectory = PathHelper.Combine(Path.GetTempPath(), "GV"); [TearDown] public void TearDown() @@ -50,9 +41,6 @@ public void FindsVersionInDynamicRepo(string name, string url, string targetBran }; var options = Options.Create(gitVersionOptions); - Directory.CreateDirectory(dynamicDirectory); - Directory.CreateDirectory(workingDirectory); - var sp = ConfigureServices(services => services.AddSingleton(options)); sp.DiscoverRepository(); @@ -60,6 +48,10 @@ public void FindsVersionInDynamicRepo(string name, string url, string targetBran var gitPreparer = sp.GetRequiredService(); gitPreparer.Prepare(); + var fileSystem = sp.GetRequiredService(); + fileSystem.CreateDirectory(dynamicDirectory); + fileSystem.CreateDirectory(workingDirectory); + var gitVersionCalculator = sp.GetRequiredService(); var versionVariables = gitVersionCalculator.CalculateVersionVariables(); diff --git a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs index ebd81f0957..2fea817d8f 100644 --- a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs +++ b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs @@ -67,7 +67,7 @@ public void CacheKeyForWorktree() { using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeACommit(); - var worktreePath = PathHelper.Combine(Directory.GetParent(fixture.RepositoryPath)?.FullName, Guid.NewGuid().ToString()); + var worktreePath = GetWorktreePath(fixture); try { // create a branch and a new worktree for it @@ -395,7 +395,7 @@ public void GetProjectRootDirectoryWorkingDirectoryWithWorktree() using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeACommit(); - var worktreePath = PathHelper.Combine(Directory.GetParent(fixture.RepositoryPath)?.FullName, Guid.NewGuid().ToString()); + var worktreePath = GetWorktreePath(fixture); try { // create a branch and a new worktree for it @@ -451,7 +451,7 @@ public void GetDotGitDirectoryWorktree() using var fixture = new EmptyRepositoryFixture(); fixture.Repository.MakeACommit(); - var worktreePath = PathHelper.Combine(Directory.GetParent(fixture.RepositoryPath)?.FullName, Guid.NewGuid().ToString()); + var worktreePath = GetWorktreePath(fixture); try { // create a branch and a new worktree for it @@ -588,6 +588,12 @@ public void CalculateVersionVariables_ShallowFetch_ThrowException() exception?.Message.ShouldBe("Repository is a shallow clone. Git repositories must contain the full history. See https://gitversion.net/docs/reference/requirements#unshallow for more info."); } + private static string GetWorktreePath(EmptyRepositoryFixture fixture) + { + var worktreePath = PathHelper.Combine(Directory.GetParent(fixture.RepositoryPath)?.FullName, Guid.NewGuid().ToString()); + return worktreePath; + } + private IGitVersionCalculateTool GetGitVersionCalculator(GitVersionOptions gitVersionOptions, ILog? logger = null, IGitRepository? repository = null, IFileSystem? fs = null) { this.sp = GetServiceProvider(gitVersionOptions, logger, repository, fs); diff --git a/src/GitVersion.Core/Core/Abstractions/IFileSystem.cs b/src/GitVersion.Core/Core/Abstractions/IFileSystem.cs index 32e4646809..eadb410d9a 100644 --- a/src/GitVersion.Core/Core/Abstractions/IFileSystem.cs +++ b/src/GitVersion.Core/Core/Abstractions/IFileSystem.cs @@ -9,10 +9,12 @@ public interface IFileSystem string ReadAllText(string path); void WriteAllText(string? file, string fileContents); void WriteAllText(string? file, string fileContents, Encoding encoding); - IEnumerable DirectoryEnumerateFiles(string? directory, string searchPattern, SearchOption searchOption); Stream OpenWrite(string path); Stream OpenRead(string path); void CreateDirectory(string path); bool DirectoryExists(string path); + string[] GetFiles(string path); + string[] GetDirectories(string path); + IEnumerable DirectoryEnumerateFiles(string? directory, string searchPattern, SearchOption searchOption); long GetLastDirectoryWrite(string path); } diff --git a/src/GitVersion.Core/Core/FileSystem.cs b/src/GitVersion.Core/Core/FileSystem.cs index 50bd61f3a2..7da239b288 100644 --- a/src/GitVersion.Core/Core/FileSystem.cs +++ b/src/GitVersion.Core/Core/FileSystem.cs @@ -29,13 +29,6 @@ public void WriteAllText(string? file, string fileContents, Encoding encoding) File.WriteAllText(file, fileContents, encoding); } - public IEnumerable DirectoryEnumerateFiles(string? directory, string searchPattern, SearchOption searchOption) - { - ArgumentException.ThrowIfNullOrWhiteSpace(directory); - - return Directory.EnumerateFiles(directory, searchPattern, searchOption); - } - public Stream OpenWrite(string path) => File.OpenWrite(path); public Stream OpenRead(string path) => File.OpenRead(path); @@ -44,6 +37,17 @@ public IEnumerable DirectoryEnumerateFiles(string? directory, string sea public bool DirectoryExists(string path) => Directory.Exists(path); + public string[] GetFiles(string path) => Directory.GetFiles(path); + + public string[] GetDirectories(string path) => Directory.GetDirectories(path); + + public IEnumerable DirectoryEnumerateFiles(string? directory, string searchPattern, SearchOption searchOption) + { + ArgumentException.ThrowIfNullOrWhiteSpace(directory); + + return Directory.EnumerateFiles(directory, searchPattern, searchOption); + } + public long GetLastDirectoryWrite(string path) => new DirectoryInfo(path) .GetDirectories("*.*", SearchOption.AllDirectories) .Select(d => d.LastWriteTimeUtc) diff --git a/src/GitVersion.Core/Core/GitPreparer.cs b/src/GitVersion.Core/Core/GitPreparer.cs index e33d236d4d..e48aa1f8cc 100644 --- a/src/GitVersion.Core/Core/GitPreparer.cs +++ b/src/GitVersion.Core/Core/GitPreparer.cs @@ -10,6 +10,7 @@ namespace GitVersion; internal class GitPreparer( ILog log, + IFileSystem fileSystem, IEnvironment environment, ICurrentBuildAgent buildAgent, IOptions options, @@ -19,6 +20,7 @@ internal class GitPreparer( : IGitPreparer { private readonly ILog log = log.NotNull(); + private readonly IFileSystem fileSystem = fileSystem.NotNull(); private readonly IEnvironment environment = environment.NotNull(); private readonly IMutatingGitRepository repository = repository.NotNull(); private readonly IOptions options = options.NotNull(); @@ -112,7 +114,7 @@ private void CreateDynamicRepository(string? targetBranch) { var gitVersionOptions = this.options.Value; var authentication = gitVersionOptions.AuthenticationInfo; - if (!Directory.Exists(gitDirectory)) + if (!this.fileSystem.DirectoryExists(gitDirectory)) { CloneRepository(gitVersionOptions.RepositoryInfo.TargetUrl, gitDirectory, authentication); } diff --git a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs index caa4032bdd..b10b2b9ae8 100644 --- a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs +++ b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs @@ -123,24 +123,24 @@ public static bool IsReleaseBranch(this IGitVersionConfiguration configuration, return label; } - public static (string GitDirectory, string WorkingTreeDirectory)? FindGitDir(this string path) + public static (string GitDirectory, string WorkingTreeDirectory)? FindGitDir(this IFileSystem fileSystem, string path) { string? startingDir = path; while (startingDir is not null) { var dirOrFilePath = PathHelper.Combine(startingDir, ".git"); - if (Directory.Exists(dirOrFilePath)) + if (fileSystem.DirectoryExists(dirOrFilePath)) { return (dirOrFilePath, Path.GetDirectoryName(dirOrFilePath)!); } - if (File.Exists(dirOrFilePath)) + if (fileSystem.Exists(dirOrFilePath)) { string? relativeGitDirPath = ReadGitDirFromFile(dirOrFilePath); if (!string.IsNullOrWhiteSpace(relativeGitDirPath)) { var fullGitDirPath = Path.GetFullPath(PathHelper.Combine(startingDir, relativeGitDirPath)); - if (Directory.Exists(fullGitDirPath)) + if (fileSystem.DirectoryExists(fullGitDirPath)) { return (fullGitDirPath, Path.GetDirectoryName(dirOrFilePath)!); } diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 7dc5c58110..d86fbfefd4 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -1 +1,3 @@ #nullable enable +GitVersion.IFileSystem.GetDirectories(string! path) -> string![]! +GitVersion.IFileSystem.GetFiles(string! path) -> string![]! diff --git a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs index c24047a798..70609d9250 100644 --- a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs +++ b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs @@ -57,7 +57,7 @@ private List CalculateDirectoryContents(string root) // examined for files. var dirs = new Stack(); - if (!Directory.Exists(root)) + if (!this.fileSystem.DirectoryExists(root)) { throw new DirectoryNotFoundException($"Root directory does not exist: {root}"); } @@ -74,7 +74,7 @@ private List CalculateDirectoryContents(string root) string[] subDirs; try { - subDirs = Directory.GetDirectories(currentDir); + subDirs = this.fileSystem.GetDirectories(currentDir); } // An UnauthorizedAccessException exception will be thrown if we do not have // discovery permission on a folder or file. It may or may not be acceptable @@ -99,7 +99,7 @@ private List CalculateDirectoryContents(string root) string[] files; try { - files = Directory.GetFiles(currentDir); + files = this.fileSystem.GetFiles(currentDir); } catch (UnauthorizedAccessException e) { diff --git a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs index 9252d5a6b5..ccff9b9549 100644 --- a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs +++ b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs @@ -34,7 +34,7 @@ public void GetVersion(GetVersion task) public void UpdateAssemblyInfo(UpdateAssemblyInfo task) { var versionVariables = GitVersionVariables(task); - FileHelper.DeleteTempFiles(); + DeleteTempFiles(); FileHelper.CheckForInvalidFiles(task.CompileFiles, task.ProjectFile); if (!string.IsNullOrEmpty(task.IntermediateOutputPath)) @@ -100,5 +100,27 @@ public void WriteVersionInfoToBuildLog(WriteVersionInfoToBuildLog task) gitVersionOutputTool.OutputVariables(versionVariables, configuration.UpdateBuildNumber); } + private void DeleteTempFiles() + { + if (!this.fileSystem.DirectoryExists(FileHelper.TempPath)) + { + return; + } + + foreach (var file in this.fileSystem.GetFiles(FileHelper.TempPath)) + { + if (File.GetLastWriteTime(file) >= DateTime.Now.AddDays(-1)) + continue; + try + { + File.Delete(file); + } + catch (UnauthorizedAccessException) + { + //ignore contention + } + } + } + private GitVersionVariables GitVersionVariables(GitVersionTaskBase task) => serializer.FromFile(task.VersionFile); } diff --git a/src/GitVersion.MsBuild/Helpers/FileHelper.cs b/src/GitVersion.MsBuild/Helpers/FileHelper.cs index e8b478ee42..e8a4479af6 100644 --- a/src/GitVersion.MsBuild/Helpers/FileHelper.cs +++ b/src/GitVersion.MsBuild/Helpers/FileHelper.cs @@ -1,8 +1,9 @@ using System.Text.RegularExpressions; -using GitVersion.Core; using GitVersion.Helpers; using Microsoft.Build.Framework; +using static GitVersion.Core.RegexPatterns.AssemblyVersion; + namespace GitVersion.MsBuild; internal static class FileHelper @@ -16,28 +17,6 @@ private static string MakeAndGetTempPath() return tempPath; } - public static void DeleteTempFiles() - { - if (!Directory.Exists(TempPath)) - { - return; - } - - foreach (var file in Directory.GetFiles(TempPath)) - { - if (File.GetLastWriteTime(file) >= DateTime.Now.AddDays(-1)) - continue; - try - { - File.Delete(file); - } - catch (UnauthorizedAccessException) - { - //ignore contention - } - } - } - public static string GetFileExtension(string language) => language switch { "C#" => "cs", @@ -69,9 +48,9 @@ private static bool FileContainsVersionAttribute(string compileFile, string proj var (attributeRegex, triviaRegex) = compileFileExtension switch { - ".cs" => (RegexPatterns.AssemblyVersion.CSharp.AttributeRegex, RegexPatterns.AssemblyVersion.CSharp.TriviaRegex), - ".fs" => (RegexPatterns.AssemblyVersion.FSharp.AttributeRegex, RegexPatterns.AssemblyVersion.FSharp.TriviaRegex), - ".vb" => (RegexPatterns.AssemblyVersion.VisualBasic.AttributeRegex, RegexPatterns.AssemblyVersion.VisualBasic.TriviaRegex), + ".cs" => (CSharp.AttributeRegex, CSharp.TriviaRegex), + ".fs" => (FSharp.AttributeRegex, FSharp.TriviaRegex), + ".vb" => (VisualBasic.AttributeRegex, VisualBasic.TriviaRegex), _ => throw new WarningException("File with name containing AssemblyInfo could not be checked for assembly version attributes which conflict with the attributes generated by GitVersion " + compileFile) }; diff --git a/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs b/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs index 56ac52df1b..284f3d6b65 100644 --- a/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs +++ b/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs @@ -19,12 +19,6 @@ public class GitVersionInfoGeneratorTests : TestBase [TestCase("vb")] public void ShouldCreateFile(string fileExtension) { - var directory = PathHelper.Combine(PathHelper.GetTempPath(), "GitVersionInfoGeneratorTests", Guid.NewGuid().ToString()); - if (!Directory.Exists(directory)) - Directory.CreateDirectory(directory); - var fileName = "GitVersionInformation.g." + fileExtension; - var fullPath = PathHelper.Combine(directory, fileName); - var semanticVersion = new SemanticVersion { Major = 1, @@ -32,14 +26,20 @@ public void ShouldCreateFile(string fileExtension) Patch = 3, PreReleaseTag = "unstable4", BuildMetaData = new("versionSourceSha", 5, - "feature1", "commitSha", "commitShortSha", DateTimeOffset.Parse("2014-03-06 23:59:59Z"), 0) + "feature1", "commitSha", "commitShortSha", DateTimeOffset.Parse("2014-03-06 23:59:59Z"), 0) }; var sp = ConfigureServices(); var fileSystem = sp.GetRequiredService(); - var variableProvider = sp.GetRequiredService(); + var directory = PathHelper.Combine(PathHelper.GetTempPath(), "GitVersionInfoGeneratorTests", Guid.NewGuid().ToString()); + if (!fileSystem.DirectoryExists(directory)) + fileSystem.CreateDirectory(directory); + var fileName = "GitVersionInformation.g." + fileExtension; + var fullPath = PathHelper.Combine(directory, fileName); + + var variableProvider = sp.GetRequiredService(); var variables = variableProvider.GetVariablesFor(semanticVersion, EmptyConfigurationBuilder.New.Build(), 0); using var generator = sp.GetRequiredService(); @@ -60,12 +60,6 @@ public void ShouldProperlyOutputNamespaceDeclaration(string fileExtension) { const string targetNamespace = "My.Custom.Namespace"; - var directory = PathHelper.Combine(PathHelper.GetTempPath(), "GitVersionInfoGeneratorTests", Guid.NewGuid().ToString()); - if (!Directory.Exists(directory)) - Directory.CreateDirectory(directory); - var fileName = "GitVersionInformation.g." + fileExtension; - var fullPath = PathHelper.Combine(directory, fileName); - var semanticVersion = new SemanticVersion { Major = 1, @@ -79,8 +73,14 @@ public void ShouldProperlyOutputNamespaceDeclaration(string fileExtension) var sp = ConfigureServices(); var fileSystem = sp.GetRequiredService(); - var variableProvider = sp.GetRequiredService(); + var directory = PathHelper.Combine(PathHelper.GetTempPath(), "GitVersionInfoGeneratorTests", Guid.NewGuid().ToString()); + if (!fileSystem.DirectoryExists(directory)) + fileSystem.CreateDirectory(directory); + var fileName = "GitVersionInformation.g." + fileExtension; + var fullPath = PathHelper.Combine(directory, fileName); + + var variableProvider = sp.GetRequiredService(); var variables = variableProvider.GetVariablesFor(semanticVersion, EmptyConfigurationBuilder.New.Build(), 0); using var generator = sp.GetRequiredService(); From 012c377970db3d9fc144b36e04c8ce3828564dc9 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 27 Nov 2024 17:15:31 +0100 Subject: [PATCH 300/544] Refactor MakeAndGetTempPath to use expression-bodied member Simplified the MakeAndGetTempPath method by converting it to an expression-bodied member. --- .../Core/Abstractions/IFileSystem.cs | 1 + src/GitVersion.Core/Core/FileSystem.cs | 2 ++ src/GitVersion.Core/PublicAPI.Unshipped.txt | 1 + .../Caching/GitVersionCacheKeyFactory.cs | 4 ++-- .../GitVersionTaskExecutor.cs | 17 +++++++++++++---- src/GitVersion.MsBuild/Helpers/FileHelper.cs | 7 +------ 6 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/GitVersion.Core/Core/Abstractions/IFileSystem.cs b/src/GitVersion.Core/Core/Abstractions/IFileSystem.cs index eadb410d9a..7678d8c373 100644 --- a/src/GitVersion.Core/Core/Abstractions/IFileSystem.cs +++ b/src/GitVersion.Core/Core/Abstractions/IFileSystem.cs @@ -17,4 +17,5 @@ public interface IFileSystem string[] GetDirectories(string path); IEnumerable DirectoryEnumerateFiles(string? directory, string searchPattern, SearchOption searchOption); long GetLastDirectoryWrite(string path); + long GetLastWriteTime(string path); } diff --git a/src/GitVersion.Core/Core/FileSystem.cs b/src/GitVersion.Core/Core/FileSystem.cs index 7da239b288..1187b06528 100644 --- a/src/GitVersion.Core/Core/FileSystem.cs +++ b/src/GitVersion.Core/Core/FileSystem.cs @@ -48,6 +48,8 @@ public IEnumerable DirectoryEnumerateFiles(string? directory, string sea return Directory.EnumerateFiles(directory, searchPattern, searchOption); } + public long GetLastWriteTime(string path) => File.GetLastWriteTime(path).Ticks; + public long GetLastDirectoryWrite(string path) => new DirectoryInfo(path) .GetDirectories("*.*", SearchOption.AllDirectories) .Select(d => d.LastWriteTimeUtc) diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index d86fbfefd4..b5c8a9949f 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -1,3 +1,4 @@ #nullable enable GitVersion.IFileSystem.GetDirectories(string! path) -> string![]! GitVersion.IFileSystem.GetFiles(string! path) -> string![]! +GitVersion.IFileSystem.GetLastWriteTime(string! path) -> long diff --git a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs index 70609d9250..c91350e733 100644 --- a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs +++ b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs @@ -116,8 +116,8 @@ private List CalculateDirectoryContents(string root) { try { - var fi = new FileInfo(file); - result.Add(fi.Name); + if (!this.fileSystem.Exists(file)) continue; + result.Add(Path.GetFileName(file)); result.Add(this.fileSystem.ReadAllText(file)); } catch (IOException e) diff --git a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs index ccff9b9549..d51d364d95 100644 --- a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs +++ b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs @@ -46,6 +46,10 @@ public void UpdateAssemblyInfo(UpdateAssemblyInfo task) var fileWriteInfo = task.IntermediateOutputPath.GetFileWriteInfo(task.Language, task.ProjectFile, "AssemblyInfo"); task.AssemblyInfoTempFilePath = PathHelper.Combine(fileWriteInfo.WorkingDirectory, fileWriteInfo.FileName); + if (!this.fileSystem.DirectoryExists(fileWriteInfo.WorkingDirectory)) + { + this.fileSystem.CreateDirectory(fileWriteInfo.WorkingDirectory); + } var gitVersionOptions = this.options.Value; gitVersionOptions.WorkingDirectory = fileWriteInfo.WorkingDirectory; gitVersionOptions.AssemblySettingsInfo.UpdateAssemblyInfo = true; @@ -68,6 +72,10 @@ public void GenerateGitVersionInformation(GenerateGitVersionInformation task) var fileWriteInfo = task.IntermediateOutputPath.GetFileWriteInfo(task.Language, task.ProjectFile, "GitVersionInformation"); task.GitVersionInformationFilePath = PathHelper.Combine(fileWriteInfo.WorkingDirectory, fileWriteInfo.FileName); + if (!this.fileSystem.DirectoryExists(fileWriteInfo.WorkingDirectory)) + { + this.fileSystem.CreateDirectory(fileWriteInfo.WorkingDirectory); + } var gitVersionOptions = this.options.Value; gitVersionOptions.WorkingDirectory = fileWriteInfo.WorkingDirectory; var targetNamespace = GetTargetNamespace(task); @@ -102,18 +110,19 @@ public void WriteVersionInfoToBuildLog(WriteVersionInfoToBuildLog task) private void DeleteTempFiles() { - if (!this.fileSystem.DirectoryExists(FileHelper.TempPath)) + var tempPath = FileHelper.TempPath; + if (!this.fileSystem.DirectoryExists(tempPath)) { return; } - foreach (var file in this.fileSystem.GetFiles(FileHelper.TempPath)) + foreach (var file in this.fileSystem.GetFiles(tempPath)) { - if (File.GetLastWriteTime(file) >= DateTime.Now.AddDays(-1)) + if (this.fileSystem.GetLastWriteTime(file) >= DateTime.Now.AddDays(-1).Ticks) continue; try { - File.Delete(file); + this.fileSystem.Delete(file); } catch (UnauthorizedAccessException) { diff --git a/src/GitVersion.MsBuild/Helpers/FileHelper.cs b/src/GitVersion.MsBuild/Helpers/FileHelper.cs index e8a4479af6..ce3d1e9da7 100644 --- a/src/GitVersion.MsBuild/Helpers/FileHelper.cs +++ b/src/GitVersion.MsBuild/Helpers/FileHelper.cs @@ -10,12 +10,7 @@ internal static class FileHelper { public static readonly string TempPath = MakeAndGetTempPath(); - private static string MakeAndGetTempPath() - { - var tempPath = PathHelper.Combine(Path.GetTempPath(), "GitVersionTask"); - Directory.CreateDirectory(tempPath); - return tempPath; - } + private static string MakeAndGetTempPath() => PathHelper.Combine(Path.GetTempPath(), "GitVersionTask"); public static string GetFileExtension(string language) => language switch { From e2734f820549da51eba84def3d2c420a12bca9e0 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 9 Dec 2024 13:39:10 +0100 Subject: [PATCH 301/544] fixing some warnings --- src/GitVersion.App/ArgumentParser.cs | 2 +- src/GitVersion.Core/Core/GitPreparer.cs | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/GitVersion.App/ArgumentParser.cs b/src/GitVersion.App/ArgumentParser.cs index 11f4a4ac37..7e273f99da 100644 --- a/src/GitVersion.App/ArgumentParser.cs +++ b/src/GitVersion.App/ArgumentParser.cs @@ -166,7 +166,7 @@ private void ParseTargetPath(Arguments arguments, string? name, IReadOnlyList Date: Mon, 9 Dec 2024 14:23:47 +0100 Subject: [PATCH 302/544] update shipped API --- src/GitVersion.Core/PublicAPI.Shipped.txt | 3 +++ src/GitVersion.Core/PublicAPI.Unshipped.txt | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/GitVersion.Core/PublicAPI.Shipped.txt b/src/GitVersion.Core/PublicAPI.Shipped.txt index c7172416bd..d3f010c444 100644 --- a/src/GitVersion.Core/PublicAPI.Shipped.txt +++ b/src/GitVersion.Core/PublicAPI.Shipped.txt @@ -361,7 +361,10 @@ GitVersion.IFileSystem.Delete(string! path) -> void GitVersion.IFileSystem.DirectoryEnumerateFiles(string? directory, string! searchPattern, System.IO.SearchOption searchOption) -> System.Collections.Generic.IEnumerable! GitVersion.IFileSystem.DirectoryExists(string! path) -> bool GitVersion.IFileSystem.Exists(string! file) -> bool +GitVersion.IFileSystem.GetDirectories(string! path) -> string![]! +GitVersion.IFileSystem.GetFiles(string! path) -> string![]! GitVersion.IFileSystem.GetLastDirectoryWrite(string! path) -> long +GitVersion.IFileSystem.GetLastWriteTime(string! path) -> long GitVersion.IFileSystem.Move(string! from, string! to) -> void GitVersion.IFileSystem.OpenRead(string! path) -> System.IO.Stream! GitVersion.IFileSystem.OpenWrite(string! path) -> System.IO.Stream! diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index b5c8a9949f..7dc5c58110 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -1,4 +1 @@ #nullable enable -GitVersion.IFileSystem.GetDirectories(string! path) -> string![]! -GitVersion.IFileSystem.GetFiles(string! path) -> string![]! -GitVersion.IFileSystem.GetLastWriteTime(string! path) -> long From c63c1a30d0e77be2d7d9fde7aa6c0e6b91275c24 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 9 Dec 2024 22:15:27 +0100 Subject: [PATCH 303/544] update actions/attest-build-provenance to v2.0.1 --- .github/actions/artifacts-attest/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/artifacts-attest/action.yml b/.github/actions/artifacts-attest/action.yml index a1d424e510..7722489c36 100644 --- a/.github/actions/artifacts-attest/action.yml +++ b/.github/actions/artifacts-attest/action.yml @@ -6,7 +6,7 @@ runs: steps: - name: 'Attestation' - uses: actions/attest-build-provenance@v1 + uses: actions/attest-build-provenance@v2.0.1 with: subject-path: | ${{ github.workspace }}/artifacts/packages/native From 7b50d63835ba690dd45ba09350f1cc2d07f9896c Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Fri, 20 Dec 2024 13:37:16 +0100 Subject: [PATCH 304/544] remove ignore in dependabot --- .github/dependabot.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index f74944833f..60831b08ed 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -32,8 +32,6 @@ updates: - "/new-cli" - "/src" - "/" - ignore: - - dependency-name: "LibGit2Sharp" schedule: interval: daily open-pull-requests-limit: 10 From 2d1166e2f03478bb1a54a59b6dece8a25d669f76 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Tue, 7 Jan 2025 09:03:12 +0100 Subject: [PATCH 305/544] Topological commit sort causes issues when master is merged into a feature branch --- .../reference/modes/continuous-delivery.md | 2 +- .../reference/modes/continuous-deployment.md | 2 +- .../docs/reference/modes/manual-deployment.md | 2 +- .../Extensions/GitToolsTestingExtensions.cs | 2 +- .../IntegrationTests/OtherScenarios.cs | 23 +++++++++++-------- .../IntegrationTests/PerformanceScenarios.cs | 13 +++++++---- .../IncrementStrategyFinder.cs | 7 ++++-- .../TaggedCommitVersionStrategy.cs | 22 ++++++++++++++++-- 8 files changed, 50 insertions(+), 23 deletions(-) diff --git a/docs/input/docs/reference/modes/continuous-delivery.md b/docs/input/docs/reference/modes/continuous-delivery.md index 3b6aa456ae..ee5c1df4cf 100644 --- a/docs/input/docs/reference/modes/continuous-delivery.md +++ b/docs/input/docs/reference/modes/continuous-delivery.md @@ -24,7 +24,7 @@ Continuous delivery is good when you deploy continuously to an testing system. * 1.1.0-3 * 1.1.0-2 (tag: 1.1.0-2) <-- This is the version which has been deployed on testing * 1.1.0-1 -* 1.1.1-0 +* 1.1.0-0 Tags are not required but optional in this mode to communicate when the release is done as it's an automated process. diff --git a/docs/input/docs/reference/modes/continuous-deployment.md b/docs/input/docs/reference/modes/continuous-deployment.md index 88d7f7887e..b700c3732b 100644 --- a/docs/input/docs/reference/modes/continuous-deployment.md +++ b/docs/input/docs/reference/modes/continuous-deployment.md @@ -21,7 +21,7 @@ to deploy on production. This means that GitVersion will build * 1.2.0 * 1.1.0 (tag: 1.1.0) <-- This is the version which has been deployed on production * 1.1.0 -* 1.1.1 +* 1.1.0 Tags are required in this mode to communicate when the deployment happens on production. diff --git a/docs/input/docs/reference/modes/manual-deployment.md b/docs/input/docs/reference/modes/manual-deployment.md index e76e3e08d0..75e0fb9d74 100644 --- a/docs/input/docs/reference/modes/manual-deployment.md +++ b/docs/input/docs/reference/modes/manual-deployment.md @@ -21,7 +21,7 @@ deployed. For instance: * 1.1.0-2+1 * 1.1.0-1+2 (tag: 1.1.0-1) <-- This is the version which has been deployed on testing * 1.1.0-1+1 -* 1.1.1-1+0 +* 1.1.0-1+0 Tags are required in this mode to communicate when the release is done as it's an external manual process. diff --git a/src/GitVersion.Core.Tests/Extensions/GitToolsTestingExtensions.cs b/src/GitVersion.Core.Tests/Extensions/GitToolsTestingExtensions.cs index cfd5c713d5..7e20ec2aaf 100644 --- a/src/GitVersion.Core.Tests/Extensions/GitToolsTestingExtensions.cs +++ b/src/GitVersion.Core.Tests/Extensions/GitToolsTestingExtensions.cs @@ -138,7 +138,7 @@ public static void AssertFullSemver(this RepositoryFixtureBase fixture, string f /// /// Simulates running on build server /// - public static void InitializeRepo(this RemoteRepositoryFixture fixture) + public static void InitializeRepository(this RemoteRepositoryFixture fixture) { var gitVersionOptions = new GitVersionOptions { diff --git a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs index dce46a0eb6..de62c1008f 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs @@ -26,7 +26,7 @@ public void DoNotBlowUpWhenMainAndDevelopPointAtSameCommit() Commands.Fetch(fixture.LocalRepositoryFixture.Repository, fixture.LocalRepositoryFixture.Repository.Network.Remotes.First().Name, [], new(), null); Commands.Checkout(fixture.LocalRepositoryFixture.Repository, fixture.Repository.Head.Tip); fixture.LocalRepositoryFixture.Repository.Branches.Remove(MainBranch); - fixture.InitializeRepo(); + fixture.InitializeRepository(); fixture.AssertFullSemver("1.0.1-1"); } @@ -92,7 +92,7 @@ public void DoNotBlowUpWhenDevelopAndFeatureBranchPointAtSameCommit() Commands.Fetch(fixture.LocalRepositoryFixture.Repository, fixture.LocalRepositoryFixture.Repository.Network.Remotes.First().Name, [], new(), null); Commands.Checkout(fixture.LocalRepositoryFixture.Repository, fixture.Repository.Head.Tip); fixture.LocalRepositoryFixture.Repository.Branches.Remove(MainBranch); - fixture.InitializeRepo(); + fixture.InitializeRepository(); fixture.AssertFullSemver("1.1.0-alpha.1"); } @@ -100,7 +100,7 @@ public void DoNotBlowUpWhenDevelopAndFeatureBranchPointAtSameCommit() [TestCase(false, 1)] [TestCase(true, 5)] [TestCase(false, 5)] - public void HasDirtyFlagWhenUncommittedChangesAreInRepo(bool stageFile, int numberOfFiles) + public void HasDirtyFlagWhenUncommittedChangesAreInRepository(bool stageFile, int numberOfFiles) { using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit(); @@ -133,7 +133,7 @@ public void NoDirtyFlagInCleanRepository() [TestCase(false, "1.1.0-alpha.2")] [TestCase(true, "1.2.0-alpha.1")] - public void EnsureTrackMergeTargetStrategyWhichWillLookForTaggedMergecommits(bool trackMergeTarget, string expectedVersion) + public void EnsureTrackMergeTargetStrategyWhichWillLookForTaggedMergeCommits(bool trackMergeTarget, string expectedVersion) { // * 9daa6ea 53 minutes ago (HEAD -> develop) // | * 85536f2 55 minutes ago (tag: 1.1.0, main) @@ -1283,7 +1283,7 @@ public void EnsureVersionAfterMainIsMergedBackToDevelopIsCorrectForMainline(bool } [TestCase(false, "2.0.0-alpha.3")] - [TestCase(true, "2.0.0-alpha.3")] + [TestCase(true, "3.0.0-alpha.2")] public void EnsureVersionAfterMainIsMergedBackToDevelopIsCorrectForGitFlow(bool applyTag, string semanticVersion) { var configuration = GitFlowConfigurationBuilder.New.Build(); @@ -1300,7 +1300,7 @@ public void EnsureVersionAfterMainIsMergedBackToDevelopIsCorrectForGitFlow(bool fixture.Checkout("main"); fixture.MakeACommit("C"); - if (applyTag) fixture.ApplyTag("1.0.1"); + if (applyTag) fixture.ApplyTag("2.0.0"); fixture.Checkout("develop"); fixture.MergeNoFF("main"); @@ -1380,7 +1380,8 @@ public void AlternativeSemanticVersionsShouldBeConsidered() } [TestCase(null, "6.0.0-beta.6")] - [TestCase("beta", "6.0.0-beta.21")] + [TestCase("beta", "6.0.0-beta.6")] + [TestCase("gamma", "6.0.0-gamma.21")] public void AlternativeSemanticVersionsShouldBeConsidered(string? labelOnMain, string version) { var configuration = GitFlowConfigurationBuilder.New @@ -1391,14 +1392,16 @@ public void AlternativeSemanticVersionsShouldBeConsidered(string? labelOnMain, s using var fixture = new EmptyRepositoryFixture(); fixture.MakeATaggedCommit("1.0.0"); - fixture.MakeATaggedCommit("4.0.0-beta.14"); fixture.MakeACommit("A"); + fixture.ApplyTag("4.0.0-beta.14"); + fixture.ApplyTag("4.0.0-gamma.14"); + fixture.MakeACommit("B"); fixture.MakeATaggedCommit("6.0.0-alpha.1"); fixture.MakeATaggedCommit("6.0.0-alpha.2"); fixture.MakeATaggedCommit("6.0.0-alpha.3"); - fixture.MakeACommit("B"); - fixture.MakeATaggedCommit("6.0.0-beta.5"); fixture.MakeACommit("C"); + fixture.MakeATaggedCommit("6.0.0-beta.5"); + fixture.MakeACommit("D"); fixture.AssertFullSemver(version, configuration); } diff --git a/src/GitVersion.Core.Tests/IntegrationTests/PerformanceScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/PerformanceScenarios.cs index b79e2644d9..aad4244caf 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/PerformanceScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/PerformanceScenarios.cs @@ -12,10 +12,13 @@ public void RepositoryWithALotOfTags() using var fixture = new EmptyRepositoryFixture(); - const int maxCommits = 500; - for (int i = 0; i < maxCommits; i++) + Random random = new(4711); + SemanticVersion semanticVersion = SemanticVersion.Empty; + for (int i = 0; i < 500; i++) { - fixture.MakeATaggedCommit($"1.0.{i}"); + VersionField versionField = (VersionField)random.Next(1, 4); + semanticVersion = semanticVersion.Increment(versionField, string.Empty, forceIncrement: true); + fixture.MakeATaggedCommit(semanticVersion.ToString("j")); } fixture.BranchTo("feature"); @@ -23,9 +26,9 @@ public void RepositoryWithALotOfTags() var sw = Stopwatch.StartNew(); - fixture.AssertFullSemver($"1.0.{maxCommits}-feature.1+1", configuration); + fixture.AssertFullSemver("170.3.3-feature.1+1", configuration); sw.Stop(); - sw.ElapsedMilliseconds.ShouldBeLessThan(5000); + sw.ElapsedMilliseconds.ShouldBeLessThan(2500); } } diff --git a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs index 41f75a8b34..909e746915 100644 --- a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs @@ -106,7 +106,11 @@ private IReadOnlyCollection GetCommitHistory(string? tagPrefix, Semanti .ToHashSet() ); - var intermediateCommits = GetIntermediateCommits(baseVersionSource, currentCommit, ignore).ToArray(); + var intermediateCommits = this.repositoryStore.GetCommitLog( + baseVersionSource: baseVersionSource, + currentCommit: currentCommit, + ignore: ignore + ); var commitLog = intermediateCommits.ToDictionary(element => element.Id.Sha); foreach (var intermediateCommit in intermediateCommits.Reverse()) @@ -197,7 +201,6 @@ public IEnumerable GetMergedCommits(ICommit mergeCommit, int index, IIg ICommit findMergeBase = this.repositoryStore.FindMergeBase(baseCommit, mergedCommit) ?? throw new InvalidOperationException("Cannot find the base commit of merged branch."); - return GetIntermediateCommits(findMergeBase, mergedCommit, ignore); } diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs index 73aa3104f2..dfd9a7fba7 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs @@ -1,6 +1,8 @@ using GitVersion.Configuration; using GitVersion.Core; using GitVersion.Extensions; +using GitVersion.Logging; +using static GitVersion.Core.RegexPatterns; namespace GitVersion.VersionCalculation; @@ -10,7 +12,7 @@ namespace GitVersion.VersionCalculation; /// Increments if the tag is not the current commit. /// internal sealed class TaggedCommitVersionStrategy( - Lazy contextLazy, + Lazy contextLazy, ILog log, ITaggedSemanticVersionService taggedSemanticVersionService, IIncrementStrategyFinder incrementStrategyFinder) : IVersionStrategy @@ -18,6 +20,7 @@ internal sealed class TaggedCommitVersionStrategy( private readonly ITaggedSemanticVersionService taggedSemanticVersionService = taggedSemanticVersionService.NotNull(); private readonly Lazy contextLazy = contextLazy.NotNull(); private readonly IIncrementStrategyFinder incrementStrategyFinder = incrementStrategyFinder.NotNull(); + private readonly ILog log = log.NotNull(); private GitVersionContext Context => contextLazy.Value; @@ -41,6 +44,7 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); + SemanticVersion semanticVersionTreshold = new(0, 0, 0); List alternativeSemanticVersionsWithTag = []; foreach (var semanticVersionWithTag in taggedSemanticVersions) { @@ -50,6 +54,19 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur continue; } + var alternativeSemanticVersionMax = alternativeSemanticVersionsWithTag.Max()?.Value; + var highestPossibleSemanticVersion = semanticVersionWithTag.Value.Increment( + VersionField.Major, null, forceIncrement: true, alternativeSemanticVersionMax + ); + if (highestPossibleSemanticVersion.IsLessThan(semanticVersionTreshold, includePreRelease: false)) + { + this.log.Info( + $"The tag '{semanticVersionWithTag.Value}' is skipped because it will never be higher than other tags." + ); + alternativeSemanticVersionsWithTag.Clear(); + continue; + } + var baseVersionSource = semanticVersionWithTag.Tag.Commit; var increment = incrementStrategyFinder.DetermineIncrementedField( currentCommit: Context.CurrentCommit, @@ -58,6 +75,7 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur configuration: configuration.Value, label: label ); + semanticVersionTreshold = semanticVersionWithTag.Value.Increment(increment, null, forceIncrement: true); yield return new BaseVersion( $"Git tag '{semanticVersionWithTag.Tag.Name.Friendly}'", semanticVersionWithTag.Value, baseVersionSource) @@ -67,7 +85,7 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur Increment = increment, ForceIncrement = false, Label = label, - AlternativeSemanticVersion = alternativeSemanticVersionsWithTag.Max()?.Value + AlternativeSemanticVersion = alternativeSemanticVersionMax } }; alternativeSemanticVersionsWithTag.Clear(); From a484a484f933a5853343834858ccf0832704eb46 Mon Sep 17 00:00:00 2001 From: HHobeck Date: Tue, 7 Jan 2025 11:08:54 +0100 Subject: [PATCH 306/544] Integrate code review remarks. --- .../IncrementStrategyFinder.cs | 6 +---- .../TaggedCommitVersionStrategy.cs | 24 +++++++++---------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs index 909e746915..d0f69f4bbb 100644 --- a/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs +++ b/src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs @@ -106,11 +106,7 @@ private IReadOnlyCollection GetCommitHistory(string? tagPrefix, Semanti .ToHashSet() ); - var intermediateCommits = this.repositoryStore.GetCommitLog( - baseVersionSource: baseVersionSource, - currentCommit: currentCommit, - ignore: ignore - ); + var intermediateCommits = this.repositoryStore.GetCommitLog(baseVersionSource, currentCommit, ignore); var commitLog = intermediateCommits.ToDictionary(element => element.Id.Sha); foreach (var intermediateCommit in intermediateCommits.Reverse()) diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs index dfd9a7fba7..4e08eef9c8 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/TaggedCommitVersionStrategy.cs @@ -2,7 +2,6 @@ using GitVersion.Core; using GitVersion.Extensions; using GitVersion.Logging; -using static GitVersion.Core.RegexPatterns; namespace GitVersion.VersionCalculation; @@ -12,15 +11,16 @@ namespace GitVersion.VersionCalculation; /// Increments if the tag is not the current commit. /// internal sealed class TaggedCommitVersionStrategy( - Lazy contextLazy, ILog log, + ILog log, + Lazy contextLazy, ITaggedSemanticVersionService taggedSemanticVersionService, IIncrementStrategyFinder incrementStrategyFinder) : IVersionStrategy { + private readonly ILog log = log.NotNull(); private readonly ITaggedSemanticVersionService taggedSemanticVersionService = taggedSemanticVersionService.NotNull(); private readonly Lazy contextLazy = contextLazy.NotNull(); private readonly IIncrementStrategyFinder incrementStrategyFinder = incrementStrategyFinder.NotNull(); - private readonly ILog log = log.NotNull(); private GitVersionContext Context => contextLazy.Value; @@ -44,30 +44,30 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur var label = configuration.Value.GetBranchSpecificLabel(Context.CurrentBranch.Name, null); - SemanticVersion semanticVersionTreshold = new(0, 0, 0); + var semanticVersionTreshold = SemanticVersion.Empty; List alternativeSemanticVersionsWithTag = []; - foreach (var semanticVersionWithTag in taggedSemanticVersions) + foreach (var semanticVersion in taggedSemanticVersions) { - if (!semanticVersionWithTag.Value.IsMatchForBranchSpecificLabel(label)) + if (!semanticVersion.Value.IsMatchForBranchSpecificLabel(label)) { - alternativeSemanticVersionsWithTag.Add(semanticVersionWithTag); + alternativeSemanticVersionsWithTag.Add(semanticVersion); continue; } var alternativeSemanticVersionMax = alternativeSemanticVersionsWithTag.Max()?.Value; - var highestPossibleSemanticVersion = semanticVersionWithTag.Value.Increment( + var highestPossibleSemanticVersion = semanticVersion.Value.Increment( VersionField.Major, null, forceIncrement: true, alternativeSemanticVersionMax ); if (highestPossibleSemanticVersion.IsLessThan(semanticVersionTreshold, includePreRelease: false)) { this.log.Info( - $"The tag '{semanticVersionWithTag.Value}' is skipped because it will never be higher than other tags." + $"The tag '{semanticVersion.Value}' is skipped because it provides a lower base version than other tags." ); alternativeSemanticVersionsWithTag.Clear(); continue; } - var baseVersionSource = semanticVersionWithTag.Tag.Commit; + var baseVersionSource = semanticVersion.Tag.Commit; var increment = incrementStrategyFinder.DetermineIncrementedField( currentCommit: Context.CurrentCommit, baseVersionSource: baseVersionSource, @@ -75,10 +75,10 @@ private IEnumerable GetBaseVersionsInternal(EffectiveBranchConfigur configuration: configuration.Value, label: label ); - semanticVersionTreshold = semanticVersionWithTag.Value.Increment(increment, null, forceIncrement: true); + semanticVersionTreshold = semanticVersion.Value.Increment(increment, null, forceIncrement: true); yield return new BaseVersion( - $"Git tag '{semanticVersionWithTag.Tag.Name.Friendly}'", semanticVersionWithTag.Value, baseVersionSource) + $"Git tag '{semanticVersion.Tag.Name.Friendly}'", semanticVersion.Value, baseVersionSource) { Operator = new BaseVersionOperator { From cc001191b7c5e3e7c21da0a2ed84cb344d415771 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 8 Jan 2025 11:36:04 +0100 Subject: [PATCH 307/544] fix dependabot configuration --- .github/dependabot.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 60831b08ed..7a4c13a974 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -31,7 +31,6 @@ updates: - "/build" - "/new-cli" - "/src" - - "/" schedule: interval: daily open-pull-requests-limit: 10 From d275b2882c0d56eb1e55b3dbef75ad8301d6f512 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 10:42:23 +0000 Subject: [PATCH 308/544] (deps): Bump the microsoft group across 2 directories with 4 updates Bumps the microsoft group with 2 updates in the /new-cli directory: [Microsoft.CodeAnalysis.CSharp](https://github.com/dotnet/roslyn) and [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers). Bumps the microsoft group with 3 updates in the /src directory: [Microsoft.CodeAnalysis.Common](https://github.com/dotnet/roslyn), [Microsoft.CodeAnalysis.CSharp](https://github.com/dotnet/roslyn) and [Microsoft.CodeAnalysis.VisualBasic](https://github.com/dotnet/roslyn). Updates `Microsoft.CodeAnalysis.CSharp` from 4.11.0 to 4.12.0 - [Release notes](https://github.com/dotnet/roslyn/releases) - [Changelog](https://github.com/dotnet/roslyn/blob/main/docs/Breaking%20API%20Changes.md) - [Commits](https://github.com/dotnet/roslyn/commits) Updates `Microsoft.CodeAnalysis.Analyzers` from 3.11.0 to 3.3.4 - [Release notes](https://github.com/dotnet/roslyn-analyzers/releases) - [Changelog](https://github.com/dotnet/roslyn-analyzers/blob/main/PostReleaseActivities.md) - [Commits](https://github.com/dotnet/roslyn-analyzers/commits/v3.3.4) Updates `Microsoft.CodeAnalysis.Common` from 4.11.0 to 4.12.0 - [Release notes](https://github.com/dotnet/roslyn/releases) - [Changelog](https://github.com/dotnet/roslyn/blob/main/docs/Breaking%20API%20Changes.md) - [Commits](https://github.com/dotnet/roslyn/commits) Updates `Microsoft.CodeAnalysis.CSharp` from 4.11.0 to 4.12.0 - [Release notes](https://github.com/dotnet/roslyn/releases) - [Changelog](https://github.com/dotnet/roslyn/blob/main/docs/Breaking%20API%20Changes.md) - [Commits](https://github.com/dotnet/roslyn/commits) Updates `Microsoft.CodeAnalysis.Common` from 4.11.0 to 4.12.0 - [Release notes](https://github.com/dotnet/roslyn/releases) - [Changelog](https://github.com/dotnet/roslyn/blob/main/docs/Breaking%20API%20Changes.md) - [Commits](https://github.com/dotnet/roslyn/commits) Updates `Microsoft.CodeAnalysis.VisualBasic` from 4.11.0 to 4.12.0 - [Release notes](https://github.com/dotnet/roslyn/releases) - [Changelog](https://github.com/dotnet/roslyn/blob/main/docs/Breaking%20API%20Changes.md) - [Commits](https://github.com/dotnet/roslyn/commits) --- updated-dependencies: - dependency-name: Microsoft.CodeAnalysis.CSharp dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: Microsoft.CodeAnalysis.Analyzers dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: Microsoft.CodeAnalysis.Common dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: Microsoft.CodeAnalysis.CSharp dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: Microsoft.CodeAnalysis.Common dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: Microsoft.CodeAnalysis.VisualBasic dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- src/Directory.Packages.props | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 954cffd0ea..103cd24f38 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -6,7 +6,7 @@ - + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 7b94376646..4ba21fb81c 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -6,9 +6,9 @@ - - - + + + From d04c75c022823bc5c33939b0fa6b1a6e9c0e53f7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 10:57:54 +0000 Subject: [PATCH 309/544] (deps): Bump coverlet.msbuild from 6.0.2 to 6.0.3 in /src Bumps [coverlet.msbuild](https://github.com/coverlet-coverage/coverlet) from 6.0.2 to 6.0.3. - [Release notes](https://github.com/coverlet-coverage/coverlet/releases) - [Commits](https://github.com/coverlet-coverage/coverlet/compare/v6.0.2...v6.0.3) --- updated-dependencies: - dependency-name: coverlet.msbuild dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 7b94376646..7e0f377798 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -40,6 +40,6 @@ - + \ No newline at end of file From 921c4b9b8613b6daf9d40d5a2e846100149cd9e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 11:04:32 +0000 Subject: [PATCH 310/544] (deps): Bump JunitXml.TestLogger from 4.1.0 to 5.0.0 in /src Bumps [JunitXml.TestLogger](https://github.com/spekt/testlogger) from 4.1.0 to 5.0.0. - [Release notes](https://github.com/spekt/testlogger/releases) - [Changelog](https://github.com/spekt/testlogger/blob/master/CHANGELOG.md) - [Commits](https://github.com/spekt/testlogger/compare/v4.1.0...v5.0.0) --- updated-dependencies: - dependency-name: JunitXml.TestLogger dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 7b94376646..be95ab4d84 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -20,7 +20,7 @@ - + From b0d89f82213880b01d9729e1170a51f81b85de0b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 12:07:35 +0000 Subject: [PATCH 311/544] (deps): Bump the analyzers group across 2 directories with 3 updates Bumps the analyzers group with 2 updates in the /new-cli directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Bumps the analyzers group with 3 updates in the /src directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator), [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator) and [NUnit.Analyzers](https://github.com/nunit/nunit.analyzers). Updates `Roslynator.Analyzers` from 4.12.9 to 4.12.10 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.9...v4.12.10) Updates `Roslynator.Formatting.Analyzers` from 4.12.9 to 4.12.10 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.9...v4.12.10) Updates `Roslynator.Analyzers` from 4.12.9 to 4.12.10 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.9...v4.12.10) Updates `Roslynator.Formatting.Analyzers` from 4.12.9 to 4.12.10 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.9...v4.12.10) Updates `NUnit.Analyzers` from 4.4.0 to 4.5.0 - [Release notes](https://github.com/nunit/nunit.analyzers/releases) - [Changelog](https://github.com/nunit/nunit.analyzers/blob/master/CHANGES.md) - [Commits](https://github.com/nunit/nunit.analyzers/compare/4.4.0...4.5.0) --- updated-dependencies: - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: NUnit.Analyzers dependency-type: direct:production update-type: version-update:semver-minor dependency-group: analyzers ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 4 ++-- src/Directory.Packages.props | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 103cd24f38..01c8fe021a 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -12,8 +12,8 @@ - - + + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 4ba21fb81c..e8befa0805 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -15,8 +15,8 @@ - - + + @@ -33,7 +33,7 @@ - + From 5dba8920d533ca55724419edaf6577b113947601 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 10:54:17 +0000 Subject: [PATCH 312/544] (deps): Bump Cake.Frosting.Git from 4.0.0 to 5.0.1 in /build Bumps [Cake.Frosting.Git](https://github.com/cake-contrib/Cake_Git) from 4.0.0 to 5.0.1. - [Release notes](https://github.com/cake-contrib/Cake_Git/releases) - [Changelog](https://github.com/cake-contrib/Cake_Git/blob/develop/ReleaseNotes.md) - [Commits](https://github.com/cake-contrib/Cake_Git/compare/v4.0.0...v5.0.1) --- updated-dependencies: - dependency-name: Cake.Frosting.Git dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- build/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Directory.Packages.props b/build/Directory.Packages.props index 2e0ac0583c..b8ef3cbd86 100644 --- a/build/Directory.Packages.props +++ b/build/Directory.Packages.props @@ -7,7 +7,7 @@ - + From b95e423a66b36e1d91bd07bdb5446e2df11133d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 10:53:51 +0000 Subject: [PATCH 313/544] (deps): Bump the serilog group across 1 directory with 2 updates Bumps the serilog group with 2 updates in the /new-cli directory: [Microsoft.Extensions.DependencyInjection.Abstractions](https://github.com/dotnet/runtime) and [Serilog.Extensions.Logging](https://github.com/serilog/serilog-extensions-logging). Updates `Microsoft.Extensions.DependencyInjection.Abstractions` from 9.0.0 to 9.0.0 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.0...v9.0.0) Updates `Serilog.Extensions.Logging` from 8.0.0 to 9.0.0 - [Release notes](https://github.com/serilog/serilog-extensions-logging/releases) - [Commits](https://github.com/serilog/serilog-extensions-logging/compare/v8.0.0...v9.0.0) --- updated-dependencies: - dependency-name: Microsoft.Extensions.DependencyInjection.Abstractions dependency-type: direct:production update-type: version-update:semver-patch dependency-group: serilog - dependency-name: Serilog.Extensions.Logging dependency-type: direct:production update-type: version-update:semver-major dependency-group: serilog ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 103cd24f38..8818f52a1b 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -16,7 +16,7 @@ - + From 210508767a55ed8cd8df716caee48c3b313b78f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 13:36:48 +0000 Subject: [PATCH 314/544] (deps): Bump YamlDotNet from 16.2.1 to 16.3.0 in /src Bumps [YamlDotNet](https://github.com/aaubry/YamlDotNet) from 16.2.1 to 16.3.0. - [Release notes](https://github.com/aaubry/YamlDotNet/releases) - [Commits](https://github.com/aaubry/YamlDotNet/compare/v16.2.1...v16.3.0) --- updated-dependencies: - dependency-name: YamlDotNet dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 343b091a2c..588554fae2 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -39,7 +39,7 @@ - + \ No newline at end of file From a707758fdc03ab82d20beb36d671354700ba403f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 13:41:34 +0000 Subject: [PATCH 315/544] (deps): Bump NUnit from 4.2.2 to 4.3.2 in /src Bumps [NUnit](https://github.com/nunit/nunit) from 4.2.2 to 4.3.2. - [Release notes](https://github.com/nunit/nunit/releases) - [Changelog](https://github.com/nunit/nunit/blob/main/CHANGES.md) - [Commits](https://github.com/nunit/nunit/compare/4.2.2...4.3.2) --- updated-dependencies: - dependency-name: NUnit dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index dcf7b95a2d..e88abe658f 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -32,7 +32,7 @@ - + From 79b4771c03ef35d78c9b8c57944a16003e0ee2c1 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 8 Jan 2025 15:52:22 +0100 Subject: [PATCH 316/544] add LibGit2Sharp dependabot section --- .github/dependabot.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 7a4c13a974..debc5ad413 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -27,6 +27,9 @@ updates: nunit: patterns: - "NUnit.*" + LibGit2Sharp: + patterns: + - "LibGit2Sharp.*" directories: - "/build" - "/new-cli" From ecbba657125aa9ecf7c5901f4a6fa1bf7a6281df Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 15:31:56 +0000 Subject: [PATCH 317/544] (deps): Bump JsonSchema.Net.Generation from 4.6.0 to 5.0.0 in /src Bumps [JsonSchema.Net.Generation](https://github.com/json-everything/json-everything) from 4.6.0 to 5.0.0. - [Commits](https://github.com/json-everything/json-everything/compare/schema-gen-v4.6.0...logic-v5.0.0) --- updated-dependencies: - dependency-name: JsonSchema.Net.Generation dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- schemas/6.1/GitVersion.configuration.json | 440 ++++++++++++---------- schemas/6.1/GitVersion.json | 85 ++++- src/Directory.Packages.props | 2 +- src/GitVersion.Schema/Program.cs | 1 - 4 files changed, 314 insertions(+), 214 deletions(-) diff --git a/schemas/6.1/GitVersion.configuration.json b/schemas/6.1/GitVersion.configuration.json index affb98d33e..c23d8a4686 100644 --- a/schemas/6.1/GitVersion.configuration.json +++ b/schemas/6.1/GitVersion.configuration.json @@ -7,7 +7,10 @@ "properties": { "assembly-file-versioning-format": { "description": "Specifies the format of AssemblyFileVersion and overwrites the value of assembly-file-versioning-scheme.", - "type": "string" + "type": [ + "string", + "null" + ] }, "assembly-file-versioning-scheme": { "description": "The scheme to use when setting AssemblyFileVersion attribute. Can be 'MajorMinorPatchTag', 'MajorMinorPatch', 'MajorMinor', 'Major', 'None'. Defaults to 'MajorMinorPatch'.", @@ -17,17 +20,24 @@ "MajorMinorPatch", "MajorMinor", "Major", - "None" + "None", + null ] }, "assembly-informational-format": { "description": "Specifies the format of AssemblyInformationalVersion. Defaults to '{InformationalVersion}'.", "default": "'{InformationalVersion}'", - "type": "string" + "type": [ + "string", + "null" + ] }, "assembly-versioning-format": { "description": "Specifies the format of AssemblyVersion and overwrites the value of assembly-versioning-scheme.", - "type": "string" + "type": [ + "string", + "null" + ] }, "assembly-versioning-scheme": { "description": "The scheme to use when setting AssemblyVersion attribute. Can be 'MajorMinorPatchTag', 'MajorMinorPatch', 'MajorMinor', 'Major', 'None'. Defaults to 'MajorMinorPatch'.", @@ -37,62 +47,209 @@ "MajorMinorPatch", "MajorMinor", "Major", - "None" + "None", + null ] }, "branches": { "description": "The header for all the individual branch configuration.", "type": "object", "additionalProperties": { - "$ref": "#/$defs/branchConfiguration" + "type": "object", + "properties": { + "commit-message-incrementing": { + "description": "Sets whether it should be possible to increment the version with special syntax in the commit message. Can be 'Disabled', 'Enabled' or 'MergeMessageOnly'.", + "enum": [ + "Enabled", + "Disabled", + "MergeMessageOnly", + null + ] + }, + "mode": { + "description": "The deployment mode for this branch. Can be 'ManualDeployment', 'ContinuousDelivery', 'ContinuousDeployment'.", + "enum": [ + "ManualDeployment", + "ContinuousDelivery", + "ContinuousDeployment", + null + ] + }, + "increment": { + "description": "The increment strategy for this branch. Can be 'Inherit', 'Patch', 'Minor', 'Major', 'None'.", + "$ref": "#/$defs/incrementStrategy" + }, + "is-main-branch": { + "description": "When using Mainline mode, this indicates that this branch is a mainline. By default main and support/* are mainlines.", + "type": [ + "boolean", + "null" + ] + }, + "is-release-branch": { + "description": "Indicates this branch configuration represents a release branch in GitFlow.", + "type": [ + "boolean", + "null" + ] + }, + "is-source-branch-for": { + "description": "The branches that this branch is a source branch.", + "$ref": "#/$defs/hashSetOfString" + }, + "label": { + "description": "The label to use for this branch. Use the value {BranchName} or similar as a placeholder to insert a named capture group from RegularExpression (fx. the branch name).", + "type": [ + "string", + "null" + ] + }, + "label-number-pattern": { + "format": "regex", + "description": "The regular expression pattern to use to extract the number from the branch name. Defaults to '[/-](?\\d+)'.", + "default": "[/-](?\\d+)", + "type": [ + "string", + "null" + ] + }, + "pre-release-weight": { + "description": "Provides a way to translate the PreReleaseLabel to a number.", + "type": [ + "integer", + "null" + ] + }, + "prevent-increment": { + "description": "The prevent increment configuration section.", + "$ref": "#/$defs/preventIncrementConfiguration" + }, + "regex": { + "format": "regex", + "description": "The regular expression pattern to use to match this branch.", + "type": [ + "string", + "null" + ] + }, + "source-branches": { + "description": "The source branches for this branch.", + "$ref": "#/$defs/hashSetOfString" + }, + "track-merge-message": { + "description": "This property is a branch related property and gives the user the possibility to control the behavior of whether the merge commit message will be interpreted as a next version or not.", + "type": [ + "boolean", + "null" + ] + }, + "track-merge-target": { + "description": "Strategy which will look for tagged merge commits directly off the current branch.", + "type": [ + "boolean", + "null" + ] + }, + "tracks-release-branches": { + "description": "Indicates this branch configuration represents develop in GitFlow.", + "type": [ + "boolean", + "null" + ] + } + } } }, "commit-date-format": { "description": "The format to use when calculating the commit date. Defaults to 'yyyy-MM-dd'. See [Standard Date and Time Format Strings](https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings) and [Custom Date and Time Format Strings](https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings).", "default": "yyyy-MM-dd", - "type": "string" + "type": [ + "string", + "null" + ] }, "commit-message-incrementing": { - "$ref": "#/$defs/nullableOfCommitMessageIncrementMode" + "description": "Sets whether it should be possible to increment the version with special syntax in the commit message. Can be 'Disabled', 'Enabled' or 'MergeMessageOnly'.", + "enum": [ + "Enabled", + "Disabled", + "MergeMessageOnly", + null + ] }, "mode": { - "$ref": "#/$defs/nullableOfDeploymentMode" + "description": "The deployment mode for this branch. Can be 'ManualDeployment', 'ContinuousDelivery', 'ContinuousDeployment'.", + "enum": [ + "ManualDeployment", + "ContinuousDelivery", + "ContinuousDeployment", + null + ] }, "ignore": { "description": "The header property for the ignore configuration.", "type": "object", "properties": { "commits-before": { - "$ref": "#/$defs/string3" + "format": "date-time", + "description": "Commits before this date will be ignored. Format: yyyy-MM-ddTHH:mm:ss.", + "type": [ + "string", + "null" + ] }, "sha": { - "$ref": "#/$defs/hashSetOfString2" + "description": "A sequence of SHAs to be excluded from the version calculations.", + "$ref": "#/$defs/hashSetOfString" } } }, "increment": { + "description": "The increment strategy for this branch. Can be 'Inherit', 'Patch', 'Minor', 'Major', 'None'.", "$ref": "#/$defs/incrementStrategy" }, "is-main-branch": { - "$ref": "#/$defs/nullableOfBoolean" + "description": "When using Mainline mode, this indicates that this branch is a mainline. By default main and support/* are mainlines.", + "type": [ + "boolean", + "null" + ] }, "is-release-branch": { - "$ref": "#/$defs/nullableOfBoolean1" + "description": "Indicates this branch configuration represents a release branch in GitFlow.", + "type": [ + "boolean", + "null" + ] }, "is-source-branch-for": { + "description": "The branches that this branch is a source branch.", "$ref": "#/$defs/hashSetOfString" }, "label": { - "$ref": "#/$defs/string" + "description": "The label to use for this branch. Use the value {BranchName} or similar as a placeholder to insert a named capture group from RegularExpression (fx. the branch name).", + "type": [ + "string", + "null" + ] }, "label-number-pattern": { - "$ref": "#/$defs/string1" + "format": "regex", + "description": "The regular expression pattern to use to extract the number from the branch name. Defaults to '[/-](?\\d+)'.", + "default": "[/-](?\\d+)", + "type": [ + "string", + "null" + ] }, "major-version-bump-message": { "format": "regex", "description": "The regular expression to match commit messages with to perform a major version increment. Defaults to '\\+semver:\\s?(breaking|major)'", "default": "\\+semver:\\s?(breaking|major)", - "type": "string" + "type": [ + "string", + "null" + ] }, "merge-message-formats": { "description": "Custom merge message formats to enable identification of merge messages that do not follow the built-in conventions.", @@ -105,32 +262,54 @@ "format": "regex", "description": "The regular expression to match commit messages with to perform a minor version increment. Defaults to '\\+semver:\\s?(feature|minor)'", "default": "\\+semver:\\s?(feature|minor)", - "type": "string" + "type": [ + "string", + "null" + ] }, "next-version": { "description": "Allows you to bump the next version explicitly. Useful for bumping main or a feature branch with breaking changes", - "type": "string" + "type": [ + "string", + "null" + ] }, "no-bump-message": { "format": "regex", "description": "Used to tell GitVersion not to increment when in Mainline development mode. Defaults to '\\+semver:\\s?(none|skip)'", "default": "\\+semver:\\s?(none|skip)", - "type": "string" + "type": [ + "string", + "null" + ] }, "patch-version-bump-message": { "format": "regex", "description": "The regular expression to match commit messages with to perform a patch version increment. Defaults to '\\+semver:\\s?(fix|patch)'", "default": "\\+semver:\\s?(fix|patch)", - "type": "string" + "type": [ + "string", + "null" + ] }, "pre-release-weight": { - "$ref": "#/$defs/nullableOfInt32" + "description": "Provides a way to translate the PreReleaseLabel to a number.", + "type": [ + "integer", + "null" + ] }, "prevent-increment": { + "description": "The prevent increment configuration section.", "$ref": "#/$defs/preventIncrementConfiguration" }, "regex": { - "$ref": "#/$defs/string2" + "format": "regex", + "description": "The regular expression pattern to use to match this branch.", + "type": [ + "string", + "null" + ] }, "semantic-version-format": { "description": "Specifies the semantic version format that is used when parsing the string. Can be 'Strict' or 'Loose'. Defaults to 'Strict'.", @@ -141,13 +320,17 @@ ] }, "source-branches": { - "$ref": "#/$defs/hashSetOfString1" + "description": "The source branches for this branch.", + "$ref": "#/$defs/hashSetOfString" }, "tag-prefix": { "format": "regex", "description": "A regular expression which is used to trim Git tags before processing. Defaults to '[vV]?'", "default": "[vV]?", - "type": "string" + "type": [ + "string", + "null" + ] }, "tag-pre-release-weight": { "description": "The pre-release weight in case of tagged commits. Defaults to 60000.", @@ -157,13 +340,25 @@ ] }, "track-merge-message": { - "$ref": "#/$defs/nullableOfBoolean4" + "description": "This property is a branch related property and gives the user the possibility to control the behavior of whether the merge commit message will be interpreted as a next version or not.", + "type": [ + "boolean", + "null" + ] }, "track-merge-target": { - "$ref": "#/$defs/nullableOfBoolean5" + "description": "Strategy which will look for tagged merge commits directly off the current branch.", + "type": [ + "boolean", + "null" + ] }, "tracks-release-branches": { - "$ref": "#/$defs/nullableOfBoolean6" + "description": "Indicates this branch configuration represents develop in GitFlow.", + "type": [ + "boolean", + "null" + ] }, "update-build-number": { "description": "Whether to update the build number in the project file. Defaults to true.", @@ -174,13 +369,15 @@ "format": "regex", "description": "A regular expression which is used to determine the version number in the branch name or commit message (e.g., v1.0.0-LTS). Defaults to '(?[vV]?\\d+(\\.\\d+)?(\\.\\d+)?).*'.", "default": "(?[vV]?\\d+(\\.\\d+)?(\\.\\d+)?).*", - "type": "string" + "type": [ + "string", + "null" + ] }, "strategies": { "description": "Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfiguredNextVersion', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'Mainline'.", "type": "array", "items": { - "description": "Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfiguredNextVersion', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'Mainline'.", "enum": [ "None", "Fallback", @@ -195,78 +392,14 @@ }, "workflow": { "description": "The base template of the configuration to use. Possible values are: 'GitFlow/v1' or 'GitHubFlow/v1'", - "type": "string" + "type": [ + "string", + "null" + ] } }, "$defs": { - "branchConfiguration": { - "type": "object", - "properties": { - "commit-message-incrementing": { - "$ref": "#/$defs/nullableOfCommitMessageIncrementMode" - }, - "mode": { - "$ref": "#/$defs/nullableOfDeploymentMode" - }, - "increment": { - "$ref": "#/$defs/incrementStrategy" - }, - "is-main-branch": { - "$ref": "#/$defs/nullableOfBoolean" - }, - "is-release-branch": { - "$ref": "#/$defs/nullableOfBoolean1" - }, - "is-source-branch-for": { - "$ref": "#/$defs/hashSetOfString" - }, - "label": { - "$ref": "#/$defs/string" - }, - "label-number-pattern": { - "$ref": "#/$defs/string1" - }, - "pre-release-weight": { - "$ref": "#/$defs/nullableOfInt32" - }, - "prevent-increment": { - "$ref": "#/$defs/preventIncrementConfiguration" - }, - "regex": { - "$ref": "#/$defs/string2" - }, - "source-branches": { - "$ref": "#/$defs/hashSetOfString1" - }, - "track-merge-message": { - "$ref": "#/$defs/nullableOfBoolean4" - }, - "track-merge-target": { - "$ref": "#/$defs/nullableOfBoolean5" - }, - "tracks-release-branches": { - "$ref": "#/$defs/nullableOfBoolean6" - } - } - }, - "nullableOfCommitMessageIncrementMode": { - "description": "Sets whether it should be possible to increment the version with special syntax in the commit message. Can be 'Disabled', 'Enabled' or 'MergeMessageOnly'.", - "enum": [ - "Enabled", - "Disabled", - "MergeMessageOnly" - ] - }, - "nullableOfDeploymentMode": { - "description": "The deployment mode for this branch. Can be 'ManualDeployment', 'ContinuousDelivery', 'ContinuousDeployment'.", - "enum": [ - "ManualDeployment", - "ContinuousDelivery", - "ContinuousDeployment" - ] - }, "incrementStrategy": { - "description": "The increment strategy for this branch. Can be 'Inherit', 'Patch', 'Minor', 'Major', 'None'.", "enum": [ "None", "Major", @@ -275,120 +408,37 @@ "Inherit" ] }, - "nullableOfBoolean": { - "description": "When using Mainline mode, this indicates that this branch is a mainline. By default main and support/* are mainlines.", - "type": [ - "boolean", - "null" - ] - }, - "nullableOfBoolean1": { - "description": "Indicates this branch configuration represents a release branch in GitFlow.", - "type": [ - "boolean", - "null" - ] - }, "hashSetOfString": { - "description": "The branches that this branch is a source branch.", "type": "array", "items": { - "description": "The branches that this branch is a source branch.", "type": "string" } }, - "string": { - "description": "The label to use for this branch. Use the value {BranchName} or similar as a placeholder to insert a named capture group from RegularExpression (fx. the branch name).", - "type": "string" - }, - "string1": { - "format": "regex", - "description": "The regular expression pattern to use to extract the number from the branch name. Defaults to '[/-](?\\d+)'.", - "default": "[/-](?\\d+)", - "type": "string" - }, - "nullableOfInt32": { - "description": "Provides a way to translate the PreReleaseLabel to a number.", - "type": [ - "integer", - "null" - ] - }, "preventIncrementConfiguration": { - "description": "The prevent increment configuration section.", "type": "object", "properties": { "of-merged-branch": { - "$ref": "#/$defs/nullableOfBoolean2" + "description": "Prevent increment when branch merged.", + "type": [ + "boolean", + "null" + ] }, "when-branch-merged": { - "$ref": "#/$defs/nullableOfBoolean2" + "description": "Prevent increment when branch merged.", + "type": [ + "boolean", + "null" + ] }, "when-current-commit-tagged": { - "$ref": "#/$defs/nullableOfBoolean3" + "description": "This branch related property controls the behavior whether to use the tagged (value set to true) or the incremented (value set to false) semantic version. Defaults to true.", + "type": [ + "boolean", + "null" + ] } } - }, - "nullableOfBoolean2": { - "description": "Prevent increment when branch merged.", - "type": [ - "boolean", - "null" - ] - }, - "nullableOfBoolean3": { - "description": "This branch related property controls the behavior whether to use the tagged (value set to true) or the incremented (value set to false) semantic version. Defaults to true.", - "type": [ - "boolean", - "null" - ] - }, - "string2": { - "format": "regex", - "description": "The regular expression pattern to use to match this branch.", - "type": "string" - }, - "hashSetOfString1": { - "description": "The source branches for this branch.", - "type": "array", - "items": { - "description": "The source branches for this branch.", - "type": "string" - } - }, - "nullableOfBoolean4": { - "description": "This property is a branch related property and gives the user the possibility to control the behavior of whether the merge commit message will be interpreted as a next version or not.", - "type": [ - "boolean", - "null" - ] - }, - "nullableOfBoolean5": { - "description": "Strategy which will look for tagged merge commits directly off the current branch.", - "type": [ - "boolean", - "null" - ] - }, - "nullableOfBoolean6": { - "description": "Indicates this branch configuration represents develop in GitFlow.", - "type": [ - "boolean", - "null" - ] - }, - "string3": { - "format": "date-time", - "description": "Commits before this date will be ignored. Format: yyyy-MM-ddTHH:mm:ss.", - "type": "string" - }, - "hashSetOfString2": { - "description": "A sequence of SHAs to be excluded from the version calculations.", - "type": "array", - "items": { - "description": "A sequence of SHAs to be excluded from the version calculations.", - "type": "string" - } } } } \ No newline at end of file diff --git a/schemas/6.1/GitVersion.json b/schemas/6.1/GitVersion.json index 037e6acbf4..9c4e5945ab 100644 --- a/schemas/6.1/GitVersion.json +++ b/schemas/6.1/GitVersion.json @@ -7,15 +7,24 @@ "properties": { "AssemblySemFileVer": { "description": "Suitable for .NET AssemblyFileVersion. Defaults to Major.Minor.Patch.0.", - "type": "string" + "type": [ + "string", + "null" + ] }, "AssemblySemVer": { "description": "Suitable for .NET AssemblyVersion. Defaults to Major.Minor.0.0", - "type": "string" + "type": [ + "string", + "null" + ] }, "BranchName": { "description": "The name of the checked out Git branch.", - "type": "string" + "type": [ + "string", + "null" + ] }, "BuildMetaData": { "description": "The build metadata, usually representing number of commits since the VersionSourceSha.", @@ -26,7 +35,10 @@ }, "CommitDate": { "description": "The ISO-8601 formatted date of the commit identified by Sha.", - "type": "string" + "type": [ + "string", + "null" + ] }, "CommitsSinceVersionSource": { "description": "The number of commits since the version source.", @@ -37,19 +49,31 @@ }, "EscapedBranchName": { "description": "Equal to BranchName, but with / replaced with -.", - "type": "string" + "type": [ + "string", + "null" + ] }, "FullBuildMetaData": { "description": "The BuildMetaData suffixed with BranchName and Sha.", - "type": "string" + "type": [ + "string", + "null" + ] }, "FullSemVer": { "description": "The full, SemVer 2.0 compliant version number.", - "type": "string" + "type": [ + "string", + "null" + ] }, "InformationalVersion": { "description": "Suitable for .NET AssemblyInformationalVersion. Defaults to FullSemVer suffixed by FullBuildMetaData.", - "type": "string" + "type": [ + "string", + "null" + ] }, "Major": { "description": "The major version. Should be incremented on breaking changes.", @@ -60,7 +84,10 @@ }, "MajorMinorPatch": { "description": "Major, Minor and Patch joined together, separated by '.'.", - "type": "string" + "type": [ + "string", + "null" + ] }, "Minor": { "description": "The minor version. Should be incremented on new features.", @@ -78,11 +105,17 @@ }, "PreReleaseLabel": { "description": "The pre-release label is the name of the pre-release.", - "type": "string" + "type": [ + "string", + "null" + ] }, "PreReleaseLabelWithDash": { "description": "The pre-release label prefixed with a dash.", - "type": "string" + "type": [ + "string", + "null" + ] }, "PreReleaseNumber": { "description": "The pre-release number is the number of commits since the last version bump.", @@ -93,23 +126,38 @@ }, "PreReleaseTag": { "description": "The pre-release tag is the pre-release label suffixed by the PreReleaseNumber.", - "type": "string" + "type": [ + "string", + "null" + ] }, "PreReleaseTagWithDash": { "description": "The pre-release tag prefixed with a dash.", - "type": "string" + "type": [ + "string", + "null" + ] }, "SemVer": { "description": "The semantic version number, including PreReleaseTagWithDash for pre-release version numbers.", - "type": "string" + "type": [ + "string", + "null" + ] }, "Sha": { "description": "The SHA of the Git commit.", - "type": "string" + "type": [ + "string", + "null" + ] }, "ShortSha": { "description": "The Sha limited to 7 characters.", - "type": "string" + "type": [ + "string", + "null" + ] }, "UncommittedChanges": { "description": "The number of uncommitted changes present in the repository.", @@ -120,7 +168,10 @@ }, "VersionSourceSha": { "description": "The SHA of the commit used as version source.", - "type": "string" + "type": [ + "string", + "null" + ] }, "WeightedPreReleaseNumber": { "description": "A summation of branch specific pre-release-weight and the PreReleaseNumber. Can be used to obtain a monotonically increasing version number across the branches.", diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index e88abe658f..18afaff8c2 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -19,7 +19,7 @@ - + diff --git a/src/GitVersion.Schema/Program.cs b/src/GitVersion.Schema/Program.cs index ba84aed254..60451c13b2 100644 --- a/src/GitVersion.Schema/Program.cs +++ b/src/GitVersion.Schema/Program.cs @@ -12,7 +12,6 @@ var configuration = new SchemaGeneratorConfiguration { PropertyNameResolver = PropertyNameResolvers.KebabCase, - Nullability = Nullability.AllowForNullableValueTypes, PropertyOrder = PropertyOrder.ByName, }; From a6f0c9013ac1cf1f19b666fc0a00965c926e85e7 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 8 Jan 2025 19:53:51 +0100 Subject: [PATCH 318/544] use ubuntu-24.04 --- .github/workflows/_build.yml | 2 +- .github/workflows/_docker_manifests.yml | 2 +- .github/workflows/_prepare.yml | 4 ++-- .github/workflows/_unit_tests.yml | 2 +- .github/workflows/ci.yml | 8 ++++---- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/docs.yml | 6 +++--- .github/workflows/format.yml | 2 +- .github/workflows/mkdocs.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/stale.yml | 2 +- .github/workflows/winget.yml | 2 +- 12 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/_build.yml b/.github/workflows/_build.yml index 75ed54e3c2..ae96c6357d 100644 --- a/.github/workflows/_build.yml +++ b/.github/workflows/_build.yml @@ -11,7 +11,7 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-latest, ubuntu-latest, macos-15] + os: [windows-latest, ubuntu-24.04, macos-15] runs-on: ${{ matrix.os }} steps: diff --git a/.github/workflows/_docker_manifests.yml b/.github/workflows/_docker_manifests.yml index 2e72c53e51..9a1fdeb2b1 100644 --- a/.github/workflows/_docker_manifests.yml +++ b/.github/workflows/_docker_manifests.yml @@ -14,7 +14,7 @@ env: jobs: manifest: name: ${{ matrix.dockerDistro }} - net${{ matrix.dotnetVersion }} - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: diff --git a/.github/workflows/_prepare.yml b/.github/workflows/_prepare.yml index 5c5d485933..ff23316ac6 100644 --- a/.github/workflows/_prepare.yml +++ b/.github/workflows/_prepare.yml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-latest, ubuntu-latest, macos-15] + os: [windows-latest, ubuntu-24.04, macos-15] runs-on: ${{ matrix.os }} steps: @@ -49,7 +49,7 @@ jobs: set_matrix: needs: [ prepare ] name: Set Matrix - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 outputs: dockerDistros: ${{ steps.set_matrix.outputs.dockerDistros }} dotnetVersions: ${{ steps.set_matrix.outputs.dotnetVersions }} diff --git a/.github/workflows/_unit_tests.yml b/.github/workflows/_unit_tests.yml index f4925b5f59..97bf554592 100644 --- a/.github/workflows/_unit_tests.yml +++ b/.github/workflows/_unit_tests.yml @@ -16,7 +16,7 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-latest, ubuntu-latest, macos-15] + os: [windows-latest, ubuntu-24.04, macos-15] dotnetVersion: ${{ fromJson(inputs.dotnetVersions) }} runs-on: ${{ matrix.os }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 504a339b9f..19f78cdd91 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,9 +70,9 @@ jobs: matrix: include: - arch: amd64 - runner: ubuntu-latest + runner: ubuntu-24.04 - arch: arm64 - runner: ubuntu-latest + runner: ubuntu-24.04 uses: ./.github/workflows/_artifacts_linux.yml with: runner: ${{ matrix.runner }} @@ -88,9 +88,9 @@ jobs: matrix: include: - arch: amd64 - runner: ubuntu-latest + runner: ubuntu-24.04 - arch: arm64 - runner: ubuntu-latest + runner: ubuntu-24.04 uses: ./.github/workflows/_docker.yml with: diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index b05b693cd2..752b375de9 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -39,7 +39,7 @@ jobs: contents: read # for actions/checkout to fetch code security-events: write # for github/codeql-action/analyze to upload SARIF results name: Analyze - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 strategy: fail-fast: false diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 271abaebcc..f49b4d9436 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -33,7 +33,7 @@ env: jobs: prepare: name: Prepare Build - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - @@ -87,7 +87,7 @@ jobs: validate: name: Validates Html needs: [ prepare ] - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Checkout @@ -123,7 +123,7 @@ jobs: publish: name: Publish docs needs: [ validate ] - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 env: GITHUB_TOKEN: ${{ secrets.RELEASE_GITHUB_TOKEN }} GITHUB_USERNAME: ${{ github.actor }} diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 2e61a314b0..f3cc9ffc04 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -34,7 +34,7 @@ env: jobs: format: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 name: DotNet Format steps: - diff --git a/.github/workflows/mkdocs.yml b/.github/workflows/mkdocs.yml index 9182452b60..e3918452ad 100644 --- a/.github/workflows/mkdocs.yml +++ b/.github/workflows/mkdocs.yml @@ -15,7 +15,7 @@ defaults: jobs: docs: name: Update Markdown (embedded snippets) - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Checkout diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 033d0c2dbd..ae9230ea55 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,7 +6,7 @@ on: jobs: release: name: Trigger ci flow - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Checkout diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index b6b44be7cf..4db0930525 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -11,7 +11,7 @@ permissions: jobs: stale: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/stale@v9 with: diff --git a/.github/workflows/winget.yml b/.github/workflows/winget.yml index 1f9e75b3ce..f6ad004ed9 100644 --- a/.github/workflows/winget.yml +++ b/.github/workflows/winget.yml @@ -17,7 +17,7 @@ jobs: permissions: contents: none name: Bump winget manifest - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Get version id: get-version From d1396a6b2b385978250295742e857668971db9f1 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 8 Jan 2025 20:02:08 +0100 Subject: [PATCH 319/544] use windows-2025 --- .github/workflows/_artifacts_windows.yml | 2 +- .github/workflows/_build.yml | 8 ++++---- .github/workflows/_prepare.yml | 2 +- .github/workflows/_publish.yml | 2 +- .github/workflows/_unit_tests.yml | 2 +- .github/workflows/ci.yml | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/_artifacts_windows.yml b/.github/workflows/_artifacts_windows.yml index 6c1832961e..c93e7092bd 100644 --- a/.github/workflows/_artifacts_windows.yml +++ b/.github/workflows/_artifacts_windows.yml @@ -8,7 +8,7 @@ env: jobs: artifacts: name: ${{ matrix.package }} - runs-on: windows-latest + runs-on: windows-2025 strategy: fail-fast: false matrix: diff --git a/.github/workflows/_build.yml b/.github/workflows/_build.yml index ae96c6357d..b3ce787c63 100644 --- a/.github/workflows/_build.yml +++ b/.github/workflows/_build.yml @@ -11,7 +11,7 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-latest, ubuntu-24.04, macos-15] + os: [windows-2025, ubuntu-24.04, macos-15] runs-on: ${{ matrix.os }} steps: @@ -30,21 +30,21 @@ jobs: - name: 'Upload nuget packages' uses: actions/upload-artifact@v4 - if: matrix.os == 'windows-latest' + if: matrix.os == 'windows-2025' with: name: nuget path: ${{ github.workspace }}/artifacts/packages/nuget - name: 'Upload native packages' uses: actions/upload-artifact@v4 - if: matrix.os == 'windows-latest' + if: matrix.os == 'windows-2025' with: name: native-${{ runner.os }} path: ${{ github.workspace }}/artifacts/packages/native/*.zip - name: 'Upload native packages' uses: actions/upload-artifact@v4 - if: matrix.os != 'windows-latest' + if: matrix.os != 'windows-2025' with: name: native-${{ runner.os }} path: ${{ github.workspace }}/artifacts/packages/native/*.tar.gz diff --git a/.github/workflows/_prepare.yml b/.github/workflows/_prepare.yml index ff23316ac6..1ab92c7163 100644 --- a/.github/workflows/_prepare.yml +++ b/.github/workflows/_prepare.yml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-latest, ubuntu-24.04, macos-15] + os: [windows-2025, ubuntu-24.04, macos-15] runs-on: ${{ matrix.os }} steps: diff --git a/.github/workflows/_publish.yml b/.github/workflows/_publish.yml index d9aec579e7..142042a8da 100644 --- a/.github/workflows/_publish.yml +++ b/.github/workflows/_publish.yml @@ -8,7 +8,7 @@ env: jobs: publish: name: ${{ matrix.taskName }} - runs-on: windows-latest + runs-on: windows-2025 strategy: fail-fast: false matrix: diff --git a/.github/workflows/_unit_tests.yml b/.github/workflows/_unit_tests.yml index 97bf554592..f06c55a71d 100644 --- a/.github/workflows/_unit_tests.yml +++ b/.github/workflows/_unit_tests.yml @@ -16,7 +16,7 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-latest, ubuntu-24.04, macos-15] + os: [windows-2025, ubuntu-24.04, macos-15] dotnetVersion: ${{ fromJson(inputs.dotnetVersions) }} runs-on: ${{ matrix.os }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 19f78cdd91..805050efda 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -118,7 +118,7 @@ jobs: release: name: Release needs: [ publish, docker_linux_manifests ] - runs-on: windows-latest + runs-on: windows-2025 env: GITHUB_TOKEN: ${{ secrets.RELEASE_GITHUB_TOKEN }} steps: From 1faa5a1176931104da49badaf4b3fda555abef05 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 19:17:47 +0000 Subject: [PATCH 320/544] (deps): Bump xunit.assert from 2.9.2 to 2.9.3 in /build Bumps [xunit.assert](https://github.com/xunit/xunit) from 2.9.2 to 2.9.3. - [Commits](https://github.com/xunit/xunit/compare/v2-2.9.2...v2-2.9.3) --- updated-dependencies: - dependency-name: xunit.assert dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Directory.Packages.props b/build/Directory.Packages.props index b8ef3cbd86..849085972c 100644 --- a/build/Directory.Packages.props +++ b/build/Directory.Packages.props @@ -15,6 +15,6 @@ - + \ No newline at end of file From 403dbd371157f1071d01741a69ab34367844542a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 10 Jan 2025 16:12:25 +0000 Subject: [PATCH 321/544] (deps): Bump NUnit.Analyzers Bumps the analyzers group with 1 update in the /src directory: [NUnit.Analyzers](https://github.com/nunit/nunit.analyzers). Updates `NUnit.Analyzers` from 4.5.0 to 4.6.0 - [Release notes](https://github.com/nunit/nunit.analyzers/releases) - [Changelog](https://github.com/nunit/nunit.analyzers/blob/master/CHANGES.md) - [Commits](https://github.com/nunit/nunit.analyzers/compare/4.5.0...4.6.0) --- updated-dependencies: - dependency-name: NUnit.Analyzers dependency-type: direct:production update-type: version-update:semver-minor dependency-group: analyzers ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 18afaff8c2..9cb1f547dc 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -33,7 +33,7 @@ - + From f3e1fd4b31f67c0b39cfe182c88376428c084c66 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 15:45:44 +0000 Subject: [PATCH 322/544] (deps): Bump Polly from 8.5.0 to 8.5.1 in /src Bumps [Polly](https://github.com/App-vNext/Polly) from 8.5.0 to 8.5.1. - [Release notes](https://github.com/App-vNext/Polly/releases) - [Changelog](https://github.com/App-vNext/Polly/blob/main/CHANGELOG.md) - [Commits](https://github.com/App-vNext/Polly/compare/8.5.0...8.5.1) --- updated-dependencies: - dependency-name: Polly dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 9cb1f547dc..df9b7c1a4e 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -14,7 +14,7 @@ - + From cdedabd0259e143e602121b7346fbbeb9f04d945 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 15:45:20 +0000 Subject: [PATCH 323/544] (deps): Bump Polly from 8.5.0 to 8.5.1 in /new-cli Bumps [Polly](https://github.com/App-vNext/Polly) from 8.5.0 to 8.5.1. - [Release notes](https://github.com/App-vNext/Polly/releases) - [Changelog](https://github.com/App-vNext/Polly/blob/main/CHANGELOG.md) - [Commits](https://github.com/App-vNext/Polly/compare/8.5.0...8.5.1) --- updated-dependencies: - dependency-name: Polly dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index abd90ead7a..0471094bf3 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -11,7 +11,7 @@ - + From 4330f7e31b8e5bff62b8b63f4c055251e0545238 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Jan 2025 07:45:23 +0000 Subject: [PATCH 324/544] (deps): Bump dotnet-sdk from 9.0.101 to 9.0.102 Bumps [dotnet-sdk](https://github.com/dotnet/sdk) from 9.0.101 to 9.0.102. - [Release notes](https://github.com/dotnet/sdk/releases) - [Commits](https://github.com/dotnet/sdk/commits/v9.0.102) --- updated-dependencies: - dependency-name: dotnet-sdk dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index 7b200833ee..63f9762c77 100644 --- a/global.json +++ b/global.json @@ -5,6 +5,6 @@ "src" ], "sdk": { - "version": "9.0.101" + "version": "9.0.102" } } From fb43928da0ccd86a9b69ab9b9d12146c1331aeaa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Jan 2025 07:59:36 +0000 Subject: [PATCH 325/544] (deps): Bump the microsoft group across 2 directories with 9 updates Bumps the microsoft group with 2 updates in the /new-cli directory: [System.Text.Json](https://github.com/dotnet/runtime) and [Microsoft.Extensions.DependencyInjection.Abstractions](https://github.com/dotnet/runtime). Bumps the microsoft group with 9 updates in the /src directory: | Package | From | To | | --- | --- | --- | | [System.Text.Json](https://github.com/dotnet/runtime) | `9.0.0` | `9.0.1` | | [Microsoft.Extensions.DependencyInjection.Abstractions](https://github.com/dotnet/runtime) | `9.0.0` | `9.0.1` | | [Microsoft.Extensions.Configuration.CommandLine](https://github.com/dotnet/runtime) | `9.0.0` | `9.0.1` | | [Microsoft.Extensions.DependencyInjection](https://github.com/dotnet/runtime) | `9.0.0` | `9.0.1` | | [Microsoft.Extensions.FileSystemGlobbing](https://github.com/dotnet/runtime) | `9.0.0` | `9.0.1` | | [Microsoft.Extensions.FileSystemGlobbing](https://github.com/dotnet/runtime) | `9.0.0` | `9.0.1` | | [Microsoft.Extensions.Hosting](https://github.com/dotnet/runtime) | `9.0.0` | `9.0.1` | | [Microsoft.Bcl.AsyncInterfaces](https://github.com/dotnet/runtime) | `9.0.0` | `9.0.1` | | [System.Drawing.Common](https://github.com/dotnet/winforms) | `9.0.0` | `9.0.1` | | [System.Security.Cryptography.Xml](https://github.com/dotnet/runtime) | `9.0.0` | `9.0.1` | Updates `System.Text.Json` from 9.0.0 to 9.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.0...v9.0.1) Updates `Microsoft.Extensions.DependencyInjection.Abstractions` from 9.0.0 to 9.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.0...v9.0.1) Updates `System.Text.Json` from 9.0.0 to 9.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.0...v9.0.1) Updates `Microsoft.Extensions.DependencyInjection.Abstractions` from 9.0.0 to 9.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.0...v9.0.1) Updates `Microsoft.Extensions.Configuration.CommandLine` from 9.0.0 to 9.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.0...v9.0.1) Updates `Microsoft.Extensions.DependencyInjection` from 9.0.0 to 9.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.0...v9.0.1) Updates `Microsoft.Extensions.FileSystemGlobbing` from 9.0.0 to 9.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.0...v9.0.1) Updates `Microsoft.Extensions.FileSystemGlobbing` from 9.0.0 to 9.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.0...v9.0.1) Updates `Microsoft.Extensions.Hosting` from 9.0.0 to 9.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.0...v9.0.1) Updates `Microsoft.Bcl.AsyncInterfaces` from 9.0.0 to 9.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.0...v9.0.1) Updates `System.Drawing.Common` from 9.0.0 to 9.0.1 - [Release notes](https://github.com/dotnet/winforms/releases) - [Changelog](https://github.com/dotnet/winforms/blob/main/docs/release-activity.md) - [Commits](https://github.com/dotnet/winforms/commits/v9.0.1) Updates `System.Security.Cryptography.Xml` from 9.0.0 to 9.0.1 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.0...v9.0.1) --- updated-dependencies: - dependency-name: System.Text.Json dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.DependencyInjection.Abstractions dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: System.Text.Json dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.DependencyInjection.Abstractions dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.Configuration.CommandLine dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.DependencyInjection dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.FileSystemGlobbing dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.FileSystemGlobbing dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.Hosting dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Bcl.AsyncInterfaces dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: System.Drawing.Common dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: System.Security.Cryptography.Xml dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 4 ++-- src/Directory.Packages.props | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 0471094bf3..33569b2740 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -10,7 +10,7 @@ - + @@ -21,6 +21,6 @@ - + \ No newline at end of file diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index df9b7c1a4e..efd7e7b66f 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -11,8 +11,8 @@ - - + + @@ -22,13 +22,13 @@ - + - - - - + + + + @@ -36,9 +36,9 @@ - - - + + + From 7b31a5c1665f62a28fc53475af6058e373b13eda Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 15:34:35 +0000 Subject: [PATCH 326/544] (deps): Bump coverlet.msbuild from 6.0.3 to 6.0.4 in /src Bumps [coverlet.msbuild](https://github.com/coverlet-coverage/coverlet) from 6.0.3 to 6.0.4. - [Release notes](https://github.com/coverlet-coverage/coverlet/releases) - [Commits](https://github.com/coverlet-coverage/coverlet/compare/v6.0.3...v6.0.4) --- updated-dependencies: - dependency-name: coverlet.msbuild dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index efd7e7b66f..28eb2abce4 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -40,6 +40,6 @@ - + \ No newline at end of file From f0b195fc1d8e78d8293965d29b20f59d88bc34e4 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 21 Jan 2025 07:18:15 +0100 Subject: [PATCH 327/544] formatting cleanup --- .github/actions/docker-manifests/action.yml | 10 ++++++++-- .github/actions/docker-publish/action.yml | 10 ++++++++-- .github/actions/docker-test/action.yml | 10 ++++++++-- .github/workflows/_artifacts_linux.yml | 5 ++++- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/.github/actions/docker-manifests/action.yml b/.github/actions/docker-manifests/action.yml index 7bf0945382..c1df90f6b8 100644 --- a/.github/actions/docker-manifests/action.yml +++ b/.github/actions/docker-manifests/action.yml @@ -32,7 +32,10 @@ runs: - name: '[Docker Publish Manifests] DockerHub' shell: pwsh - run: dotnet run/docker.dll --target=DockerManifest --arch=amd64 --arch=arm64 --dotnet_version=${{ inputs.dotnetVersion }} --docker_distro=${{ inputs.dockerDistro }} --docker_registry dockerhub + run: | + dotnet run/docker.dll ` + --target=DockerManifest --arch=amd64 --arch=arm64 --dotnet_version=${{ inputs.dotnetVersion }} ` + --docker_distro=${{ inputs.dockerDistro }} --docker_registry dockerhub - name: Login to GitHub uses: docker/login-action@v3 @@ -43,4 +46,7 @@ runs: - name: '[Docker Publish Manifests] GitHub' shell: pwsh - run: dotnet run/docker.dll --target=DockerManifest --arch=amd64 --arch=arm64 --dotnet_version=${{ inputs.dotnetVersion }} --docker_distro=${{ inputs.dockerDistro }} --docker_registry github + run: | + dotnet run/docker.dll ` + --target=DockerManifest --arch=amd64 --arch=arm64 --dotnet_version=${{ inputs.dotnetVersion }} ` + --docker_distro=${{ inputs.dockerDistro }} --docker_registry github diff --git a/.github/actions/docker-publish/action.yml b/.github/actions/docker-publish/action.yml index d65fbe5aee..cd14fc1df4 100644 --- a/.github/actions/docker-publish/action.yml +++ b/.github/actions/docker-publish/action.yml @@ -35,7 +35,10 @@ runs: - name: '[Docker Publish] DockerHub' shell: pwsh - run: dotnet run/docker.dll --target=DockerPublish --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnetVersion }} --docker_distro=${{ inputs.dockerDistro }} --docker_registry dockerhub --verbosity=diagnostic + run: | + dotnet run/docker.dll ` + --target=DockerPublish --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnetVersion }} ` + --docker_distro=${{ inputs.dockerDistro }} --docker_registry dockerhub --verbosity=diagnostic - name: Login to GitHub uses: docker/login-action@v3 @@ -46,4 +49,7 @@ runs: - name: '[Docker Publish] GitHub' shell: pwsh - run: dotnet run/docker.dll --target=DockerPublish --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnetVersion }} --docker_distro=${{ inputs.dockerDistro }} --docker_registry github --verbosity=diagnostic + run: | + dotnet run/docker.dll ` + --target=DockerPublish --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnetVersion }} ` + --docker_distro=${{ inputs.dockerDistro }} --docker_registry github --verbosity=diagnostic diff --git a/.github/actions/docker-test/action.yml b/.github/actions/docker-test/action.yml index 7e450d2d8e..9ee3fc9ec7 100644 --- a/.github/actions/docker-test/action.yml +++ b/.github/actions/docker-test/action.yml @@ -17,8 +17,14 @@ runs: - name: '[Docker Build & Test] DockerHub' shell: pwsh - run: dotnet run/docker.dll --target=DockerTest --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnetVersion }} --docker_distro=${{ inputs.dockerDistro }} --docker_registry dockerhub --verbosity=diagnostic + run: | + dotnet run/docker.dll --target=DockerTest ` + --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnetVersion }} ` + --docker_distro=${{ inputs.dockerDistro }} --docker_registry dockerhub --verbosity=diagnostic - name: '[Docker Build & Test] GitHub' shell: pwsh - run: dotnet run/docker.dll --target=DockerTest --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnetVersion }} --docker_distro=${{ inputs.dockerDistro }} --docker_registry github --verbosity=diagnostic + run: | + dotnet run/docker.dll --target=DockerTest ` + --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnetVersion }} ` + --docker_distro=${{ inputs.dockerDistro }} --docker_registry github --verbosity=diagnostic diff --git a/.github/workflows/_artifacts_linux.yml b/.github/workflows/_artifacts_linux.yml index ceb3e7c969..a407dedc3d 100644 --- a/.github/workflows/_artifacts_linux.yml +++ b/.github/workflows/_artifacts_linux.yml @@ -50,4 +50,7 @@ jobs: - name: '[Test Artifacts]' shell: pwsh - run: dotnet run/artifacts.dll --target=ArtifactsTest --arch=${{ inputs.arch }} --dotnet_version=${{ matrix.dotnetVersion }} --docker_distro=${{ matrix.dockerDistro }} \ No newline at end of file + run: | + dotnet run/artifacts.dll ` + --target=ArtifactsTest --arch=${{ inputs.arch }} --dotnet_version=${{ matrix.dotnetVersion }} ` + --docker_distro=${{ matrix.dockerDistro }} \ No newline at end of file From c2fe008e408638ec0d77570d61ba528bb456b160 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Fri, 29 Dec 2023 05:51:51 +0100 Subject: [PATCH 328/544] update the workflows to test the artifacts and docker images on arm64 runners --- .github/workflows/_docker.yml | 3 --- .github/workflows/_docker_manifests.yml | 3 --- .github/workflows/ci.yml | 4 ++-- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/.github/workflows/_docker.yml b/.github/workflows/_docker.yml index 8514377ad6..b0b432b735 100644 --- a/.github/workflows/_docker.yml +++ b/.github/workflows/_docker.yml @@ -46,9 +46,6 @@ jobs: uses: docker/setup-docker-action@v4 with: daemon-config: '{ "features": { "containerd-snapshotter": true } }' - - - name: Setup QEMU - uses: docker/setup-qemu-action@v3 - name: Setup Docker Buildx uses: docker/setup-buildx-action@v3 diff --git a/.github/workflows/_docker_manifests.yml b/.github/workflows/_docker_manifests.yml index 9a1fdeb2b1..39a4045e9c 100644 --- a/.github/workflows/_docker_manifests.yml +++ b/.github/workflows/_docker_manifests.yml @@ -34,9 +34,6 @@ jobs: uses: docker/setup-docker-action@v4 with: daemon-config: '{ "features": { "containerd-snapshotter": true } }' - - - name: Setup QEMU - uses: docker/setup-qemu-action@v3 - name: Setup Docker Buildx uses: docker/setup-buildx-action@v3 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 805050efda..bfa6c9732e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,7 +72,7 @@ jobs: - arch: amd64 runner: ubuntu-24.04 - arch: arm64 - runner: ubuntu-24.04 + runner: ubuntu-24.04-arm uses: ./.github/workflows/_artifacts_linux.yml with: runner: ${{ matrix.runner }} @@ -90,7 +90,7 @@ jobs: - arch: amd64 runner: ubuntu-24.04 - arch: arm64 - runner: ubuntu-24.04 + runner: ubuntu-24.04-arm uses: ./.github/workflows/_docker.yml with: From 9f656bea3ce9c4f8a7c3d55196b6d1f5ac728d7b Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 21 Jan 2025 07:50:56 +0100 Subject: [PATCH 329/544] add docker-setup action --- .github/actions/docker-setup/action.yml | 16 ++++++++++++++++ .github/workflows/_artifacts_linux.yml | 3 +++ .github/workflows/_docker.yml | 11 +---------- .github/workflows/_docker_manifests.yml | 11 +---------- 4 files changed, 21 insertions(+), 20 deletions(-) create mode 100644 .github/actions/docker-setup/action.yml diff --git a/.github/actions/docker-setup/action.yml b/.github/actions/docker-setup/action.yml new file mode 100644 index 0000000000..7b75cebdfd --- /dev/null +++ b/.github/actions/docker-setup/action.yml @@ -0,0 +1,16 @@ +name: 'Docker Setup' +description: 'Setups the docker engine' + +runs: + using: 'composite' + steps: + - name: Set up Docker + uses: docker/setup-docker-action@v4 + with: + daemon-config: '{ "features": { "containerd-snapshotter": true } }' + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + version: 'latest' + driver-opts: 'image=moby/buildkit:buildx-stable-1' + install: true diff --git a/.github/workflows/_artifacts_linux.yml b/.github/workflows/_artifacts_linux.yml index a407dedc3d..d7ad93db09 100644 --- a/.github/workflows/_artifacts_linux.yml +++ b/.github/workflows/_artifacts_linux.yml @@ -47,6 +47,9 @@ jobs: with: name: native-Linux path: ${{ github.workspace }}/artifacts/packages/native + - + name: Set up Docker + uses: ./.github/actions/docker-setup - name: '[Test Artifacts]' shell: pwsh diff --git a/.github/workflows/_docker.yml b/.github/workflows/_docker.yml index b0b432b735..7986ca8f58 100644 --- a/.github/workflows/_docker.yml +++ b/.github/workflows/_docker.yml @@ -43,16 +43,7 @@ jobs: path: ${{ github.workspace }}/artifacts/packages/nuget - name: Set up Docker - uses: docker/setup-docker-action@v4 - with: - daemon-config: '{ "features": { "containerd-snapshotter": true } }' - - - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v3 - with: - version: 'latest' - driver-opts: 'image=moby/buildkit:buildx-stable-1' - install: true + uses: ./.github/actions/docker-setup - name: Docker Test if: success() && github.event_name == 'pull_request' || github.repository_owner != 'GitTools' diff --git a/.github/workflows/_docker_manifests.yml b/.github/workflows/_docker_manifests.yml index 39a4045e9c..e88ae64e63 100644 --- a/.github/workflows/_docker_manifests.yml +++ b/.github/workflows/_docker_manifests.yml @@ -31,16 +31,7 @@ jobs: uses: ./.github/actions/cache-restore - name: Set up Docker - uses: docker/setup-docker-action@v4 - with: - daemon-config: '{ "features": { "containerd-snapshotter": true } }' - - - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v3 - with: - version: 'latest' - driver-opts: 'image=moby/buildkit:buildx-stable-1' - install: true + uses: ./.github/actions/docker-setup - name: Docker Manifests if: success() && github.event_name != 'pull_request' && github.repository_owner == 'GitTools' && github.ref_name == 'main' From 8b7bbdc8e01fe56d0e73daf2dae912bd0801cd9c Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 21 Jan 2025 19:59:22 +0100 Subject: [PATCH 330/544] use snake_case for output variables --- .github/actions/docker-manifests/action.yml | 12 ++++++------ .github/actions/docker-publish/action.yml | 12 ++++++------ .github/actions/docker-test/action.yml | 12 ++++++------ .github/workflows/_artifacts_linux.yml | 16 ++++++++-------- .github/workflows/_docker.yml | 18 +++++++++--------- .github/workflows/_docker_manifests.yml | 14 +++++++------- .github/workflows/_prepare.yml | 12 ++++++------ .github/workflows/_unit_tests.yml | 10 +++++----- .github/workflows/ci.yml | 14 +++++++------- build/config/Tasks/SetMatrix.cs | 4 ++-- 10 files changed, 62 insertions(+), 62 deletions(-) diff --git a/.github/actions/docker-manifests/action.yml b/.github/actions/docker-manifests/action.yml index c1df90f6b8..23de24c989 100644 --- a/.github/actions/docker-manifests/action.yml +++ b/.github/actions/docker-manifests/action.yml @@ -1,10 +1,10 @@ name: 'Docker Manifests' description: 'Docker Publish Manifests' inputs: - dockerDistro: + docker_distro: description: 'Linux Distro' required: true - dotnetVersion: + dotnet_version: description: '.net version' required: true docker_registry_username: @@ -34,8 +34,8 @@ runs: shell: pwsh run: | dotnet run/docker.dll ` - --target=DockerManifest --arch=amd64 --arch=arm64 --dotnet_version=${{ inputs.dotnetVersion }} ` - --docker_distro=${{ inputs.dockerDistro }} --docker_registry dockerhub + --target=DockerManifest --arch=amd64 --arch=arm64 --dotnet_version=${{ inputs.dotnet_version }} ` + --docker_distro=${{ inputs.docker_distro }} --docker_registry dockerhub - name: Login to GitHub uses: docker/login-action@v3 @@ -48,5 +48,5 @@ runs: shell: pwsh run: | dotnet run/docker.dll ` - --target=DockerManifest --arch=amd64 --arch=arm64 --dotnet_version=${{ inputs.dotnetVersion }} ` - --docker_distro=${{ inputs.dockerDistro }} --docker_registry github + --target=DockerManifest --arch=amd64 --arch=arm64 --dotnet_version=${{ inputs.dotnet_version }} ` + --docker_distro=${{ inputs.docker_distro }} --docker_registry github diff --git a/.github/actions/docker-publish/action.yml b/.github/actions/docker-publish/action.yml index cd14fc1df4..e5f2e05757 100644 --- a/.github/actions/docker-publish/action.yml +++ b/.github/actions/docker-publish/action.yml @@ -4,10 +4,10 @@ inputs: arch: description: 'Docker architecture' required: true - dockerDistro: + docker_distro: description: 'Linux Distro' required: true - dotnetVersion: + dotnet_version: description: '.net version' required: true docker_registry_username: @@ -37,8 +37,8 @@ runs: shell: pwsh run: | dotnet run/docker.dll ` - --target=DockerPublish --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnetVersion }} ` - --docker_distro=${{ inputs.dockerDistro }} --docker_registry dockerhub --verbosity=diagnostic + --target=DockerPublish --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnet_version }} ` + --docker_distro=${{ inputs.docker_distro }} --docker_registry dockerhub --verbosity=diagnostic - name: Login to GitHub uses: docker/login-action@v3 @@ -51,5 +51,5 @@ runs: shell: pwsh run: | dotnet run/docker.dll ` - --target=DockerPublish --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnetVersion }} ` - --docker_distro=${{ inputs.dockerDistro }} --docker_registry github --verbosity=diagnostic + --target=DockerPublish --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnet_version }} ` + --docker_distro=${{ inputs.docker_distro }} --docker_registry github --verbosity=diagnostic diff --git a/.github/actions/docker-test/action.yml b/.github/actions/docker-test/action.yml index 9ee3fc9ec7..c7a747121f 100644 --- a/.github/actions/docker-test/action.yml +++ b/.github/actions/docker-test/action.yml @@ -4,10 +4,10 @@ inputs: arch: description: 'Docker architecture' default: 'amd64' - dockerDistro: + docker_distro: description: 'Linux Distro' default: 'debian.12' - dotnetVersion: + dotnet_version: description: '.net version' default: '8.0' @@ -19,12 +19,12 @@ runs: shell: pwsh run: | dotnet run/docker.dll --target=DockerTest ` - --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnetVersion }} ` - --docker_distro=${{ inputs.dockerDistro }} --docker_registry dockerhub --verbosity=diagnostic + --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnet_version }} ` + --docker_distro=${{ inputs.docker_distro }} --docker_registry dockerhub --verbosity=diagnostic - name: '[Docker Build & Test] GitHub' shell: pwsh run: | dotnet run/docker.dll --target=DockerTest ` - --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnetVersion }} ` - --docker_distro=${{ inputs.dockerDistro }} --docker_registry github --verbosity=diagnostic + --arch=${{ inputs.arch }} --dotnet_version=${{ inputs.dotnet_version }} ` + --docker_distro=${{ inputs.docker_distro }} --docker_registry github --verbosity=diagnostic diff --git a/.github/workflows/_artifacts_linux.yml b/.github/workflows/_artifacts_linux.yml index d7ad93db09..813732178b 100644 --- a/.github/workflows/_artifacts_linux.yml +++ b/.github/workflows/_artifacts_linux.yml @@ -7,10 +7,10 @@ on: arch: required: true type: string - dockerDistros: + docker_distros: required: true type: string - dotnetVersions: + dotnet_versions: required: true type: string env: @@ -19,13 +19,13 @@ env: jobs: artifacts: - name: ${{ matrix.dockerDistro }} - net${{ matrix.dotnetVersion }} + name: ${{ matrix.docker_distro }} - net${{ matrix.dotnet_version }} runs-on: ${{ inputs.runner }} strategy: fail-fast: false - matrix: - dockerDistro: ${{ fromJson(inputs.dockerDistros) }} - dotnetVersion: ${{ fromJson(inputs.dotnetVersions) }} + matrix: + docker_distro: ${{ fromJson(inputs.docker_distros) }} + dotnet_version: ${{ fromJson(inputs.dotnet_versions) }} steps: - name: Checkout @@ -55,5 +55,5 @@ jobs: shell: pwsh run: | dotnet run/artifacts.dll ` - --target=ArtifactsTest --arch=${{ inputs.arch }} --dotnet_version=${{ matrix.dotnetVersion }} ` - --docker_distro=${{ matrix.dockerDistro }} \ No newline at end of file + --target=ArtifactsTest --arch=${{ inputs.arch }} --dotnet_version=${{ matrix.dotnet_version }} ` + --docker_distro=${{ matrix.docker_distro }} \ No newline at end of file diff --git a/.github/workflows/_docker.yml b/.github/workflows/_docker.yml index 7986ca8f58..5ca990810d 100644 --- a/.github/workflows/_docker.yml +++ b/.github/workflows/_docker.yml @@ -7,10 +7,10 @@ on: arch: required: true type: string - dockerDistros: + docker_distros: required: true type: string - dotnetVersions: + dotnet_versions: required: true type: string env: @@ -19,13 +19,13 @@ env: jobs: docker: - name: ${{ matrix.dockerDistro }} - net${{ matrix.dotnetVersion }} + name: ${{ matrix.docker_distro }} - net${{ matrix.dotnet_version }} runs-on: ${{ inputs.runner }} strategy: fail-fast: false matrix: - dockerDistro: ${{ fromJson(inputs.dockerDistros) }} - dotnetVersion: ${{ fromJson(inputs.dotnetVersions) }} + docker_distro: ${{ fromJson(inputs.docker_distros) }} + dotnet_version: ${{ fromJson(inputs.dotnet_versions) }} steps: - name: Checkout @@ -50,16 +50,16 @@ jobs: uses: ./.github/actions/docker-test with: arch: ${{ inputs.arch }} - dockerDistro: ${{ matrix.dockerDistro }} - dotnetVersion: ${{ matrix.dotnetVersion }} + docker_distro: ${{ matrix.docker_distro }} + dotnet_version: ${{ matrix.dotnet_version }} - name: Docker Publish if: success() && github.event_name != 'pull_request' && github.repository_owner == 'GitTools' && github.ref_name == 'main' uses: ./.github/actions/docker-publish with: arch: ${{ inputs.arch }} - dockerDistro: ${{ matrix.dockerDistro }} - dotnetVersion: ${{ matrix.dotnetVersion }} + docker_distro: ${{ matrix.docker_distro }} + dotnet_version: ${{ matrix.dotnet_version }} docker_registry_username: ${{ secrets.DOCKER_USERNAME }} docker_registry_password: ${{ secrets.DOCKER_PASSWORD }} github_registry_username: ${{ github.repository_owner }} diff --git a/.github/workflows/_docker_manifests.yml b/.github/workflows/_docker_manifests.yml index e88ae64e63..1212d8b4a7 100644 --- a/.github/workflows/_docker_manifests.yml +++ b/.github/workflows/_docker_manifests.yml @@ -1,10 +1,10 @@ on: workflow_call: inputs: - dockerDistros: + docker_distros: required: true type: string - dotnetVersions: + dotnet_versions: required: true type: string env: @@ -13,13 +13,13 @@ env: jobs: manifest: - name: ${{ matrix.dockerDistro }} - net${{ matrix.dotnetVersion }} + name: ${{ matrix.docker_distro }} - net${{ matrix.dotnet_version }} runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: - dockerDistro: ${{ fromJson(inputs.dockerDistros) }} - dotnetVersion: ${{ fromJson(inputs.dotnetVersions) }} + docker_distro: ${{ fromJson(inputs.docker_distros) }} + dotnet_version: ${{ fromJson(inputs.dotnet_versions) }} steps: - name: Checkout @@ -37,8 +37,8 @@ jobs: if: success() && github.event_name != 'pull_request' && github.repository_owner == 'GitTools' && github.ref_name == 'main' uses: ./.github/actions/docker-manifests with: - dockerDistro: ${{ matrix.dockerDistro }} - dotnetVersion: ${{ matrix.dotnetVersion }} + docker_distro: ${{ matrix.docker_distro }} + dotnet_version: ${{ matrix.dotnet_version }} docker_registry_username: ${{ secrets.DOCKER_USERNAME }} docker_registry_password: ${{ secrets.DOCKER_PASSWORD }} github_registry_username: ${{ github.repository_owner }} diff --git a/.github/workflows/_prepare.yml b/.github/workflows/_prepare.yml index 1ab92c7163..58c8e6b9b1 100644 --- a/.github/workflows/_prepare.yml +++ b/.github/workflows/_prepare.yml @@ -1,12 +1,12 @@ on: workflow_call: outputs: - dockerDistros: + docker_distros: description: 'List of Docker distros' - value: ${{ jobs.set_matrix.outputs.dockerDistros }} - dotnetVersions: + value: ${{ jobs.set_matrix.outputs.docker_distros }} + dotnet_versions: description: 'List of .NET versions' - value: ${{ jobs.set_matrix.outputs.dotnetVersions }} + value: ${{ jobs.set_matrix.outputs.dotnet_versions }} jobs: prepare: name: ${{ matrix.os }} @@ -51,8 +51,8 @@ jobs: name: Set Matrix runs-on: ubuntu-24.04 outputs: - dockerDistros: ${{ steps.set_matrix.outputs.dockerDistros }} - dotnetVersions: ${{ steps.set_matrix.outputs.dotnetVersions }} + docker_distros: ${{ steps.set_matrix.outputs.docker_distros }} + dotnet_versions: ${{ steps.set_matrix.outputs.dotnet_versions }} steps: - name: Checkout diff --git a/.github/workflows/_unit_tests.yml b/.github/workflows/_unit_tests.yml index f06c55a71d..7557db2398 100644 --- a/.github/workflows/_unit_tests.yml +++ b/.github/workflows/_unit_tests.yml @@ -1,7 +1,7 @@ on: workflow_call: inputs: - dotnetVersions: + dotnet_versions: required: true type: string env: @@ -10,14 +10,14 @@ env: jobs: unit_test: - name: ${{ matrix.os }} - net${{ matrix.dotnetVersion }} + name: ${{ matrix.os }} - net${{ matrix.dotnet_version }} env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} strategy: fail-fast: false matrix: os: [windows-2025, ubuntu-24.04, macos-15] - dotnetVersion: ${{ fromJson(inputs.dotnetVersions) }} + dotnet_version: ${{ fromJson(inputs.dotnet_versions) }} runs-on: ${{ matrix.os }} steps: @@ -32,11 +32,11 @@ jobs: - name: '[Unit Test]' shell: pwsh - run: dotnet run/build.dll --target=Test --dotnet_version=${{ matrix.dotnetVersion }} + run: dotnet run/build.dll --target=Test --dotnet_version=${{ matrix.dotnet_version }} - name: Test Summary uses: test-summary/action@v2.4 - if: matrix.dotnetVersion == '9.0' + if: matrix.dotnet_version == '9.0' with: paths: artifacts/test-results/*.results.xml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bfa6c9732e..4e26468265 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,7 +54,7 @@ jobs: needs: [ prepare ] uses: ./.github/workflows/_unit_tests.yml with: - dotnetVersions: ${{ needs.prepare.outputs.dotnetVersions }} + dotnet_versions: ${{ needs.prepare.outputs.dotnet_versions }} secrets: inherit artifacts_windows_test: @@ -77,8 +77,8 @@ jobs: with: runner: ${{ matrix.runner }} arch: ${{ matrix.arch }} - dockerDistros: ${{ needs.prepare.outputs.dockerDistros }} - dotnetVersions: ${{ needs.prepare.outputs.dotnetVersions }} + docker_distros: ${{ needs.prepare.outputs.docker_distros }} + dotnet_versions: ${{ needs.prepare.outputs.dotnet_versions }} docker_linux_images: needs: [ prepare, build ] @@ -96,8 +96,8 @@ jobs: with: runner: ${{ matrix.runner }} arch: ${{ matrix.arch }} - dockerDistros: ${{ needs.prepare.outputs.dockerDistros }} - dotnetVersions: ${{ needs.prepare.outputs.dotnetVersions }} + docker_distros: ${{ needs.prepare.outputs.docker_distros }} + dotnet_versions: ${{ needs.prepare.outputs.dotnet_versions }} secrets: inherit docker_linux_manifests: @@ -105,8 +105,8 @@ jobs: name: Docker Manifests uses: ./.github/workflows/_docker_manifests.yml with: - dockerDistros: ${{ needs.prepare.outputs.dockerDistros }} - dotnetVersions: ${{ needs.prepare.outputs.dotnetVersions }} + docker_distros: ${{ needs.prepare.outputs.docker_distros }} + dotnet_versions: ${{ needs.prepare.outputs.dotnet_versions }} secrets: inherit publish: diff --git a/build/config/Tasks/SetMatrix.cs b/build/config/Tasks/SetMatrix.cs index 44bd8a6c3d..666757cfa5 100644 --- a/build/config/Tasks/SetMatrix.cs +++ b/build/config/Tasks/SetMatrix.cs @@ -8,8 +8,8 @@ public override void Run(BuildContext context) { if (context.BuildSystem().IsRunningOnGitHubActions) { - context.GitHubActions().Commands.SetOutputParameter("dockerDistros", context.SerializeJson(Constants.DockerDistros)); - context.GitHubActions().Commands.SetOutputParameter("dotnetVersions", context.SerializeJson(Constants.DotnetVersions)); + context.GitHubActions().Commands.SetOutputParameter("docker_distros", context.SerializeJson(Constants.DockerDistros)); + context.GitHubActions().Commands.SetOutputParameter("dotnet_versions", context.SerializeJson(Constants.DotnetVersions)); } else { From 7b415469f218aa5b230cc731f4231394b00f6464 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Jan 2025 22:12:10 +0000 Subject: [PATCH 331/544] (docs deps): Bump undici from 6.19.8 to 6.21.1 in the npm_and_yarn group Bumps the npm_and_yarn group with 1 update: [undici](https://github.com/nodejs/undici). Updates `undici` from 6.19.8 to 6.21.1 - [Release notes](https://github.com/nodejs/undici/releases) - [Commits](https://github.com/nodejs/undici/compare/v6.19.8...v6.21.1) --- updated-dependencies: - dependency-name: undici dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7fe4034898..686831da48 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15574,10 +15574,11 @@ } }, "node_modules/undici": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", - "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", + "version": "6.21.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", + "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.17" } @@ -28440,9 +28441,9 @@ } }, "undici": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", - "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", + "version": "6.21.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", + "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", "dev": true }, "unified-args": { From 2fdcb370f647a10990b31bbeac47f7be85c18d69 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Jan 2025 16:00:57 +0000 Subject: [PATCH 332/544] (deps): Bump System.CommandLine Bumps the microsoft group with 1 update in the /new-cli directory: [System.CommandLine](https://github.com/dotnet/command-line-api). Updates `System.CommandLine` from 2.0.0-beta4.24528.1 to 2.0.0-beta4.25071.2 - [Release notes](https://github.com/dotnet/command-line-api/releases) - [Changelog](https://github.com/dotnet/command-line-api/blob/main/docs/History.md) - [Commits](https://github.com/dotnet/command-line-api/commits) --- updated-dependencies: - dependency-name: System.CommandLine dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 33569b2740..aef8122b03 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -20,7 +20,7 @@ - + \ No newline at end of file From 152f84c8218d345f58219674b97316f53b8801eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Jan 2025 15:50:02 +0000 Subject: [PATCH 333/544] (deps): Bump Shouldly from 4.2.1 to 4.3.0 in /src Bumps [Shouldly](https://github.com/shouldly/shouldly) from 4.2.1 to 4.3.0. - [Release notes](https://github.com/shouldly/shouldly/releases) - [Changelog](https://github.com/shouldly/shouldly/blob/master/BREAKING%20CHANGES.txt) - [Commits](https://github.com/shouldly/shouldly/compare/4.2.1...4.3.0) --- updated-dependencies: - dependency-name: Shouldly dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 28eb2abce4..2f928a5e6b 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -35,7 +35,7 @@ - + From d3db023055e7ba77a7494019080f230bb2ba51ef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 09:04:07 +0000 Subject: [PATCH 334/544] (deps): Bump System.CommandLine (#4392) Bumps the microsoft group with 1 update in the /new-cli directory: [System.CommandLine](https://github.com/dotnet/command-line-api). Updates `System.CommandLine` from 2.0.0-beta4.25071.2 to 2.0.0-beta4.25072.1 - [Release notes](https://github.com/dotnet/command-line-api/releases) - [Changelog](https://github.com/dotnet/command-line-api/blob/main/docs/History.md) - [Commits](https://github.com/dotnet/command-line-api/commits) --- updated-dependencies: - dependency-name: System.CommandLine dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- new-cli/Directory.Packages.props | 2 +- new-cli/GitVersion.Cli.Generator/Content.cs | 14 +++++++------- new-cli/GitVersion.Cli/GitVersionApp.cs | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index aef8122b03..f6442ac986 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/new-cli/GitVersion.Cli.Generator/Content.cs b/new-cli/GitVersion.Cli.Generator/Content.cs index f3a2484a68..edde296b9f 100644 --- a/new-cli/GitVersion.Cli.Generator/Content.cs +++ b/new-cli/GitVersion.Cli.Generator/Content.cs @@ -27,7 +27,7 @@ public static class Content namespace {{Namespace}}; -public class {{Model.CommandTypeName}}Impl : CliCommand, ICommandImpl +public class {{Model.CommandTypeName}}Impl : Command, ICommandImpl { public string CommandName => nameof({{Model.CommandTypeName}}Impl); {{- if (Model.ParentCommand | string.empty) }} @@ -38,14 +38,14 @@ public class {{Model.CommandTypeName}}Impl : CliCommand, ICommandImpl {{- $settingsProperties = Model.SettingsProperties | array.sort "Name" }} // Options list {{~ for $prop in $settingsProperties ~}} - protected readonly CliOption<{{$prop.TypeName}}> {{$prop.Name}}Option; + protected readonly Option<{{$prop.TypeName}}> {{$prop.Name}}Option; {{~ end ~}} public {{Model.CommandTypeName}}Impl({{Model.CommandTypeName}} command) : base("{{Model.CommandName}}", "{{Model.CommandDescription}}") { {{~ for $prop in $settingsProperties ~}} - {{$prop.Name}}Option = new CliOption<{{$prop.TypeName}}>("{{$prop.OptionName}}", [{{$prop.Aliases}}]) + {{$prop.Name}}Option = new Option<{{$prop.TypeName}}>("{{$prop.OptionName}}", [{{$prop.Aliases}}]) { Required = {{$prop.Required}}, Description = "{{$prop.Description}}", @@ -80,7 +80,7 @@ Task Run(ParseResult parseResult, CancellationToken cancellationToken) using {{InfraNamespaceName}}; namespace {{Namespace}}; -public class RootCommandImpl : CliRootCommand +public class RootCommandImpl : RootCommand { public RootCommandImpl(IEnumerable commands) { @@ -94,12 +94,12 @@ private void AddCommand(ICommandImpl command, IDictionary { if (!string.IsNullOrWhiteSpace(command.ParentCommandName)) { - var parent = map[command.ParentCommandName] as CliCommand; - parent?.Add((CliCommand)command); + var parent = map[command.ParentCommandName] as Command; + parent?.Add((Command)command); } else { - Add((CliCommand)command); + Add((Command)command); } } } diff --git a/new-cli/GitVersion.Cli/GitVersionApp.cs b/new-cli/GitVersion.Cli/GitVersionApp.cs index d873b38bcd..7c9d1854d1 100644 --- a/new-cli/GitVersion.Cli/GitVersionApp.cs +++ b/new-cli/GitVersion.Cli/GitVersionApp.cs @@ -13,7 +13,7 @@ internal class GitVersionApp(RootCommandImpl rootCommand) public Task RunAsync(string[] args, CancellationToken cancellationToken) { - var cliConfiguration = new CliConfiguration(rootCommand); + var cliConfiguration = new CommandLineConfiguration(rootCommand); var parseResult = cliConfiguration.Parse(args); var logFile = parseResult.GetValue(GitVersionSettings.LogFileOption); From ca38e922a7f5ee8684bf9560a0818709530e5555 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Jan 2025 16:17:53 +0000 Subject: [PATCH 335/544] (deps): Bump the analyzers group across 2 directories with 2 updates Bumps the analyzers group with 2 updates in the /new-cli directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Bumps the analyzers group with 2 updates in the /src directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Updates `Roslynator.Analyzers` from 4.12.10 to 4.12.11 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.10...v4.12.11) Updates `Roslynator.Formatting.Analyzers` from 4.12.10 to 4.12.11 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.10...v4.12.11) Updates `Roslynator.Analyzers` from 4.12.10 to 4.12.11 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.10...v4.12.11) Updates `Roslynator.Formatting.Analyzers` from 4.12.10 to 4.12.11 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.10...v4.12.11) --- updated-dependencies: - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 4 ++-- src/Directory.Packages.props | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index f6442ac986..0498da41e5 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -12,8 +12,8 @@ - - + + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 2f928a5e6b..69f15bafea 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -15,8 +15,8 @@ - - + + From 095d06160ef4d17cdddb7222686af6f8cc47ecec Mon Sep 17 00:00:00 2001 From: Bi0T1N Date: Fri, 31 Jan 2025 21:49:12 +0100 Subject: [PATCH 336/544] Avoid building git from source for devcontainer use git version from OS to avoid compiling newest version from source -> saves quite some time --- .devcontainer/devcontainer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index d2569415e2..c8de2ac6d0 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -15,7 +15,7 @@ "upgradePackages": "true" }, "ghcr.io/devcontainers/features/git:1": { - "version": "latest", + "version": "os-provided", "ppa": "false" }, "ghcr.io/devcontainers/features/powershell:1": { From 81f282db4ef69d47a7d41ac15da26e7699417c2e Mon Sep 17 00:00:00 2001 From: Bi0T1N Date: Fri, 31 Jan 2025 21:52:49 +0100 Subject: [PATCH 337/544] Fix building project in devcontainer the SDK version is defined as v9.0 in global.json and hence it shows that NET 9.0 is missing in the dotnet v8.0 container compiling and running the tests works now: dotnet test --framework net9.0 src/ --- .devcontainer/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index d71522864b..df058170ac 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/devcontainers/dotnet:dev-8.0 +FROM mcr.microsoft.com/devcontainers/dotnet:dev-9.0 # [Optional] Uncomment this section to install additional OS packages. # RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ From 5145ee5533bd74bb2c23077578ef278177fe7e16 Mon Sep 17 00:00:00 2001 From: AlphaYankee <54741936+AlphaYankee@users.noreply.github.com> Date: Thu, 29 Aug 2024 23:53:18 +0200 Subject: [PATCH 338/544] Do not return the tag as branch name for GitLab CI In case of a tag pipeline, return null as branch name instead of the tag --- src/GitVersion.BuildAgents/Agents/GitLabCi.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/GitVersion.BuildAgents/Agents/GitLabCi.cs b/src/GitVersion.BuildAgents/Agents/GitLabCi.cs index 0956084ab7..23c0e912a1 100644 --- a/src/GitVersion.BuildAgents/Agents/GitLabCi.cs +++ b/src/GitVersion.BuildAgents/Agents/GitLabCi.cs @@ -21,7 +21,18 @@ public override string[] GenerateSetParameterMessage(string name, string? value) $"GitVersion_{name}={value}" ]; - public override string? GetCurrentBranch(bool usingDynamicRepos) => Environment.GetEnvironmentVariable("CI_COMMIT_REF_NAME"); + public override string? GetCurrentBranch(bool usingDynamicRepos) + { + // CI_COMMIT_REF_NAME can contain either the branch or the tag + // See https://docs.gitlab.com/ee/ci/variables/predefined_variables.html + + // CI_COMMIT_TAG is only available in tag pipelines, + // so we can exit if CI_COMMIT_REF_NAME would return the tag + if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("CI_COMMIT_TAG"))) + return null; + + return Environment.GetEnvironmentVariable("CI_COMMIT_REF_NAME"); + } public override bool PreventFetch() => true; From 805058438d6848ce7ced779768498d99e91d23d3 Mon Sep 17 00:00:00 2001 From: Bi0T1N Date: Fri, 31 Jan 2025 21:25:51 +0100 Subject: [PATCH 339/544] Add tests for GitLab CI to ignore branch name for tags --- .../Agents/GitLabCiTests.cs | 57 ++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/src/GitVersion.BuildAgents.Tests/Agents/GitLabCiTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/GitLabCiTests.cs index aa1e2ec6b0..2e5eba6ea1 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/GitLabCiTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/GitLabCiTests.cs @@ -9,16 +9,22 @@ namespace GitVersion.Agents.Tests; [TestFixture] public class GitLabCiTests : TestBase { - private GitLabCi buildServer; private IServiceProvider sp; + private GitLabCi buildServer; + private IEnvironment environment; [SetUp] public void SetUp() { this.sp = ConfigureServices(services => services.AddSingleton()); this.buildServer = this.sp.GetRequiredService(); + this.environment = this.sp.GetRequiredService(); + this.environment.SetEnvironmentVariable(GitLabCi.EnvironmentVariableName, "true"); } + [TearDown] + public void TearDown() => this.environment.SetEnvironmentVariable(GitLabCi.EnvironmentVariableName, null); + [Test] public void GenerateSetVersionMessageReturnsVersionAsIsAlthoughThisIsNotUsedByJenkins() { @@ -34,6 +40,55 @@ public void GenerateMessageTest() generatedParameterMessages[0].ShouldBe("GitVersion_name=value"); } + [TestCase("main", "main")] + [TestCase("dev", "dev")] + [TestCase("development", "development")] + [TestCase("my_cool_feature", "my_cool_feature")] + [TestCase("#3-change_projectname", "#3-change_projectname")] + public void GetCurrentBranchShouldHandleBranches(string branchName, string expectedResult) + { + this.environment.SetEnvironmentVariable("CI_COMMIT_REF_NAME", branchName); + + var result = this.buildServer.GetCurrentBranch(false); + + result.ShouldBe(expectedResult); + } + + [TestCase("main", "", "main")] + [TestCase("v1.0.0", "v1.0.0", null)] + [TestCase("development", "", "development")] + [TestCase("v1.2.1", "v1.2.1", null)] + public void GetCurrentBranchShouldHandleTags(string branchName, string commitTag, string? expectedResult) + { + this.environment.SetEnvironmentVariable("CI_COMMIT_REF_NAME", branchName); + this.environment.SetEnvironmentVariable("CI_COMMIT_TAG", commitTag); // only set in pipelines for tags + + var result = this.buildServer.GetCurrentBranch(false); + + if (!string.IsNullOrEmpty(expectedResult)) + { + result.ShouldBe(expectedResult); + } + else + { + result.ShouldBeNull(); + } + } + + [TestCase("main", "main")] + [TestCase("dev", "dev")] + [TestCase("development", "development")] + [TestCase("my_cool_feature", "my_cool_feature")] + [TestCase("#3-change_projectname", "#3-change_projectname")] + public void GetCurrentBranchShouldHandlePullRequests(string branchName, string expectedResult) + { + this.environment.SetEnvironmentVariable("CI_COMMIT_REF_NAME", branchName); + + var result = this.buildServer.GetCurrentBranch(false); + + result.ShouldBe(expectedResult); + } + [Test] public void WriteAllVariablesToTheTextWriter() { From f7919ad0b4727eefef4188fea704fcc2c4fb409f Mon Sep 17 00:00:00 2001 From: HHobeck Date: Sat, 18 Jan 2025 12:16:15 +0100 Subject: [PATCH 340/544] branch regex is matched against {EscapedBranchName} not {BranchName} +semver minor --- BREAKING_CHANGES.md | 6 +- docs/input/docs/reference/configuration.md | 70 ++++++------------- docs/input/docs/workflows/GitFlow/v1.yml | 15 ++-- docs/input/docs/workflows/GitHubFlow/v1.yml | 11 ++- .../docs/workflows/TrunkBased/preview1.yml | 11 ++- .../ConfigurationExtensionsTests.cs | 4 +- ...riteOutEffectiveConfiguration.approved.txt | 13 ++-- .../ConfigurationProviderTests.cs | 8 +-- .../Workflows/approved/GitFlow/v1.yml | 15 ++-- .../Workflows/approved/GitHubFlow/v1.yml | 11 ++- .../approved/TrunkBased/preview1.yml | 11 ++- .../BranchConfiguration.cs | 9 --- .../Builders/BranchConfigurationBuilder.cs | 9 --- .../Builders/ConfigurationBuilderBase.cs | 9 --- .../Builders/GitFlowConfigurationBuilder.cs | 3 +- .../GitHubFlowConfigurationBuilder.cs | 3 +- .../TrunkBasedConfigurationBuilder.cs | 3 +- .../IntegrationTests/DevelopScenarios.cs | 2 +- .../FeatureBranchScenarios.cs | 11 +-- .../MainlineDevelopmentScenarios.cs | 2 +- ...EffectiveBranchConfigurationFinderTests.cs | 2 +- .../NextVersionCalculatorTests.cs | 4 +- .../Configuration/ConfigurationConstants.cs | 1 + .../Configuration/EffectiveConfiguration.cs | 3 - .../Configuration/IBranchConfiguration.cs | 2 - src/GitVersion.Core/Core/RegexPatterns.cs | 15 ++-- .../Extensions/ConfigurationExtensions.cs | 31 ++++---- src/GitVersion.Core/PublicAPI.Shipped.txt | 2 - 28 files changed, 105 insertions(+), 181 deletions(-) diff --git a/BREAKING_CHANGES.md b/BREAKING_CHANGES.md index 93e2285091..39f064160d 100644 --- a/BREAKING_CHANGES.md +++ b/BREAKING_CHANGES.md @@ -1,3 +1,7 @@ +## v6.1.0 + +* The configuration property `label-number-pattern` was removed. The functionality can be still used by changing the label and the branch name regular expression for pull-request branches. + ## v6.0.0 ### Platforms @@ -60,7 +64,7 @@ * The `useBranchName` magic string has been removed. Instead use `{BranchName}` for `label`. * The `BranchPrefixToTrim` configuration property has been removed. `RegularExpression` is now used to capture named groups instead. - * Default `RegularExpression` for feature branches is changed from `^features?[/-]` to `^features?[/-](?.+)` to support using `{BranchName}` out-of-the-box + * Default `RegularExpression` for feature branches is changed from `^features?[\/-]` to `^features?[\/-](?.+)` to support using `{BranchName}` out-of-the-box * Default `RegularExpression` for unknown branches is changed from `.*` to `(?.+)` to support using `{BranchName}` out-of-the-box * The `Mainline` mode and the related implementation has been removed completely. The new `Mainline` version strategy should be used instead. diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index 9f7354f2ce..9dda482e2e 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -100,7 +100,7 @@ branches: of-merged-branch: true when-current-commit-tagged: false track-merge-target: false - regex: ^releases?[/-](?.+) + regex: ^releases?[\/-](?.+) source-branches: - main - support @@ -116,7 +116,7 @@ branches: prevent-increment: when-current-commit-tagged: false track-merge-message: true - regex: ^features?[/-](?.+) + regex: ^features?[\/-](?.+) source-branches: - develop - main @@ -128,14 +128,13 @@ branches: pre-release-weight: 30000 pull-request: mode: ContinuousDelivery - label: PullRequest + label: PullRequest{Number} increment: Inherit prevent-increment: of-merged-branch: true when-current-commit-tagged: false - label-number-pattern: '[/-](?\d+)' track-merge-message: true - regex: ^(pull|pull\-requests|pr)[/-] + regex: ^(pull-requests|pull|pr)[\/-](?\d*) source-branches: - develop - main @@ -151,7 +150,7 @@ branches: increment: Inherit prevent-increment: when-current-commit-tagged: false - regex: ^hotfix(es)?[/-](?.+) + regex: ^hotfix(es)?[\/-](?.+) source-branches: - main - support @@ -165,7 +164,7 @@ branches: prevent-increment: of-merged-branch: true track-merge-target: false - regex: ^support[/-](?.+) + regex: ^support[\/-](?.+) source-branches: - main is-source-branch-for: [] @@ -262,7 +261,7 @@ branches: when-current-commit-tagged: false track-merge-target: false track-merge-message: true - regex: ^releases?[/-](?.+) + regex: ^releases?[\/-](?.+) source-branches: - main is-source-branch-for: [] @@ -277,7 +276,7 @@ branches: prevent-increment: when-current-commit-tagged: false track-merge-message: true - regex: ^features?[/-](?.+) + regex: ^features?[\/-](?.+) source-branches: - main - release @@ -286,14 +285,13 @@ branches: pre-release-weight: 30000 pull-request: mode: ContinuousDelivery - label: PullRequest + label: PullRequest{Number} increment: Inherit prevent-increment: of-merged-branch: true when-current-commit-tagged: false - label-number-pattern: '[/-](?\d+)' track-merge-message: true - regex: ^(pull|pull\-requests|pr)[/-] + regex: ^(pull-requests|pull|pr)[\/-](?\d*) source-branches: - main - release @@ -381,7 +379,7 @@ branches: prevent-increment: when-current-commit-tagged: false track-merge-message: true - regex: ^features?[/-](?.+) + regex: ^features?[\/-](?.+) source-branches: - main is-source-branch-for: [] @@ -393,7 +391,7 @@ branches: increment: Patch prevent-increment: when-current-commit-tagged: false - regex: ^hotfix(es)?[/-](?.+) + regex: ^hotfix(es)?[\/-](?.+) source-branches: - main is-source-branch-for: [] @@ -402,14 +400,13 @@ branches: pre-release-weight: 30000 pull-request: mode: ContinuousDelivery - label: PullRequest + label: PullRequest{Number} increment: Inherit prevent-increment: of-merged-branch: true when-current-commit-tagged: false - label-number-pattern: '[/-](?\d+)' track-merge-message: true - regex: ^(pull|pull\-requests|pr)[/-] + regex: ^(pull-requests|pull|pr)[\/-](?\d*) source-branches: - main - feature @@ -690,7 +687,7 @@ branches: is-main-branch: false pre-release-weight: 0 release: - regex: ^releases?[/-] + regex: ^releases?[\/-] mode: ContinuousDelivery label: beta increment: None @@ -702,29 +699,28 @@ branches: is-main-branch: false pre-release-weight: 30000 feature: - regex: ^features?[/-] + regex: ^features?[\/-] mode: ContinuousDelivery label: '{BranchName}' increment: Inherit source-branches: [ 'develop', 'main', 'release', 'feature', 'support', 'hotfix' ] pre-release-weight: 30000 pull-request: - regex: ^(pull|pull\-requests|pr)[/-] + regex: ^(pull-requests|pull|pr)[\/-] mode: ContinuousDelivery label: PullRequest increment: Inherit - label-number-pattern: '[/-](?\d+)[-/]' source-branches: [ 'develop', 'main', 'release', 'feature', 'support', 'hotfix' ] pre-release-weight: 30000 hotfix: - regex: ^hotfix(es)?[/-] + regex: ^hotfix(es)?[\/-] mode: ContinuousDelivery label: beta increment: Inherit source-branches: [ 'release', 'main', 'support', 'hotfix' ] pre-release-weight: 30000 support: - regex: ^support[/-] + regex: ^support[\/-] mode: ContinuousDelivery label: '' increment: Patch @@ -840,9 +836,9 @@ The pre-release label to use for this branch. Use the value `{BranchName}` as a insert the value of the named group `BranchName` from the [regular expression](#regex). For example: branch `feature/foo` would become a pre-release label -of `alpha.foo` with `label: 'alpha.{BranchName}'` and `regex: '^features?[/-](?.+)'`. +of `alpha.foo` with `label: 'alpha.{BranchName}'` and `regex: '^features?[\/-](?.+)'`. -Another example: branch `features/sc-12345/some-description` would become a pre-release label of `sc-12345` with `label: '{StoryNo}'` and `regex: '^features?[/-](?sc-\d+)[-/].+'`. +Another example: branch `features/sc-12345/some-description` would become a pre-release label of `sc-12345` with `label: '{StoryNo}'` and `regex: '^features?[\/-](?sc-\d+)[-/].+'`. **Note:** To clear a default use an empty string: `label: ''` @@ -871,30 +867,6 @@ The increment of the merged branch will be ignored when this branch related prop This branch related property controls the behvior whether to use the tagged (value set to true) or the incremented (value set to false) semantic version. Defaults to true. -### label-number-pattern - -Pull requests require us to extract the pre-release number out of the branch -name so `refs/pulls/534/merge` builds as `PullRequest.534`. This is a regex with -a named capture group called `number`. - -If the branch `mode` is set to `ContinuousDeployment`, then the extracted -`number` is appended to the name of the pre-release label and the number portion -is the number of commits since the last label. This enables consecutive commits to -the pull request branch to generate unique full semantic version numbers when -the branch is configured to use ContinuousDeployment mode. - -**Example usage:** - -```yaml -branches: - pull-request: - mode: ContinuousDeployment - label: PullRequest - increment: Inherit - track-merge-target: true - label-number-pattern: '[/-](?\d+)[-/]' -``` - ### track-merge-target Strategy which will look for tagged merge commits directly off the current diff --git a/docs/input/docs/workflows/GitFlow/v1.yml b/docs/input/docs/workflows/GitFlow/v1.yml index 3eaec755f8..114ecf8e4f 100644 --- a/docs/input/docs/workflows/GitFlow/v1.yml +++ b/docs/input/docs/workflows/GitFlow/v1.yml @@ -1,4 +1,4 @@ -assembly-versioning-scheme: MajorMinorPatch +assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* @@ -57,7 +57,7 @@ branches: of-merged-branch: true when-current-commit-tagged: false track-merge-target: false - regex: ^releases?[/-](?.+) + regex: ^releases?[\/-](?.+) source-branches: - main - support @@ -73,7 +73,7 @@ branches: prevent-increment: when-current-commit-tagged: false track-merge-message: true - regex: ^features?[/-](?.+) + regex: ^features?[\/-](?.+) source-branches: - develop - main @@ -85,14 +85,13 @@ branches: pre-release-weight: 30000 pull-request: mode: ContinuousDelivery - label: PullRequest + label: PullRequest{Number} increment: Inherit prevent-increment: of-merged-branch: true when-current-commit-tagged: false - label-number-pattern: '[/-](?\d+)' track-merge-message: true - regex: ^(pull|pull\-requests|pr)[/-] + regex: ^(pull-requests|pull|pr)[\/-](?\d*) source-branches: - develop - main @@ -108,7 +107,7 @@ branches: increment: Inherit prevent-increment: when-current-commit-tagged: false - regex: ^hotfix(es)?[/-](?.+) + regex: ^hotfix(es)?[\/-](?.+) source-branches: - main - support @@ -122,7 +121,7 @@ branches: prevent-increment: of-merged-branch: true track-merge-target: false - regex: ^support[/-](?.+) + regex: ^support[\/-](?.+) source-branches: - main is-source-branch-for: [] diff --git a/docs/input/docs/workflows/GitHubFlow/v1.yml b/docs/input/docs/workflows/GitHubFlow/v1.yml index 0943cd01fa..bc0452231a 100644 --- a/docs/input/docs/workflows/GitHubFlow/v1.yml +++ b/docs/input/docs/workflows/GitHubFlow/v1.yml @@ -1,4 +1,4 @@ -assembly-versioning-scheme: MajorMinorPatch +assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* @@ -43,7 +43,7 @@ branches: when-current-commit-tagged: false track-merge-target: false track-merge-message: true - regex: ^releases?[/-](?.+) + regex: ^releases?[\/-](?.+) source-branches: - main is-source-branch-for: [] @@ -58,7 +58,7 @@ branches: prevent-increment: when-current-commit-tagged: false track-merge-message: true - regex: ^features?[/-](?.+) + regex: ^features?[\/-](?.+) source-branches: - main - release @@ -67,14 +67,13 @@ branches: pre-release-weight: 30000 pull-request: mode: ContinuousDelivery - label: PullRequest + label: PullRequest{Number} increment: Inherit prevent-increment: of-merged-branch: true when-current-commit-tagged: false - label-number-pattern: '[/-](?\d+)' track-merge-message: true - regex: ^(pull|pull\-requests|pr)[/-] + regex: ^(pull-requests|pull|pr)[\/-](?\d*) source-branches: - main - release diff --git a/docs/input/docs/workflows/TrunkBased/preview1.yml b/docs/input/docs/workflows/TrunkBased/preview1.yml index 9bfb28dae6..83d231527f 100644 --- a/docs/input/docs/workflows/TrunkBased/preview1.yml +++ b/docs/input/docs/workflows/TrunkBased/preview1.yml @@ -1,4 +1,4 @@ -assembly-versioning-scheme: MajorMinorPatch +assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* @@ -37,7 +37,7 @@ branches: prevent-increment: when-current-commit-tagged: false track-merge-message: true - regex: ^features?[/-](?.+) + regex: ^features?[\/-](?.+) source-branches: - main is-source-branch-for: [] @@ -49,7 +49,7 @@ branches: increment: Patch prevent-increment: when-current-commit-tagged: false - regex: ^hotfix(es)?[/-](?.+) + regex: ^hotfix(es)?[\/-](?.+) source-branches: - main is-source-branch-for: [] @@ -58,14 +58,13 @@ branches: pre-release-weight: 30000 pull-request: mode: ContinuousDelivery - label: PullRequest + label: PullRequest{Number} increment: Inherit prevent-increment: of-merged-branch: true when-current-commit-tagged: false - label-number-pattern: '[/-](?\d+)' track-merge-message: true - regex: ^(pull|pull\-requests|pr)[/-] + regex: ^(pull-requests|pull|pr)[\/-](?\d*) source-branches: - main - feature diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationExtensionsTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationExtensionsTests.cs index 4edbae0b4e..97e225f752 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationExtensionsTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationExtensionsTests.cs @@ -40,8 +40,8 @@ public void EnsureIsReleaseBranchWithReferenceNameWorksAsExpected(string branchN isReleaseBranch.ShouldBe(expectedIsReleaseBranch); } - [TestCase("feature/sc-1000/Description", "^features?[/-](?.+)", "{BranchName}", "sc-1000-Description")] - [TestCase("feature/sc-1000/Description", "^features?[/-](?sc-\\d+)[-/].+", "{StoryNo}", "sc-1000")] + [TestCase("feature/sc-1000/Description", @"^features?[\/-](?.+)", "{BranchName}", "sc-1000-Description")] + [TestCase("feature/sc-1000/Description", @"^features?[\/-](?sc-\d+)[-\/].+", "{StoryNo}", "sc-1000")] public void EnsureGetBranchSpecificLabelWorksAsExpected(string branchName, string regularExpression, string label, string expectedLabel) { var configuration = GitFlowConfigurationBuilder.New diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt index e3bd60b3bf..114ecf8e4f 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.CanWriteOutEffectiveConfiguration.approved.txt @@ -57,7 +57,7 @@ branches: of-merged-branch: true when-current-commit-tagged: false track-merge-target: false - regex: ^releases?[/-](?.+) + regex: ^releases?[\/-](?.+) source-branches: - main - support @@ -73,7 +73,7 @@ branches: prevent-increment: when-current-commit-tagged: false track-merge-message: true - regex: ^features?[/-](?.+) + regex: ^features?[\/-](?.+) source-branches: - develop - main @@ -85,14 +85,13 @@ branches: pre-release-weight: 30000 pull-request: mode: ContinuousDelivery - label: PullRequest + label: PullRequest{Number} increment: Inherit prevent-increment: of-merged-branch: true when-current-commit-tagged: false - label-number-pattern: '[/-](?\d+)' track-merge-message: true - regex: ^(pull|pull\-requests|pr)[/-] + regex: ^(pull-requests|pull|pr)[\/-](?\d*) source-branches: - develop - main @@ -108,7 +107,7 @@ branches: increment: Inherit prevent-increment: when-current-commit-tagged: false - regex: ^hotfix(es)?[/-](?.+) + regex: ^hotfix(es)?[\/-](?.+) source-branches: - main - support @@ -122,7 +121,7 @@ branches: prevent-increment: of-merged-branch: true track-merge-target: false - regex: ^support[/-](?.+) + regex: ^support[\/-](?.+) source-branches: - main is-source-branch-for: [] diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs index f693649640..ca721c3a18 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs @@ -103,7 +103,7 @@ public void SourceBranchesValidationShouldFailWhenMatchingBranchConfigurationIsM const string text = @" branches: bug: - regex: 'bug[/-]' + regex: 'bug[\/-]' label: bugfix source-branches: [notconfigured]"; using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); @@ -120,7 +120,7 @@ public void SourceBranchesValidationShouldSucceedForWellKnownBranches(string wel var text = $@" branches: bug: - regex: 'bug[/-]' + regex: 'bug[\/-]' label: bugfix source-branches: [{wellKnownBranchKey}]"; using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); @@ -136,13 +136,13 @@ public void CanProvideConfigForNewBranch() next-version: 2.0.0 branches: bug: - regex: 'bug[/-]' + regex: 'bug[\/-]' label: bugfix source-branches: []"; using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text); var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath); - configuration.Branches["bug"].RegularExpression.ShouldBe("bug[/-]"); + configuration.Branches["bug"].RegularExpression.ShouldBe(@"bug[\/-]"); configuration.Branches["bug"].Label.ShouldBe("bugfix"); } diff --git a/src/GitVersion.Configuration.Tests/Workflows/approved/GitFlow/v1.yml b/src/GitVersion.Configuration.Tests/Workflows/approved/GitFlow/v1.yml index 3eaec755f8..114ecf8e4f 100644 --- a/src/GitVersion.Configuration.Tests/Workflows/approved/GitFlow/v1.yml +++ b/src/GitVersion.Configuration.Tests/Workflows/approved/GitFlow/v1.yml @@ -1,4 +1,4 @@ -assembly-versioning-scheme: MajorMinorPatch +assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* @@ -57,7 +57,7 @@ branches: of-merged-branch: true when-current-commit-tagged: false track-merge-target: false - regex: ^releases?[/-](?.+) + regex: ^releases?[\/-](?.+) source-branches: - main - support @@ -73,7 +73,7 @@ branches: prevent-increment: when-current-commit-tagged: false track-merge-message: true - regex: ^features?[/-](?.+) + regex: ^features?[\/-](?.+) source-branches: - develop - main @@ -85,14 +85,13 @@ branches: pre-release-weight: 30000 pull-request: mode: ContinuousDelivery - label: PullRequest + label: PullRequest{Number} increment: Inherit prevent-increment: of-merged-branch: true when-current-commit-tagged: false - label-number-pattern: '[/-](?\d+)' track-merge-message: true - regex: ^(pull|pull\-requests|pr)[/-] + regex: ^(pull-requests|pull|pr)[\/-](?\d*) source-branches: - develop - main @@ -108,7 +107,7 @@ branches: increment: Inherit prevent-increment: when-current-commit-tagged: false - regex: ^hotfix(es)?[/-](?.+) + regex: ^hotfix(es)?[\/-](?.+) source-branches: - main - support @@ -122,7 +121,7 @@ branches: prevent-increment: of-merged-branch: true track-merge-target: false - regex: ^support[/-](?.+) + regex: ^support[\/-](?.+) source-branches: - main is-source-branch-for: [] diff --git a/src/GitVersion.Configuration.Tests/Workflows/approved/GitHubFlow/v1.yml b/src/GitVersion.Configuration.Tests/Workflows/approved/GitHubFlow/v1.yml index 0943cd01fa..bc0452231a 100644 --- a/src/GitVersion.Configuration.Tests/Workflows/approved/GitHubFlow/v1.yml +++ b/src/GitVersion.Configuration.Tests/Workflows/approved/GitHubFlow/v1.yml @@ -1,4 +1,4 @@ -assembly-versioning-scheme: MajorMinorPatch +assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* @@ -43,7 +43,7 @@ branches: when-current-commit-tagged: false track-merge-target: false track-merge-message: true - regex: ^releases?[/-](?.+) + regex: ^releases?[\/-](?.+) source-branches: - main is-source-branch-for: [] @@ -58,7 +58,7 @@ branches: prevent-increment: when-current-commit-tagged: false track-merge-message: true - regex: ^features?[/-](?.+) + regex: ^features?[\/-](?.+) source-branches: - main - release @@ -67,14 +67,13 @@ branches: pre-release-weight: 30000 pull-request: mode: ContinuousDelivery - label: PullRequest + label: PullRequest{Number} increment: Inherit prevent-increment: of-merged-branch: true when-current-commit-tagged: false - label-number-pattern: '[/-](?\d+)' track-merge-message: true - regex: ^(pull|pull\-requests|pr)[/-] + regex: ^(pull-requests|pull|pr)[\/-](?\d*) source-branches: - main - release diff --git a/src/GitVersion.Configuration.Tests/Workflows/approved/TrunkBased/preview1.yml b/src/GitVersion.Configuration.Tests/Workflows/approved/TrunkBased/preview1.yml index 9bfb28dae6..83d231527f 100644 --- a/src/GitVersion.Configuration.Tests/Workflows/approved/TrunkBased/preview1.yml +++ b/src/GitVersion.Configuration.Tests/Workflows/approved/TrunkBased/preview1.yml @@ -1,4 +1,4 @@ -assembly-versioning-scheme: MajorMinorPatch +assembly-versioning-scheme: MajorMinorPatch assembly-file-versioning-scheme: MajorMinorPatch tag-prefix: '[vV]?' version-in-branch-pattern: (?[vV]?\d+(\.\d+)?(\.\d+)?).* @@ -37,7 +37,7 @@ branches: prevent-increment: when-current-commit-tagged: false track-merge-message: true - regex: ^features?[/-](?.+) + regex: ^features?[\/-](?.+) source-branches: - main is-source-branch-for: [] @@ -49,7 +49,7 @@ branches: increment: Patch prevent-increment: when-current-commit-tagged: false - regex: ^hotfix(es)?[/-](?.+) + regex: ^hotfix(es)?[\/-](?.+) source-branches: - main is-source-branch-for: [] @@ -58,14 +58,13 @@ branches: pre-release-weight: 30000 pull-request: mode: ContinuousDelivery - label: PullRequest + label: PullRequest{Number} increment: Inherit prevent-increment: of-merged-branch: true when-current-commit-tagged: false - label-number-pattern: '[/-](?\d+)' track-merge-message: true - regex: ^(pull|pull\-requests|pr)[/-] + regex: ^(pull-requests|pull|pr)[\/-](?\d*) source-branches: - main - feature diff --git a/src/GitVersion.Configuration/BranchConfiguration.cs b/src/GitVersion.Configuration/BranchConfiguration.cs index 5f8cbd07bf..06317c999a 100644 --- a/src/GitVersion.Configuration/BranchConfiguration.cs +++ b/src/GitVersion.Configuration/BranchConfiguration.cs @@ -1,5 +1,4 @@ using GitVersion.Configuration.Attributes; -using GitVersion.Core; using GitVersion.Extensions; using GitVersion.VersionCalculation; @@ -26,12 +25,6 @@ internal record BranchConfiguration : IBranchConfiguration [JsonPropertyDescription("The prevent increment configuration section.")] public PreventIncrementConfiguration PreventIncrement { get; internal set; } = new(); - [JsonPropertyName("label-number-pattern")] - [JsonPropertyDescription($"The regular expression pattern to use to extract the number from the branch name. Defaults to '{RegexPatterns.Configuration.DefaultLabelNumberPattern}'.")] - [JsonPropertyDefault(RegexPatterns.Configuration.DefaultLabelNumberPattern)] - [JsonPropertyFormat(Format.Regex)] - public string? LabelNumberPattern { get; internal set; } - [JsonPropertyName("track-merge-target")] [JsonPropertyDescription("Strategy which will look for tagged merge commits directly off the current branch.")] public bool? TrackMergeTarget { get; internal set; } @@ -97,7 +90,6 @@ public virtual IBranchConfiguration Inherit(IBranchConfiguration configuration) WhenBranchMerged = PreventIncrement.WhenBranchMerged ?? configuration.PreventIncrement.WhenBranchMerged, WhenCurrentCommitTagged = PreventIncrement.WhenCurrentCommitTagged ?? configuration.PreventIncrement.WhenCurrentCommitTagged }, - LabelNumberPattern = LabelNumberPattern ?? configuration.LabelNumberPattern, TrackMergeTarget = TrackMergeTarget ?? configuration.TrackMergeTarget, TrackMergeMessage = TrackMergeMessage ?? configuration.TrackMergeMessage, CommitMessageIncrementing = CommitMessageIncrementing ?? configuration.CommitMessageIncrementing, @@ -124,7 +116,6 @@ public virtual IBranchConfiguration Inherit(EffectiveConfiguration configuration WhenBranchMerged = PreventIncrement.WhenBranchMerged ?? configuration.PreventIncrementWhenBranchMerged, WhenCurrentCommitTagged = PreventIncrement.WhenCurrentCommitTagged ?? configuration.PreventIncrementWhenCurrentCommitTagged }, - LabelNumberPattern = LabelNumberPattern ?? configuration.LabelNumberPattern, TrackMergeTarget = TrackMergeTarget ?? configuration.TrackMergeTarget, TrackMergeMessage = TrackMergeMessage ?? configuration.TrackMergeMessage, CommitMessageIncrementing = CommitMessageIncrementing ?? configuration.CommitMessageIncrementing, diff --git a/src/GitVersion.Configuration/Builders/BranchConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/BranchConfigurationBuilder.cs index db36d2b006..18c40f8b81 100644 --- a/src/GitVersion.Configuration/Builders/BranchConfigurationBuilder.cs +++ b/src/GitVersion.Configuration/Builders/BranchConfigurationBuilder.cs @@ -12,7 +12,6 @@ internal class BranchConfigurationBuilder private bool? preventIncrementOfMergedBranch; private bool? preventIncrementWhenBranchMerged; private bool? preventIncrementWhenCurrentCommitTagged; - private string? labelNumberPattern; private bool? trackMergeTarget; private bool? trackMergeMessage; private CommitMessageIncrementMode? commitMessageIncrementing; @@ -64,12 +63,6 @@ public virtual BranchConfigurationBuilder WithPreventIncrementWhenCurrentCommitT return this; } - public virtual BranchConfigurationBuilder WithLabelNumberPattern(string? value) - { - this.labelNumberPattern = value; - return this; - } - public virtual BranchConfigurationBuilder WithTrackMergeTarget(bool? value) { this.trackMergeTarget = value; @@ -150,7 +143,6 @@ public virtual BranchConfigurationBuilder WithConfiguration(IBranchConfiguration WithPreventIncrementOfMergedBranch(value.PreventIncrement.OfMergedBranch); WithPreventIncrementWhenBranchMerged(value.PreventIncrement.WhenBranchMerged); WithPreventIncrementWhenCurrentCommitTagged(value.PreventIncrement.WhenCurrentCommitTagged); - WithLabelNumberPattern(value.LabelNumberPattern); WithTrackMergeTarget(value.TrackMergeTarget); WithTrackMergeMessage(value.TrackMergeMessage); WithCommitMessageIncrementing(value.CommitMessageIncrementing); @@ -176,7 +168,6 @@ public virtual BranchConfigurationBuilder WithConfiguration(IBranchConfiguration CommitMessageIncrementing = commitMessageIncrementing, IsMainBranch = isMainBranch, IsReleaseBranch = isReleaseBranch, - LabelNumberPattern = labelNumberPattern, PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = preventIncrementOfMergedBranch, diff --git a/src/GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs b/src/GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs index 80d6437579..3a7bfa3b3c 100644 --- a/src/GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs +++ b/src/GitVersion.Configuration/Builders/ConfigurationBuilderBase.cs @@ -35,7 +35,6 @@ internal abstract class ConfigurationBuilderBase : IConfi private bool? preventIncrementOfMergedBranch; private bool? preventIncrementWhenBranchMerged; private bool? preventIncrementWhenCurrentCommitTagged; - private string? labelNumberPattern; private bool? trackMergeTarget; private bool? trackMergeMessage; private CommitMessageIncrementMode? commitMessageIncrementing; @@ -278,12 +277,6 @@ public virtual TConfigurationBuilder WithPreventIncrementWhenCurrentCommitTagged return (TConfigurationBuilder)this; } - public virtual TConfigurationBuilder WithLabelNumberPattern(string? value) - { - this.labelNumberPattern = value; - return (TConfigurationBuilder)this; - } - public virtual TConfigurationBuilder WithTrackMergeTarget(bool? value) { this.trackMergeTarget = value; @@ -363,7 +356,6 @@ public virtual TConfigurationBuilder WithConfiguration(IGitVersionConfiguration WithPreventIncrementOfMergedBranch(value.PreventIncrement.OfMergedBranch); WithPreventIncrementWhenBranchMerged(value.PreventIncrement.WhenBranchMerged); WithPreventIncrementWhenCurrentCommitTagged(value.PreventIncrement.WhenCurrentCommitTagged); - WithLabelNumberPattern(value.LabelNumberPattern); WithTrackMergeTarget(value.TrackMergeTarget); WithTrackMergeMessage(value.TrackMergeMessage); WithCommitMessageIncrementing(value.CommitMessageIncrementing); @@ -423,7 +415,6 @@ public virtual IGitVersionConfiguration Build() CommitMessageIncrementing = this.commitMessageIncrementing, IsMainBranch = this.isMainBranch, IsReleaseBranch = this.isReleaseBranch, - LabelNumberPattern = this.labelNumberPattern, PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = this.preventIncrementOfMergedBranch, diff --git a/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs index 0122d54b8d..09fe1afb72 100644 --- a/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs +++ b/src/GitVersion.Configuration/Builders/GitFlowConfigurationBuilder.cs @@ -139,13 +139,12 @@ private GitFlowConfigurationBuilder() this.SupportBranch.Name, this.HotfixBranch.Name ], - Label = "PullRequest", + Label = $"PullRequest{ConfigurationConstants.PullRequestNumberPlaceholder}", PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = true, WhenCurrentCommitTagged = false }, - LabelNumberPattern = RegexPatterns.Configuration.DefaultLabelNumberPattern, TrackMergeMessage = true, PreReleaseWeight = 30000 }); diff --git a/src/GitVersion.Configuration/Builders/GitHubFlowConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/GitHubFlowConfigurationBuilder.cs index b31db0c152..b470db4174 100644 --- a/src/GitVersion.Configuration/Builders/GitHubFlowConfigurationBuilder.cs +++ b/src/GitVersion.Configuration/Builders/GitHubFlowConfigurationBuilder.cs @@ -107,14 +107,13 @@ private GitHubFlowConfigurationBuilder() WithBranch(PullRequestBranch.Name).WithConfiguration(new BranchConfiguration { DeploymentMode = DeploymentMode.ContinuousDelivery, - Label = "PullRequest", + Label = $"PullRequest{ConfigurationConstants.PullRequestNumberPlaceholder}", Increment = IncrementStrategy.Inherit, PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = true, WhenCurrentCommitTagged = false }, - LabelNumberPattern = RegexPatterns.Configuration.DefaultLabelNumberPattern, RegularExpression = PullRequestBranch.RegexPattern, SourceBranches = [ diff --git a/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs b/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs index 74ccd921e6..b672ae3824 100644 --- a/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs +++ b/src/GitVersion.Configuration/Builders/TrunkBasedConfigurationBuilder.cs @@ -105,14 +105,13 @@ private TrunkBasedConfigurationBuilder() WithBranch(PullRequestBranch.Name).WithConfiguration(new BranchConfiguration { DeploymentMode = DeploymentMode.ContinuousDelivery, - Label = "PullRequest", + Label = $"PullRequest{ConfigurationConstants.PullRequestNumberPlaceholder}", Increment = IncrementStrategy.Inherit, PreventIncrement = new PreventIncrementConfiguration { OfMergedBranch = true, WhenCurrentCommitTagged = false }, - LabelNumberPattern = RegexPatterns.Configuration.DefaultLabelNumberPattern, RegularExpression = PullRequestBranch.RegexPattern, SourceBranches = [ diff --git a/src/GitVersion.Core.Tests/IntegrationTests/DevelopScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/DevelopScenarios.cs index 6d06396eb4..7b3908a2dc 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/DevelopScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/DevelopScenarios.cs @@ -395,7 +395,7 @@ public void WhenPreventIncrementOfMergedBranchVersionIsSetToFalseForDevelopCommi ) .WithBranch("hotfix", builder => builder .WithPreventIncrementOfMergedBranch(true) - .WithRegularExpression("^(origin/)?hotfix[/-]") + .WithRegularExpression(@"^(origin/)?hotfix[\/-]") ) .Build(); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/FeatureBranchScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/FeatureBranchScenarios.cs index c0da0e2918..05cd9a46cb 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/FeatureBranchScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/FeatureBranchScenarios.cs @@ -182,10 +182,13 @@ public void CanUseBranchNameOffAReleaseBranch() fixture.AssertFullSemver("0.3.0-PROJ-1.1+4", configuration); } - [TestCase("alpha", "JIRA-123", "^features?[/-](?.+)", "alpha")] - [TestCase($"alpha.{ConfigurationConstants.BranchNamePlaceholder}", "JIRA-123", "^features?[/-](?.+)", "alpha.JIRA-123")] - [TestCase("{BranchName}-of-task-number-{TaskNumber}", "4711_this-is-a-feature", "^features?[/-](?\\d+)_(?.+)", "this-is-a-feature-of-task-number-4711")] - [TestCase("{BranchName}", "4711_this-is-a-feature", "^features?[/-](?.+)", "4711-this-is-a-feature")] + [TestCase("alpha", "JIRA-123", @"^features?[\/-](?.+)", "alpha")] + [TestCase($"alpha.{ConfigurationConstants.BranchNamePlaceholder}", "JIRA-123", @"^features?[\/-](?.+)", "alpha.JIRA-123")] + [TestCase("{BranchName}-of-task-number-{TaskNumber}", "4711_this-is-a-feature", @"^features?[\/-](?\d+)_(?.+)", "this-is-a-feature-of-task-number-4711")] + [TestCase("{BranchName}", "4711_this-is-a-feature", @"^features?[\/-](?.+)", "4711-this-is-a-feature")] + [TestCase("{BranchName}.xyz", "x_y.7.z", @"^features?[\/-](?.+)", "x-y-7-z.xyz")] + [TestCase("{BranchName}", "yourname/dash-separated-words", @".*\/(?[^\/]+)$", "dash-separated-words")] + [TestCase("{X}.{Z}-{Y}.{X}-{Z}.{X}", "xxxyyz", @"^features?[\/-](?x+)(?y+)(?z+)$", "xxx.z-yy.xxx-z.xxx")] public void ShouldUseConfiguredLabel(string label, string featureName, string regularExpression, string preReleaseLabelName) { var configuration = GitFlowConfigurationBuilder.New diff --git a/src/GitVersion.Core.Tests/IntegrationTests/MainlineDevelopmentScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/MainlineDevelopmentScenarios.cs index 8ba8ab429f..dfd3574819 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/MainlineDevelopmentScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/MainlineDevelopmentScenarios.cs @@ -26,7 +26,7 @@ private static GitFlowConfigurationBuilder GetConfigurationBuilder() => GitFlowC .WithBranch("hotfix", builder => builder .WithIsMainBranch(false).WithIncrement(IncrementStrategy.Patch) .WithDeploymentMode(DeploymentMode.ContinuousDelivery) - .WithRegularExpression("^hotfix[/-](?.+)").WithLabel("{BranchName}") + .WithRegularExpression(@"^hotfix[\/-](?.+)").WithLabel("{BranchName}") .WithSourceBranches("main") ) .WithBranch("pull-request", builder => builder diff --git a/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs index 0b90e579f5..4a4b295da0 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs @@ -165,7 +165,7 @@ public void UsesFirstBranchConfigWhenMultipleMatch(string branchName, IncrementS .WithBranch("release", builder => builder .WithIncrement(IncrementStrategy.Patch) .WithLabel("not-latest") - .WithRegularExpression("releases?[/-]") + .WithRegularExpression(@"releases?[\/-]") ) .Build(); diff --git a/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs index af8dd75d35..eb6340389b 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/NextVersionCalculatorTests.cs @@ -68,7 +68,7 @@ public void PreReleaseLabelCanUseBranchName() var configuration = GitFlowConfigurationBuilder.New .WithNextVersion("1.0.0") .WithBranch("custom", builder => builder - .WithRegularExpression("^custom?[/-](?.+)") + .WithRegularExpression(@"^custom?[\/-](?.+)") .WithLabel(ConfigurationConstants.BranchNamePlaceholder) .WithSourceBranches() ) @@ -216,7 +216,7 @@ public void PreReleaseLabelCanUseBranchNameVariable() var configuration = GitFlowConfigurationBuilder.New .WithNextVersion("1.0.0") .WithBranch("custom", builder => builder - .WithRegularExpression("^custom?[/-](?.+)") + .WithRegularExpression(@"^custom?[\/-](?.+)") .WithLabel($"alpha.{ConfigurationConstants.BranchNamePlaceholder}") .WithDeploymentMode(DeploymentMode.ManualDeployment) .WithSourceBranches() diff --git a/src/GitVersion.Core/Configuration/ConfigurationConstants.cs b/src/GitVersion.Core/Configuration/ConfigurationConstants.cs index f8774c93ba..017990354d 100644 --- a/src/GitVersion.Core/Configuration/ConfigurationConstants.cs +++ b/src/GitVersion.Core/Configuration/ConfigurationConstants.cs @@ -24,6 +24,7 @@ internal static class ConfigurationConstants public const string DefaultAssemblyInformationalFormat = "{InformationalVersion}"; public const string DefaultCommitDateFormat = "yyyy-MM-dd"; public const string BranchNamePlaceholder = "{BranchName}"; + public const string PullRequestNumberPlaceholder = "{Number}"; public const bool DefaultUpdateBuildNumber = true; public const int DefaultTagPreReleaseWeight = 60000; diff --git a/src/GitVersion.Core/Configuration/EffectiveConfiguration.cs b/src/GitVersion.Core/Configuration/EffectiveConfiguration.cs index c7514c34cc..bd16f1f2ba 100644 --- a/src/GitVersion.Core/Configuration/EffectiveConfiguration.cs +++ b/src/GitVersion.Core/Configuration/EffectiveConfiguration.cs @@ -60,7 +60,6 @@ public EffectiveConfiguration( PreventIncrementOfMergedBranch = branchConfiguration.PreventIncrement.OfMergedBranch ?? false; PreventIncrementWhenBranchMerged = branchConfiguration.PreventIncrement.WhenBranchMerged ?? false; PreventIncrementWhenCurrentCommitTagged = branchConfiguration.PreventIncrement.WhenCurrentCommitTagged ?? true; - LabelNumberPattern = branchConfiguration.LabelNumberPattern; TrackMergeTarget = branchConfiguration.TrackMergeTarget ?? false; TrackMergeMessage = branchConfiguration.TrackMergeMessage ?? true; MajorVersionBumpMessage = configuration.MajorVersionBumpMessage; @@ -109,8 +108,6 @@ public EffectiveConfiguration( public bool PreventIncrementWhenCurrentCommitTagged { get; } - public string? LabelNumberPattern { get; } - public bool TrackMergeTarget { get; } public bool TrackMergeMessage { get; } diff --git a/src/GitVersion.Core/Configuration/IBranchConfiguration.cs b/src/GitVersion.Core/Configuration/IBranchConfiguration.cs index cf81ef3dcc..209168bb9d 100644 --- a/src/GitVersion.Core/Configuration/IBranchConfiguration.cs +++ b/src/GitVersion.Core/Configuration/IBranchConfiguration.cs @@ -14,8 +14,6 @@ public interface IBranchConfiguration IPreventIncrementConfiguration PreventIncrement { get; } - string? LabelNumberPattern { get; } - bool? TrackMergeTarget { get; } bool? TrackMergeMessage { get; } diff --git a/src/GitVersion.Core/Core/RegexPatterns.cs b/src/GitVersion.Core/Core/RegexPatterns.cs index 23f7b82d0a..4e13455b95 100644 --- a/src/GitVersion.Core/Core/RegexPatterns.cs +++ b/src/GitVersion.Core/Core/RegexPatterns.cs @@ -18,7 +18,6 @@ static RegexPatterns() Cache.TryAdd(Configuration.DefaultTagPrefixRegex.ToString(), Configuration.DefaultTagPrefixRegex); Cache.TryAdd(Configuration.DefaultVersionInBranchRegex.ToString(), Configuration.DefaultVersionInBranchRegex); - Cache.TryAdd(Configuration.DefaultLabelNumberRegex.ToString(), Configuration.DefaultLabelNumberRegex); Cache.TryAdd(Configuration.MainBranchRegex.ToString(), Configuration.MainBranchRegex); Cache.TryAdd(Configuration.DevelopBranchRegex.ToString(), Configuration.DevelopBranchRegex); Cache.TryAdd(Configuration.ReleaseBranchRegex.ToString(), Configuration.ReleaseBranchRegex); @@ -83,9 +82,6 @@ internal static class Configuration [StringSyntax(StringSyntaxAttribute.Regex)] public const string DefaultVersionInBranchPattern = @"(?[vV]?\d+(\.\d+)?(\.\d+)?).*"; - [StringSyntax(StringSyntaxAttribute.Regex)] - public const string DefaultLabelNumberPattern = @"[/-](?\d+)"; - [StringSyntax(StringSyntaxAttribute.Regex)] public const string MainBranchRegexPattern = "^master$|^main$"; @@ -93,26 +89,25 @@ internal static class Configuration public const string DevelopBranchRegexPattern = "^dev(elop)?(ment)?$"; [StringSyntax(StringSyntaxAttribute.Regex)] - public const string ReleaseBranchRegexPattern = "^releases?[/-](?.+)"; + public const string ReleaseBranchRegexPattern = @"^releases?[\/-](?.+)"; [StringSyntax(StringSyntaxAttribute.Regex)] - public const string FeatureBranchRegexPattern = "^features?[/-](?.+)"; + public const string FeatureBranchRegexPattern = @"^features?[\/-](?.+)"; [StringSyntax(StringSyntaxAttribute.Regex)] - public const string PullRequestBranchRegexPattern = @"^(pull|pull\-requests|pr)[/-]"; + public const string PullRequestBranchRegexPattern = @"^(pull-requests|pull|pr)[\/-](?\d*)"; [StringSyntax(StringSyntaxAttribute.Regex)] - public const string HotfixBranchRegexPattern = "^hotfix(es)?[/-](?.+)"; + public const string HotfixBranchRegexPattern = @"^hotfix(es)?[\/-](?.+)"; [StringSyntax(StringSyntaxAttribute.Regex)] - public const string SupportBranchRegexPattern = "^support[/-](?.+)"; + public const string SupportBranchRegexPattern = @"^support[\/-](?.+)"; [StringSyntax(StringSyntaxAttribute.Regex)] public const string UnknownBranchRegexPattern = "(?.+)"; public static Regex DefaultTagPrefixRegex { get; } = new(DefaultTagPrefixPattern, Options); public static Regex DefaultVersionInBranchRegex { get; } = new(DefaultVersionInBranchPattern, Options); - public static Regex DefaultLabelNumberRegex { get; } = new(DefaultLabelNumberPattern, Options); public static Regex MainBranchRegex { get; } = new(MainBranchRegexPattern, Options); public static Regex DevelopBranchRegex { get; } = new(DevelopBranchRegexPattern, Options); public static Regex ReleaseBranchRegex { get; } = new(ReleaseBranchRegexPattern, Options); diff --git a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs index b10b2b9ae8..a1e0b4bf7a 100644 --- a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs +++ b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs @@ -90,39 +90,32 @@ public static bool IsReleaseBranch(this IGitVersionConfiguration configuration, } var effectiveBranchName = branchNameOverride ?? branchName; - if (!configuration.RegularExpression.IsNullOrWhiteSpace() && !effectiveBranchName.IsNullOrEmpty()) { - effectiveBranchName = effectiveBranchName.RegexReplace("[^a-zA-Z0-9-_]", "-"); var regex = RegexPatterns.Cache.GetOrAdd(configuration.RegularExpression); var match = regex.Match(effectiveBranchName); if (match.Success) { - // ReSharper disable once LoopCanBeConvertedToQuery foreach (var groupName in regex.GetGroupNames()) { - label = label.Replace("{" + groupName + "}", match.Groups[groupName].Value); + var groupValue = match.Groups[groupName].Value; + Lazy escapedGroupValueLazy = new(() => EscapeInvalidCharaters(groupValue)); + var placeholder = $"{{{groupName}}}"; + int index, startIndex = 0; + while ((index = label.IndexOf(placeholder, startIndex, StringComparison.InvariantCulture)) >= 0) + { + var escapedGroupValue = escapedGroupValueLazy.Value; + label = label.Remove(index, placeholder.Length).Insert(index, escapedGroupValue); + startIndex = index + escapedGroupValue.Length; + } } - - label = label.Replace('_', '-'); - } - } - - // Evaluate tag number pattern and append to prerelease tag, preserving build metadata - if (!configuration.LabelNumberPattern.IsNullOrEmpty() && !effectiveBranchName.IsNullOrEmpty()) - { - var regex = RegexPatterns.Cache.GetOrAdd(configuration.LabelNumberPattern); - var match = regex.Match(effectiveBranchName); - var numberGroup = match.Groups["number"]; - if (numberGroup.Success) - { - label += numberGroup.Value; } } - return label; } + private static string EscapeInvalidCharaters(string groupValue) => groupValue.RegexReplace(@"[^a-zA-Z0-9-]", "-"); + public static (string GitDirectory, string WorkingTreeDirectory)? FindGitDir(this IFileSystem fileSystem, string path) { string? startingDir = path; diff --git a/src/GitVersion.Core/PublicAPI.Shipped.txt b/src/GitVersion.Core/PublicAPI.Shipped.txt index d3f010c444..e8e7ed46a5 100644 --- a/src/GitVersion.Core/PublicAPI.Shipped.txt +++ b/src/GitVersion.Core/PublicAPI.Shipped.txt @@ -71,7 +71,6 @@ GitVersion.Configuration.EffectiveConfiguration.Increment.get -> GitVersion.Incr GitVersion.Configuration.EffectiveConfiguration.IsMainBranch.get -> bool GitVersion.Configuration.EffectiveConfiguration.IsReleaseBranch.get -> bool GitVersion.Configuration.EffectiveConfiguration.Label.get -> string? -GitVersion.Configuration.EffectiveConfiguration.LabelNumberPattern.get -> string? GitVersion.Configuration.EffectiveConfiguration.MajorVersionBumpMessage.get -> string? GitVersion.Configuration.EffectiveConfiguration.MinorVersionBumpMessage.get -> string? GitVersion.Configuration.EffectiveConfiguration.NextVersion.get -> string? @@ -103,7 +102,6 @@ GitVersion.Configuration.IBranchConfiguration.IsMatch(string! branchName) -> boo GitVersion.Configuration.IBranchConfiguration.IsReleaseBranch.get -> bool? GitVersion.Configuration.IBranchConfiguration.IsSourceBranchFor.get -> System.Collections.Generic.IReadOnlyCollection! GitVersion.Configuration.IBranchConfiguration.Label.get -> string? -GitVersion.Configuration.IBranchConfiguration.LabelNumberPattern.get -> string? GitVersion.Configuration.IBranchConfiguration.PreReleaseWeight.get -> int? GitVersion.Configuration.IBranchConfiguration.PreventIncrement.get -> GitVersion.Configuration.IPreventIncrementConfiguration! GitVersion.Configuration.IBranchConfiguration.RegularExpression.get -> string? From dbed90b64d3a3f3f8d5f545ff756c31b0a7950bc Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Sat, 18 Jan 2025 11:16:45 +0000 Subject: [PATCH 341/544] Docs changes --- docs/input/docs/reference/configuration.md | 45 +++++++++++++++++----- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index 9dda482e2e..78166094e2 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -208,7 +208,7 @@ tracks-release-branches: false is-release-branch: false is-main-branch: false ``` -snippet source | anchor +snippet source | anchor The supported built-in configuration for the `GitHubFlow` workflow (`workflow: GitHubFlow/v1`) looks like: @@ -332,7 +332,7 @@ tracks-release-branches: false is-release-branch: false is-main-branch: false ``` -snippet source | anchor +snippet source | anchor The preview built-in configuration (experimental usage only) for the `TrunkBased` workflow (`workflow: TrunkBased/preview1`) looks like: @@ -441,7 +441,7 @@ tracks-release-branches: false is-release-branch: false is-main-branch: false ``` -snippet source | anchor +snippet source | anchor The details of the available options are as follows: @@ -687,7 +687,7 @@ branches: is-main-branch: false pre-release-weight: 0 release: - regex: ^releases?[\/-] + regex: ^releases?[/-] mode: ContinuousDelivery label: beta increment: None @@ -699,28 +699,29 @@ branches: is-main-branch: false pre-release-weight: 30000 feature: - regex: ^features?[\/-] + regex: ^features?[/-] mode: ContinuousDelivery label: '{BranchName}' increment: Inherit source-branches: [ 'develop', 'main', 'release', 'feature', 'support', 'hotfix' ] pre-release-weight: 30000 pull-request: - regex: ^(pull-requests|pull|pr)[\/-] + regex: ^(pull|pull\-requests|pr)[/-] mode: ContinuousDelivery label: PullRequest increment: Inherit + label-number-pattern: '[/-](?\d+)[-/]' source-branches: [ 'develop', 'main', 'release', 'feature', 'support', 'hotfix' ] pre-release-weight: 30000 hotfix: - regex: ^hotfix(es)?[\/-] + regex: ^hotfix(es)?[/-] mode: ContinuousDelivery label: beta increment: Inherit source-branches: [ 'release', 'main', 'support', 'hotfix' ] pre-release-weight: 30000 support: - regex: ^support[\/-] + regex: ^support[/-] mode: ContinuousDelivery label: '' increment: Patch @@ -836,9 +837,9 @@ The pre-release label to use for this branch. Use the value `{BranchName}` as a insert the value of the named group `BranchName` from the [regular expression](#regex). For example: branch `feature/foo` would become a pre-release label -of `alpha.foo` with `label: 'alpha.{BranchName}'` and `regex: '^features?[\/-](?.+)'`. +of `alpha.foo` with `label: 'alpha.{BranchName}'` and `regex: '^features?[/-](?.+)'`. -Another example: branch `features/sc-12345/some-description` would become a pre-release label of `sc-12345` with `label: '{StoryNo}'` and `regex: '^features?[\/-](?sc-\d+)[-/].+'`. +Another example: branch `features/sc-12345/some-description` would become a pre-release label of `sc-12345` with `label: '{StoryNo}'` and `regex: '^features?[/-](?sc-\d+)[-/].+'`. **Note:** To clear a default use an empty string: `label: ''` @@ -867,6 +868,30 @@ The increment of the merged branch will be ignored when this branch related prop This branch related property controls the behvior whether to use the tagged (value set to true) or the incremented (value set to false) semantic version. Defaults to true. +### label-number-pattern + +Pull requests require us to extract the pre-release number out of the branch +name so `refs/pulls/534/merge` builds as `PullRequest.534`. This is a regex with +a named capture group called `number`. + +If the branch `mode` is set to `ContinuousDeployment`, then the extracted +`number` is appended to the name of the pre-release label and the number portion +is the number of commits since the last label. This enables consecutive commits to +the pull request branch to generate unique full semantic version numbers when +the branch is configured to use ContinuousDeployment mode. + +**Example usage:** + +```yaml +branches: + pull-request: + mode: ContinuousDeployment + label: PullRequest + increment: Inherit + track-merge-target: true + label-number-pattern: '[/-](?\d+)[-/]' +``` + ### track-merge-target Strategy which will look for tagged merge commits directly off the current From eded73b765f2d2284f939682a19c8a1bb1717c07 Mon Sep 17 00:00:00 2001 From: Hardy Hobeck Date: Tue, 28 Jan 2025 10:22:33 +0100 Subject: [PATCH 342/544] Update documentation --- docs/input/docs/reference/configuration.md | 136 ++++++++++-------- .../mdsource/configuration.source.md | 130 +++++++++-------- 2 files changed, 143 insertions(+), 123 deletions(-) diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index 78166094e2..4cf1792336 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -208,7 +208,7 @@ tracks-release-branches: false is-release-branch: false is-main-branch: false ``` -snippet source | anchor +snippet source | anchor The supported built-in configuration for the `GitHubFlow` workflow (`workflow: GitHubFlow/v1`) looks like: @@ -332,7 +332,7 @@ tracks-release-branches: false is-release-branch: false is-main-branch: false ``` -snippet source | anchor +snippet source | anchor The preview built-in configuration (experimental usage only) for the `TrunkBased` workflow (`workflow: TrunkBased/preview1`) looks like: @@ -441,7 +441,7 @@ tracks-release-branches: false is-release-branch: false is-main-branch: false ``` -snippet source | anchor +snippet source | anchor The details of the available options are as follows: @@ -661,77 +661,84 @@ If you have branch specific configuration upgrading to v4 will force you to upgrade. ```yaml +workflow: 'GitHubFlow/v1' branches: main: - regex: ^master$|^main$ - mode: ContinuousDelivery label: '' increment: Patch - prevent-increment-of-merged-branch-version: true + prevent-increment: + of-merged-branch: true track-merge-target: false - source-branches: [ 'develop', 'release' ] + track-merge-message: true + regex: ^master$|^main$ + source-branches: [] + is-source-branch-for: [] tracks-release-branches: false is-release-branch: false is-main-branch: true pre-release-weight: 55000 - develop: - regex: ^dev(elop)?(ment)?$ - mode: ContinuousDeployment - label: alpha - increment: Minor - prevent-increment-of-merged-branch-version: false - track-merge-target: true - source-branches: [] - tracks-release-branches: true - is-release-branch: false - is-main-branch: false - pre-release-weight: 0 release: - regex: ^releases?[/-] - mode: ContinuousDelivery + mode: ManualDeployment label: beta - increment: None - prevent-increment-of-merged-branch-version: true + increment: Patch + prevent-increment: + of-merged-branch: true + when-branch-merged: false + when-current-commit-tagged: false track-merge-target: false - source-branches: [ 'develop', 'main', 'support', 'release' ] + track-merge-message: true + regex: ^releases?[\/-](?.+) + source-branches: + - main + is-source-branch-for: [] tracks-release-branches: false is-release-branch: true is-main-branch: false pre-release-weight: 30000 feature: - regex: ^features?[/-] - mode: ContinuousDelivery + mode: ManualDeployment label: '{BranchName}' increment: Inherit - source-branches: [ 'develop', 'main', 'release', 'feature', 'support', 'hotfix' ] + prevent-increment: + when-current-commit-tagged: false + track-merge-message: true + regex: ^features?[\/-](?.+) + source-branches: + - main + - release + is-source-branch-for: [] + is-main-branch: false pre-release-weight: 30000 pull-request: - regex: ^(pull|pull\-requests|pr)[/-] mode: ContinuousDelivery - label: PullRequest + label: PullRequest{Number} increment: Inherit - label-number-pattern: '[/-](?\d+)[-/]' - source-branches: [ 'develop', 'main', 'release', 'feature', 'support', 'hotfix' ] + prevent-increment: + of-merged-branch: true + when-current-commit-tagged: false + track-merge-message: true + regex: ^(pull-requests|pull|pr)[\/-](?\d*) + source-branches: + - main + - release + - feature + is-source-branch-for: [] pre-release-weight: 30000 - hotfix: - regex: ^hotfix(es)?[/-] - mode: ContinuousDelivery - label: beta + unknown: + mode: ManualDeployment + label: '{BranchName}' increment: Inherit - source-branches: [ 'release', 'main', 'support', 'hotfix' ] - pre-release-weight: 30000 - support: - regex: ^support[/-] - mode: ContinuousDelivery - label: '' - increment: Patch - prevent-increment-of-merged-branch-version: true - track-merge-target: false - source-branches: [ 'main' ] - tracks-release-branches: false - is-release-branch: false - is-main-branch: true - pre-release-weight: 55000 + prevent-increment: + when-current-commit-tagged: false + track-merge-message: false + regex: (?.+) + source-branches: + - main + - release + - feature + - pull-request + is-source-branch-for: [] + is-main-branch: false ``` If you don't specify the regex, the built-in for that branch config will be @@ -837,9 +844,9 @@ The pre-release label to use for this branch. Use the value `{BranchName}` as a insert the value of the named group `BranchName` from the [regular expression](#regex). For example: branch `feature/foo` would become a pre-release label -of `alpha.foo` with `label: 'alpha.{BranchName}'` and `regex: '^features?[/-](?.+)'`. +of `alpha.foo` with `label: 'alpha.{BranchName}'` and `regex: '^features?[\/-](?.+)'`. -Another example: branch `features/sc-12345/some-description` would become a pre-release label of `sc-12345` with `label: '{StoryNo}'` and `regex: '^features?[/-](?sc-\d+)[-/].+'`. +Another example: branch `features/sc-12345/some-description` would become a pre-release label of `sc-12345` with `label: '{StoryNo}'` and `regex: '^features?[\/-](?sc-\d+)[-/].+'`. **Note:** To clear a default use an empty string: `label: ''` @@ -871,25 +878,28 @@ This branch related property controls the behvior whether to use the tagged (val ### label-number-pattern Pull requests require us to extract the pre-release number out of the branch -name so `refs/pulls/534/merge` builds as `PullRequest.534`. This is a regex with -a named capture group called `number`. - -If the branch `mode` is set to `ContinuousDeployment`, then the extracted -`number` is appended to the name of the pre-release label and the number portion -is the number of commits since the last label. This enables consecutive commits to -the pull request branch to generate unique full semantic version numbers when -the branch is configured to use ContinuousDeployment mode. +name so `refs/pull/534/merge` builds as `PullRequest534`. This is a regex with +a named capture group called `Number`. **Example usage:** ```yaml branches: pull-request: - mode: ContinuousDeployment - label: PullRequest + mode: ContinuousDelivery + label: PullRequest{Number} increment: Inherit - track-merge-target: true - label-number-pattern: '[/-](?\d+)[-/]' + prevent-increment: + of-merged-branch: true + when-current-commit-tagged: false + track-merge-message: true + regex: ^(pull-requests|pull|pr)[\/-](?\d*) + source-branches: + - main + - release + - feature + is-source-branch-for: [] + pre-release-weight: 30000 ``` ### track-merge-target diff --git a/docs/input/docs/reference/mdsource/configuration.source.md b/docs/input/docs/reference/mdsource/configuration.source.md index be3500ee72..5ba2cabcad 100644 --- a/docs/input/docs/reference/mdsource/configuration.source.md +++ b/docs/input/docs/reference/mdsource/configuration.source.md @@ -265,77 +265,84 @@ If you have branch specific configuration upgrading to v4 will force you to upgrade. ```yaml +workflow: 'GitHubFlow/v1' branches: main: - regex: ^master$|^main$ - mode: ContinuousDelivery label: '' increment: Patch - prevent-increment-of-merged-branch-version: true + prevent-increment: + of-merged-branch: true track-merge-target: false - source-branches: [ 'develop', 'release' ] + track-merge-message: true + regex: ^master$|^main$ + source-branches: [] + is-source-branch-for: [] tracks-release-branches: false is-release-branch: false is-main-branch: true pre-release-weight: 55000 - develop: - regex: ^dev(elop)?(ment)?$ - mode: ContinuousDeployment - label: alpha - increment: Minor - prevent-increment-of-merged-branch-version: false - track-merge-target: true - source-branches: [] - tracks-release-branches: true - is-release-branch: false - is-main-branch: false - pre-release-weight: 0 release: - regex: ^releases?[/-] - mode: ContinuousDelivery + mode: ManualDeployment label: beta - increment: None - prevent-increment-of-merged-branch-version: true + increment: Patch + prevent-increment: + of-merged-branch: true + when-branch-merged: false + when-current-commit-tagged: false track-merge-target: false - source-branches: [ 'develop', 'main', 'support', 'release' ] + track-merge-message: true + regex: ^releases?[\/-](?.+) + source-branches: + - main + is-source-branch-for: [] tracks-release-branches: false is-release-branch: true is-main-branch: false pre-release-weight: 30000 feature: - regex: ^features?[/-] - mode: ContinuousDelivery + mode: ManualDeployment label: '{BranchName}' increment: Inherit - source-branches: [ 'develop', 'main', 'release', 'feature', 'support', 'hotfix' ] + prevent-increment: + when-current-commit-tagged: false + track-merge-message: true + regex: ^features?[\/-](?.+) + source-branches: + - main + - release + is-source-branch-for: [] + is-main-branch: false pre-release-weight: 30000 pull-request: - regex: ^(pull|pull\-requests|pr)[/-] mode: ContinuousDelivery - label: PullRequest + label: PullRequest{Number} increment: Inherit - label-number-pattern: '[/-](?\d+)[-/]' - source-branches: [ 'develop', 'main', 'release', 'feature', 'support', 'hotfix' ] + prevent-increment: + of-merged-branch: true + when-current-commit-tagged: false + track-merge-message: true + regex: ^(pull-requests|pull|pr)[\/-](?\d*) + source-branches: + - main + - release + - feature + is-source-branch-for: [] pre-release-weight: 30000 - hotfix: - regex: ^hotfix(es)?[/-] - mode: ContinuousDelivery - label: beta + unknown: + mode: ManualDeployment + label: '{BranchName}' increment: Inherit - source-branches: [ 'release', 'main', 'support', 'hotfix' ] - pre-release-weight: 30000 - support: - regex: ^support[/-] - mode: ContinuousDelivery - label: '' - increment: Patch - prevent-increment-of-merged-branch-version: true - track-merge-target: false - source-branches: [ 'main' ] - tracks-release-branches: false - is-release-branch: false - is-main-branch: true - pre-release-weight: 55000 + prevent-increment: + when-current-commit-tagged: false + track-merge-message: false + regex: (?.+) + source-branches: + - main + - release + - feature + - pull-request + is-source-branch-for: [] + is-main-branch: false ``` If you don't specify the regex, the built-in for that branch config will be @@ -441,9 +448,9 @@ The pre-release label to use for this branch. Use the value `{BranchName}` as a insert the value of the named group `BranchName` from the [regular expression](#regex). For example: branch `feature/foo` would become a pre-release label -of `alpha.foo` with `label: 'alpha.{BranchName}'` and `regex: '^features?[/-](?.+)'`. +of `alpha.foo` with `label: 'alpha.{BranchName}'` and `regex: '^features?[\/-](?.+)'`. -Another example: branch `features/sc-12345/some-description` would become a pre-release label of `sc-12345` with `label: '{StoryNo}'` and `regex: '^features?[/-](?sc-\d+)[-/].+'`. +Another example: branch `features/sc-12345/some-description` would become a pre-release label of `sc-12345` with `label: '{StoryNo}'` and `regex: '^features?[\/-](?sc-\d+)[-/].+'`. **Note:** To clear a default use an empty string: `label: ''` @@ -475,25 +482,28 @@ This branch related property controls the behvior whether to use the tagged (val ### label-number-pattern Pull requests require us to extract the pre-release number out of the branch -name so `refs/pulls/534/merge` builds as `PullRequest.534`. This is a regex with -a named capture group called `number`. - -If the branch `mode` is set to `ContinuousDeployment`, then the extracted -`number` is appended to the name of the pre-release label and the number portion -is the number of commits since the last label. This enables consecutive commits to -the pull request branch to generate unique full semantic version numbers when -the branch is configured to use ContinuousDeployment mode. +name so `refs/pull/534/merge` builds as `PullRequest534`. This is a regex with +a named capture group called `Number`. **Example usage:** ```yaml branches: pull-request: - mode: ContinuousDeployment - label: PullRequest + mode: ContinuousDelivery + label: PullRequest{Number} increment: Inherit - track-merge-target: true - label-number-pattern: '[/-](?\d+)[-/]' + prevent-increment: + of-merged-branch: true + when-current-commit-tagged: false + track-merge-message: true + regex: ^(pull-requests|pull|pr)[\/-](?\d*) + source-branches: + - main + - release + - feature + is-source-branch-for: [] + pre-release-weight: 30000 ``` ### track-merge-target From 17c0cf899d9540709d214c24bcba9dbd7d80e16d Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 28 Jan 2025 09:26:37 +0000 Subject: [PATCH 343/544] Docs changes --- docs/input/docs/reference/configuration.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/input/docs/reference/configuration.md b/docs/input/docs/reference/configuration.md index 4cf1792336..f6ac35c566 100644 --- a/docs/input/docs/reference/configuration.md +++ b/docs/input/docs/reference/configuration.md @@ -208,7 +208,7 @@ tracks-release-branches: false is-release-branch: false is-main-branch: false ``` -snippet source | anchor +snippet source | anchor The supported built-in configuration for the `GitHubFlow` workflow (`workflow: GitHubFlow/v1`) looks like: @@ -332,7 +332,7 @@ tracks-release-branches: false is-release-branch: false is-main-branch: false ``` -snippet source | anchor +snippet source | anchor The preview built-in configuration (experimental usage only) for the `TrunkBased` workflow (`workflow: TrunkBased/preview1`) looks like: @@ -441,7 +441,7 @@ tracks-release-branches: false is-release-branch: false is-main-branch: false ``` -snippet source | anchor +snippet source | anchor The details of the available options are as follows: From 0e73ee4470a688170bb7fe81e376b8f4300d20d0 Mon Sep 17 00:00:00 2001 From: Hardy Hobeck Date: Sat, 1 Feb 2025 12:48:15 +0100 Subject: [PATCH 344/544] Integrate code review remarks --- BREAKING_CHANGES.md | 2 +- schemas/6.1/GitVersion.configuration.json | 18 ------------------ 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/BREAKING_CHANGES.md b/BREAKING_CHANGES.md index 39f064160d..e1ab2c4975 100644 --- a/BREAKING_CHANGES.md +++ b/BREAKING_CHANGES.md @@ -1,4 +1,4 @@ -## v6.1.0 +## v6.2.0 * The configuration property `label-number-pattern` was removed. The functionality can be still used by changing the label and the branch name regular expression for pull-request branches. diff --git a/schemas/6.1/GitVersion.configuration.json b/schemas/6.1/GitVersion.configuration.json index c23d8a4686..a186b94b48 100644 --- a/schemas/6.1/GitVersion.configuration.json +++ b/schemas/6.1/GitVersion.configuration.json @@ -104,15 +104,6 @@ "null" ] }, - "label-number-pattern": { - "format": "regex", - "description": "The regular expression pattern to use to extract the number from the branch name. Defaults to '[/-](?\\d+)'.", - "default": "[/-](?\\d+)", - "type": [ - "string", - "null" - ] - }, "pre-release-weight": { "description": "Provides a way to translate the PreReleaseLabel to a number.", "type": [ @@ -233,15 +224,6 @@ "null" ] }, - "label-number-pattern": { - "format": "regex", - "description": "The regular expression pattern to use to extract the number from the branch name. Defaults to '[/-](?\\d+)'.", - "default": "[/-](?\\d+)", - "type": [ - "string", - "null" - ] - }, "major-version-bump-message": { "format": "regex", "description": "The regular expression to match commit messages with to perform a major version increment. Defaults to '\\+semver:\\s?(breaking|major)'", From ce00518676e7c7a6fddc7669bb95250b76856213 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Feb 2025 15:30:24 +0000 Subject: [PATCH 345/544] (docs deps): Bump the remark group with 53 updates Bumps the remark group with 53 updates: | Package | From | To | | --- | --- | --- | | [remark-lint](https://github.com/remarkjs/remark-lint) | `10.0.0` | `10.0.1` | | [remark-lint-blockquote-indentation](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-checkbox-character-style](https://github.com/remarkjs/remark-lint) | `5.0.0` | `5.0.1` | | [remark-lint-checkbox-content-indent](https://github.com/remarkjs/remark-lint) | `5.0.0` | `5.0.1` | | [remark-lint-code-block-style](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-definition-case](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-definition-spacing](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-fenced-code-flag](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.1.1` | | [remark-lint-fenced-code-marker](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-file-extension](https://github.com/remarkjs/remark-lint) | `3.0.0` | `3.0.1` | | [remark-lint-final-definition](https://github.com/remarkjs/remark-lint) | `4.0.1` | `4.0.2` | | [remark-lint-final-newline](https://github.com/remarkjs/remark-lint) | `3.0.0` | `3.0.1` | | [remark-lint-hard-break-spaces](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.1.1` | | [remark-lint-heading-increment](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-heading-style](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-link-title-style](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-list-item-bullet-indent](https://github.com/remarkjs/remark-lint) | `5.0.0` | `5.0.1` | | [remark-lint-list-item-content-indent](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-list-item-indent](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-maximum-heading-length](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.1.1` | | [remark-lint-no-blockquote-without-marker](https://github.com/remarkjs/remark-lint) | `6.0.0` | `6.0.1` | | [remark-lint-no-consecutive-blank-lines](https://github.com/remarkjs/remark-lint) | `5.0.0` | `5.0.1` | | [remark-lint-no-duplicate-definitions](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-no-duplicate-headings](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-no-emphasis-as-heading](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-no-empty-url](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-no-file-name-articles](https://github.com/remarkjs/remark-lint) | `3.0.0` | `3.0.1` | | [remark-lint-no-file-name-consecutive-dashes](https://github.com/remarkjs/remark-lint) | `3.0.0` | `3.0.1` | | [remark-lint-no-file-name-irregular-characters](https://github.com/remarkjs/remark-lint) | `3.0.0` | `3.0.1` | | [remark-lint-no-file-name-mixed-case](https://github.com/remarkjs/remark-lint) | `3.0.0` | `3.0.1` | | [remark-lint-no-file-name-outer-dashes](https://github.com/remarkjs/remark-lint) | `3.0.0` | `3.0.1` | | [remark-lint-no-heading-content-indent](https://github.com/remarkjs/remark-lint) | `5.0.0` | `5.0.1` | | [remark-lint-no-heading-indent](https://github.com/remarkjs/remark-lint) | `5.0.0` | `5.0.1` | | [remark-lint-no-heading-like-paragraph](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-no-literal-urls](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-no-multiple-toplevel-headings](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-no-reference-like-url](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-no-shell-dollars](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-no-shortcut-reference-image](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-no-table-indentation](https://github.com/remarkjs/remark-lint) | `5.0.0` | `5.0.1` | | [remark-lint-no-tabs](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-no-unused-definitions](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-ordered-list-marker-style](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-ordered-list-marker-value](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-rule-style](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-strong-marker](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-lint-table-cell-padding](https://github.com/remarkjs/remark-lint) | `5.0.0` | `5.1.1` | | [remark-lint-table-pipe-alignment](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.1.1` | | [remark-lint-table-pipes](https://github.com/remarkjs/remark-lint) | `5.0.0` | `5.0.1` | | [remark-lint-unordered-list-marker-style](https://github.com/remarkjs/remark-lint) | `4.0.0` | `4.0.1` | | [remark-preset-lint-consistent](https://github.com/remarkjs/remark-lint) | `6.0.0` | `6.0.1` | | [remark-preset-lint-markdown-style-guide](https://github.com/remarkjs/remark-lint) | `6.0.0` | `6.0.1` | | [remark-preset-lint-recommended](https://github.com/remarkjs/remark-lint) | `7.0.0` | `7.0.1` | Updates `remark-lint` from 10.0.0 to 10.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/10.0.0...10.0.1) Updates `remark-lint-blockquote-indentation` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-checkbox-character-style` from 5.0.0 to 5.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/5.0.0...5.0.1) Updates `remark-lint-checkbox-content-indent` from 5.0.0 to 5.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/5.0.0...5.0.1) Updates `remark-lint-code-block-style` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-definition-case` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-definition-spacing` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-fenced-code-flag` from 4.0.0 to 4.1.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...remark-lint-table-cell-padding@4.1.1) Updates `remark-lint-fenced-code-marker` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-file-extension` from 3.0.0 to 3.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/commits) Updates `remark-lint-final-definition` from 4.0.1 to 4.0.2 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.2/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/remark-lint-final-definition@4.0.1...4.0.2) Updates `remark-lint-final-newline` from 3.0.0 to 3.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/commits) Updates `remark-lint-hard-break-spaces` from 4.0.0 to 4.1.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...remark-lint-table-cell-padding@4.1.1) Updates `remark-lint-heading-increment` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-heading-style` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-link-title-style` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-list-item-bullet-indent` from 5.0.0 to 5.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/5.0.0...5.0.1) Updates `remark-lint-list-item-content-indent` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-list-item-indent` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-maximum-heading-length` from 4.0.0 to 4.1.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...remark-lint-table-cell-padding@4.1.1) Updates `remark-lint-no-blockquote-without-marker` from 6.0.0 to 6.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/commits) Updates `remark-lint-no-consecutive-blank-lines` from 5.0.0 to 5.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/5.0.0...5.0.1) Updates `remark-lint-no-duplicate-definitions` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-no-duplicate-headings` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-no-emphasis-as-heading` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-no-empty-url` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-no-file-name-articles` from 3.0.0 to 3.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/commits) Updates `remark-lint-no-file-name-consecutive-dashes` from 3.0.0 to 3.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/commits) Updates `remark-lint-no-file-name-irregular-characters` from 3.0.0 to 3.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/commits) Updates `remark-lint-no-file-name-mixed-case` from 3.0.0 to 3.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/commits) Updates `remark-lint-no-file-name-outer-dashes` from 3.0.0 to 3.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/commits) Updates `remark-lint-no-heading-content-indent` from 5.0.0 to 5.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/5.0.0...5.0.1) Updates `remark-lint-no-heading-indent` from 5.0.0 to 5.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/5.0.0...5.0.1) Updates `remark-lint-no-heading-like-paragraph` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-no-literal-urls` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-no-multiple-toplevel-headings` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-no-reference-like-url` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-no-shell-dollars` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-no-shortcut-reference-image` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-no-table-indentation` from 5.0.0 to 5.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/5.0.0...5.0.1) Updates `remark-lint-no-tabs` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-no-unused-definitions` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-ordered-list-marker-style` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-ordered-list-marker-value` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-rule-style` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-strong-marker` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-lint-table-cell-padding` from 5.0.0 to 5.1.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/5.0.0...remark-preset-lint-markdown-style-guide@5.1.1) Updates `remark-lint-table-pipe-alignment` from 4.0.0 to 4.1.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...remark-lint-table-cell-padding@4.1.1) Updates `remark-lint-table-pipes` from 5.0.0 to 5.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/5.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/5.0.0...5.0.1) Updates `remark-lint-unordered-list-marker-style` from 4.0.0 to 4.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/4.0.1/history.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/4.0.0...4.0.1) Updates `remark-preset-lint-consistent` from 6.0.0 to 6.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/commits) Updates `remark-preset-lint-markdown-style-guide` from 6.0.0 to 6.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/commits) Updates `remark-preset-lint-recommended` from 7.0.0 to 7.0.1 - [Release notes](https://github.com/remarkjs/remark-lint/releases) - [Changelog](https://github.com/remarkjs/remark-lint/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/remark-lint/compare/7.0.0...7.0.1) --- updated-dependencies: - dependency-name: remark-lint dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-blockquote-indentation dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-checkbox-character-style dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-checkbox-content-indent dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-code-block-style dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-definition-case dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-definition-spacing dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-fenced-code-flag dependency-type: direct:development update-type: version-update:semver-minor dependency-group: remark - dependency-name: remark-lint-fenced-code-marker dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-file-extension dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-final-definition dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-final-newline dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-hard-break-spaces dependency-type: direct:development update-type: version-update:semver-minor dependency-group: remark - dependency-name: remark-lint-heading-increment dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-heading-style dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-link-title-style dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-list-item-bullet-indent dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-list-item-content-indent dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-list-item-indent dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-maximum-heading-length dependency-type: direct:development update-type: version-update:semver-minor dependency-group: remark - dependency-name: remark-lint-no-blockquote-without-marker dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-consecutive-blank-lines dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-duplicate-definitions dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-duplicate-headings dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-emphasis-as-heading dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-empty-url dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-file-name-articles dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-file-name-consecutive-dashes dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-file-name-irregular-characters dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-file-name-mixed-case dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-file-name-outer-dashes dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-heading-content-indent dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-heading-indent dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-heading-like-paragraph dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-literal-urls dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-multiple-toplevel-headings dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-reference-like-url dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-shell-dollars dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-shortcut-reference-image dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-table-indentation dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-tabs dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-no-unused-definitions dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-ordered-list-marker-style dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-ordered-list-marker-value dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-rule-style dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-strong-marker dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-table-cell-padding dependency-type: direct:development update-type: version-update:semver-minor dependency-group: remark - dependency-name: remark-lint-table-pipe-alignment dependency-type: direct:development update-type: version-update:semver-minor dependency-group: remark - dependency-name: remark-lint-table-pipes dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-lint-unordered-list-marker-style dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-preset-lint-consistent dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-preset-lint-markdown-style-guide dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark - dependency-name: remark-preset-lint-recommended dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remark ... Signed-off-by: dependabot[bot] --- package-lock.json | 795 ++++++++++++++++++++++++---------------------- package.json | 106 +++---- 2 files changed, 477 insertions(+), 424 deletions(-) diff --git a/package-lock.json b/package-lock.json index 686831da48..2951e77495 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,65 +11,65 @@ "remark-cli": "^12.0.1", "remark-frontmatter": "^5.0.0", "remark-heading-gap": "^6.0.0", - "remark-lint": "^10.0.0", - "remark-lint-blockquote-indentation": "^4.0.0", - "remark-lint-checkbox-character-style": "^5.0.0", - "remark-lint-checkbox-content-indent": "^5.0.0", + "remark-lint": "^10.0.1", + "remark-lint-blockquote-indentation": "^4.0.1", + "remark-lint-checkbox-character-style": "^5.0.1", + "remark-lint-checkbox-content-indent": "^5.0.1", "remark-lint-code": "^2.0.0", - "remark-lint-code-block-style": "^4.0.0", - "remark-lint-definition-case": "^4.0.0", - "remark-lint-definition-spacing": "^4.0.0", - "remark-lint-fenced-code-flag": "^4.0.0", - "remark-lint-fenced-code-marker": "^4.0.0", - "remark-lint-file-extension": "^3.0.0", - "remark-lint-final-definition": "^4.0.1", - "remark-lint-final-newline": "^3.0.0", - "remark-lint-hard-break-spaces": "^4.0.0", - "remark-lint-heading-increment": "^4.0.0", - "remark-lint-heading-style": "^4.0.0", + "remark-lint-code-block-style": "^4.0.1", + "remark-lint-definition-case": "^4.0.1", + "remark-lint-definition-spacing": "^4.0.1", + "remark-lint-fenced-code-flag": "^4.1.1", + "remark-lint-fenced-code-marker": "^4.0.1", + "remark-lint-file-extension": "^3.0.1", + "remark-lint-final-definition": "^4.0.2", + "remark-lint-final-newline": "^3.0.1", + "remark-lint-hard-break-spaces": "^4.1.1", + "remark-lint-heading-increment": "^4.0.1", + "remark-lint-heading-style": "^4.0.1", "remark-lint-heading-whitespace": "^1.0.0", - "remark-lint-link-title-style": "^4.0.0", - "remark-lint-list-item-bullet-indent": "^5.0.0", - "remark-lint-list-item-content-indent": "^4.0.0", - "remark-lint-list-item-indent": "^4.0.0", - "remark-lint-maximum-heading-length": "^4.0.0", - "remark-lint-no-blockquote-without-marker": "^6.0.0", - "remark-lint-no-consecutive-blank-lines": "^5.0.0", + "remark-lint-link-title-style": "^4.0.1", + "remark-lint-list-item-bullet-indent": "^5.0.1", + "remark-lint-list-item-content-indent": "^4.0.1", + "remark-lint-list-item-indent": "^4.0.1", + "remark-lint-maximum-heading-length": "^4.1.1", + "remark-lint-no-blockquote-without-marker": "^6.0.1", + "remark-lint-no-consecutive-blank-lines": "^5.0.1", "remark-lint-no-dead-urls": "^2.0.1", - "remark-lint-no-duplicate-definitions": "^4.0.0", - "remark-lint-no-duplicate-headings": "^4.0.0", - "remark-lint-no-emphasis-as-heading": "^4.0.0", + "remark-lint-no-duplicate-definitions": "^4.0.1", + "remark-lint-no-duplicate-headings": "^4.0.1", + "remark-lint-no-emphasis-as-heading": "^4.0.1", "remark-lint-no-empty-sections": "^4.0.0", - "remark-lint-no-empty-url": "^4.0.0", - "remark-lint-no-file-name-articles": "^3.0.0", - "remark-lint-no-file-name-consecutive-dashes": "^3.0.0", - "remark-lint-no-file-name-irregular-characters": "^3.0.0", - "remark-lint-no-file-name-mixed-case": "^3.0.0", - "remark-lint-no-file-name-outer-dashes": "^3.0.0", - "remark-lint-no-heading-content-indent": "^5.0.0", - "remark-lint-no-heading-indent": "^5.0.0", - "remark-lint-no-heading-like-paragraph": "^4.0.0", - "remark-lint-no-literal-urls": "^4.0.0", - "remark-lint-no-multiple-toplevel-headings": "^4.0.0", - "remark-lint-no-reference-like-url": "^4.0.0", + "remark-lint-no-empty-url": "^4.0.1", + "remark-lint-no-file-name-articles": "^3.0.1", + "remark-lint-no-file-name-consecutive-dashes": "^3.0.1", + "remark-lint-no-file-name-irregular-characters": "^3.0.1", + "remark-lint-no-file-name-mixed-case": "^3.0.1", + "remark-lint-no-file-name-outer-dashes": "^3.0.1", + "remark-lint-no-heading-content-indent": "^5.0.1", + "remark-lint-no-heading-indent": "^5.0.1", + "remark-lint-no-heading-like-paragraph": "^4.0.1", + "remark-lint-no-literal-urls": "^4.0.1", + "remark-lint-no-multiple-toplevel-headings": "^4.0.1", + "remark-lint-no-reference-like-url": "^4.0.1", "remark-lint-no-repeat-punctuation": "^0.1.4", - "remark-lint-no-shell-dollars": "^4.0.0", - "remark-lint-no-shortcut-reference-image": "^4.0.0", - "remark-lint-no-table-indentation": "^5.0.0", - "remark-lint-no-tabs": "^4.0.0", - "remark-lint-no-unused-definitions": "^4.0.0", - "remark-lint-ordered-list-marker-style": "^4.0.0", - "remark-lint-ordered-list-marker-value": "^4.0.0", - "remark-lint-rule-style": "^4.0.0", - "remark-lint-strong-marker": "^4.0.0", - "remark-lint-table-cell-padding": "^5.0.0", - "remark-lint-table-pipe-alignment": "^4.0.0", - "remark-lint-table-pipes": "^5.0.0", - "remark-lint-unordered-list-marker-style": "^4.0.0", + "remark-lint-no-shell-dollars": "^4.0.1", + "remark-lint-no-shortcut-reference-image": "^4.0.1", + "remark-lint-no-table-indentation": "^5.0.1", + "remark-lint-no-tabs": "^4.0.1", + "remark-lint-no-unused-definitions": "^4.0.1", + "remark-lint-ordered-list-marker-style": "^4.0.1", + "remark-lint-ordered-list-marker-value": "^4.0.1", + "remark-lint-rule-style": "^4.0.1", + "remark-lint-strong-marker": "^4.0.1", + "remark-lint-table-cell-padding": "^5.1.1", + "remark-lint-table-pipe-alignment": "^4.1.1", + "remark-lint-table-pipes": "^5.0.1", + "remark-lint-unordered-list-marker-style": "^4.0.1", "remark-lint-write-good": "^1.2.0", - "remark-preset-lint-consistent": "^6.0.0", - "remark-preset-lint-markdown-style-guide": "^6.0.0", - "remark-preset-lint-recommended": "^7.0.0", + "remark-preset-lint-consistent": "^6.0.1", + "remark-preset-lint-markdown-style-guide": "^6.0.1", + "remark-preset-lint-recommended": "^7.0.1", "remark-retext": "^6.0.0", "remark-textr": "^6.1.0", "remark-validate-links": "^13.0.2" @@ -5805,10 +5805,11 @@ } }, "node_modules/remark-lint": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-10.0.0.tgz", - "integrity": "sha512-E8yHHDOJ8b+qI0G49BRu24pe8t0fNNBWv8ENQJpCGNrVeTeyBIGEbaUe1yuF7OG8faA6PVpcN/pqWjzW9fcBWQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-10.0.1.tgz", + "integrity": "sha512-1+PYGFziOg4pH7DDf1uMd4AR3YuO2EMnds/SdIWMPGT7CAfDRSnAmpxPsJD0Ds3IKpn97h3d5KPGf1WFOg6hXQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "remark-message-control": "^8.0.0", @@ -5820,10 +5821,11 @@ } }, "node_modules/remark-lint-blockquote-indentation": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-4.0.0.tgz", - "integrity": "sha512-hdUvn+KsJbBKpY9jLY01PmfpJ/WGhLu9GJMXQGU8ADXJc+F5DWSgKAr6GQ1IUKqvGYdEML/KZ61WomWFUuecVA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-4.0.1.tgz", + "integrity": "sha512-7BhOsImFgTD7IIliu2tt+yJbx5gbMbXCOspc3VdYf/87iLJdWKqJoMy2V6DZG7kBjBlBsIZi38fDDngJttXt4w==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-phrasing": "^4.0.0", @@ -5970,10 +5972,11 @@ } }, "node_modules/remark-lint-checkbox-character-style": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-checkbox-character-style/-/remark-lint-checkbox-character-style-5.0.0.tgz", - "integrity": "sha512-K0G/Nok59fb2q5KUxcemBVt+ymnhTkDVLJAatZ4PAh9At8y0DGctHdU27jWsuvO0Fs7Zy62Usk7IJE2VO89p1w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-checkbox-character-style/-/remark-lint-checkbox-character-style-5.0.1.tgz", + "integrity": "sha512-6qilm7XQXOcTvjFEqqNY57Ki7md9rkSdpMIfIzVXdEnI4Npl2BnUff6ANrGRM7qTgJTrloaf8H0eQ91urcU6Og==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-phrasing": "^4.0.0", @@ -6120,10 +6123,11 @@ } }, "node_modules/remark-lint-checkbox-content-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-checkbox-content-indent/-/remark-lint-checkbox-content-indent-5.0.0.tgz", - "integrity": "sha512-7L25a7TEfdogFSh4HDOnB+GTTTEiXJDMlceUPft9bzIjElI8Hm2+a2D8jUQn4ahj+j/3LmdZW4GjAeyfdPuqTA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-checkbox-content-indent/-/remark-lint-checkbox-content-indent-5.0.1.tgz", + "integrity": "sha512-R1gV4vGkgJQZQFIGve1paj4mVDUWlgX0KAHhjNpSyzuwuSIDoxWpEuSJSxcnczESgcjM4yVrZqEGMYi/fqZK0w==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-phrasing": "^4.0.0", @@ -6280,10 +6284,11 @@ } }, "node_modules/remark-lint-code-block-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-4.0.0.tgz", - "integrity": "sha512-LKBKMVruEO0tzDnnnqi1TfUcnwY6Mo7cVtZM4E4pKt3KMhtvgU2wD68/MxDOEJd0pmnLrEgIadv74bY0gWhZpg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-4.0.1.tgz", + "integrity": "sha512-d4mHsEpv1yqXWl2dd+28tGRX0Lzk5qw7cfxAQVkOXPUONhsMFwXJEBeeqZokeG4lOKtkKdIJR7ezScDfWR0X4w==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-phrasing": "^4.0.0", @@ -6467,10 +6472,11 @@ } }, "node_modules/remark-lint-definition-case": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-definition-case/-/remark-lint-definition-case-4.0.0.tgz", - "integrity": "sha512-XBmMmj8ii0KZUuJf7ZaVXDGp2+DWE02re9qn/6mV23rBpsDmpz7U1lQWRlwFQIE5q5bxIxP5pX7hDeTH0Egy9Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-definition-case/-/remark-lint-definition-case-4.0.1.tgz", + "integrity": "sha512-BItJMeXyEBKW/beM7gFLMt3flnyNoRDd8yNFq+7pIeFjO7KWGRxBWUaNgk/tFEPyQcGeCqrNS3nS0ic7qi7I2w==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-phrasing": "^4.0.0", @@ -6602,10 +6608,11 @@ } }, "node_modules/remark-lint-definition-spacing": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-4.0.0.tgz", - "integrity": "sha512-t6nP8unz6z/DLBTWeOmDFHPFbX3E2PbNgt2fTazRbVnMC6z3o25hBzg5hI6DL0MPt2ZTRX++rJsGRjb+vgh/tQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-4.0.1.tgz", + "integrity": "sha512-ZjShKaBUGeHrZyIZWwOZOxX3guj/P7gRR5wbDADQctL4oK+ZLQfOvJFmAsF1nD4gNr0Ficjd0AuiWxQcc1qTMA==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "longest-streak": "^3.0.0", @@ -6888,10 +6895,11 @@ } }, "node_modules/remark-lint-fenced-code-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-4.0.0.tgz", - "integrity": "sha512-Zs0wJd4nRvBo/9NWQVfWg5Ykapbo0Zzw/SyZc3f0h73S1gTZZcfeU+bA5oDivlBdcUgLBsyHRE0QaoaVvN3/Wg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-4.1.1.tgz", + "integrity": "sha512-hKPqowc79jrJL47AfnqDThvE8Q249nHCleR5nxuf9ybriMqcAHYxragKzU5c4W1fNy20bTfFdZz/iAAQAk9kwg==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-phrasing": "^4.0.0", @@ -7038,10 +7046,11 @@ } }, "node_modules/remark-lint-fenced-code-marker": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-4.0.0.tgz", - "integrity": "sha512-WFN88Rx78m4/HSbW3Kx2XAYbVfzYns4bJd9qpwDD90DA3nc59zciYd01xi6Bk3n9vSs5gIlmG7xkwxVHHJ8KCA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-4.0.1.tgz", + "integrity": "sha512-uI91OcVPKjNxV+vpjDW9T64hkE0a/CRn3JhwdMxUAJYpVsKnA7PFPSFJOx/abNsVZHNSe7ZFGgGdaH/lqgSizA==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-phrasing": "^4.0.0", @@ -7188,10 +7197,11 @@ } }, "node_modules/remark-lint-file-extension": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-3.0.0.tgz", - "integrity": "sha512-wrOKiGvcl/ftB7FkeX2/l13ALvhKXV77HGR8AXo86cVY2pD+K0WdOC52DV3ldgpUXpWzE9kcgF8bbkxwzKpFFg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-3.0.1.tgz", + "integrity": "sha512-1Ca5Dgu9J/j1fb7nvzNXh2xy4ija03igiP5i4le64LfrlloGax4VWcG/M7uL+CpRTFVqEJMWw0iKDEZxYSgImg==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "quotation": "^2.0.0", @@ -7295,10 +7305,11 @@ } }, "node_modules/remark-lint-final-definition": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-4.0.1.tgz", - "integrity": "sha512-51T9oSdA7wuhjSdgGo0snO1BY39Igt9cJQi7XpgtgFsbfQk8zSSAUAc/rLabY6+YCTpcPs6qmwvLXZ4mPX6Qlg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-4.0.2.tgz", + "integrity": "sha512-fz3UAcFQef77Zb8rz4za2R6y7pdyJot22iGtFoNIKdtbcNa8IKKEVoY3NIfrsLfhrjwzcha1Sp3fFA9NF6lc4w==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -7447,10 +7458,11 @@ } }, "node_modules/remark-lint-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-final-newline/-/remark-lint-final-newline-3.0.0.tgz", - "integrity": "sha512-NaPyn6FiOn3IV/6gIcwWfJmgraPT2IaVLjhakfPglZkKVfn/FrOfETyY8Bp+HLoSRI9967OH0yRDnK7/pPIWeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-final-newline/-/remark-lint-final-newline-3.0.1.tgz", + "integrity": "sha512-q5diKHD6BMbzqWqgvYPOB8AJgLrMzEMBAprNXjcpKoZ/uCRqly+gxjco+qVUMtMWSd+P+KXZZEqoa7Y6QiOudw==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -7555,10 +7567,11 @@ } }, "node_modules/remark-lint-hard-break-spaces": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-4.0.0.tgz", - "integrity": "sha512-zCTq7/xfM0ZL3bMopXse9DH2nk38wE1LrxmYwnTrqASBLnEAJWE2U2//tRGVMEBfSAnNvmIo96twz6zkLWjbGA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-4.1.1.tgz", + "integrity": "sha512-AKDPDt39fvmr3yk38OKZEWJxxCOOUBE+96AsBfs+ExS5LW6oLa9041X5ahFDQHvHGzdoremEIaaElursaPEkNg==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unified-lint-rule": "^3.0.0", @@ -7718,10 +7731,11 @@ } }, "node_modules/remark-lint-heading-increment": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-heading-increment/-/remark-lint-heading-increment-4.0.0.tgz", - "integrity": "sha512-TARnsjXWzY/yLwxh/y4+KnDSXO3Koue8Crp55T8G9pjj3vw+XgTAG35zSpIIY9HmGiQ2a3R0SOj2pAxATpnckg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-heading-increment/-/remark-lint-heading-increment-4.0.1.tgz", + "integrity": "sha512-uat7RTQn0hGlMv62p7yjLlg3tO3RljFbH6C+0M+5BNEF+s3NrA8jJgqW0UwLLNdCd3EABCKaWloHumT57ND7PQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -7855,10 +7869,11 @@ } }, "node_modules/remark-lint-heading-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-4.0.0.tgz", - "integrity": "sha512-dQ6Jul5K0+aNUvrq4W7H0+osSoC9hsmwHZqBFq000+eMP/hWJqI8tuudw1rap8HHYuOsKLRbB5q+Fr7G+3Vw+Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-4.0.1.tgz", + "integrity": "sha512-+rUpJ/N2CGC5xPgZ18XgsCsUBtadgEhdTi0BJPrsFmHPzL22BUHajeg9im8Y7zphUcbi1qFiKuxZd2nzDgZSXQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-heading-style": "^3.0.0", @@ -8077,10 +8092,11 @@ } }, "node_modules/remark-lint-link-title-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-link-title-style/-/remark-lint-link-title-style-4.0.0.tgz", - "integrity": "sha512-cihTO5dkhjMj/evYIDAvRdQHD82OQeF4fNAq8FLb81HmFKo77VlSF6CK55H1bvlZogfJG58uN/5d1tSsOdcEbg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-link-title-style/-/remark-lint-link-title-style-4.0.1.tgz", + "integrity": "sha512-MtmnYrhjhRXR0zeiyYf/7GBlUF5KAPypJb345KjyDluOhI4Wj4VAXvVQuov/MFc3y8p/1yVwv3QDYv6yue8/wQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unified-lint-rule": "^3.0.0", @@ -8226,10 +8242,11 @@ } }, "node_modules/remark-lint-list-item-bullet-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-bullet-indent/-/remark-lint-list-item-bullet-indent-5.0.0.tgz", - "integrity": "sha512-qq22QaxsDjfsL7aWGIPmP3P0N99CJBQQW1+iSrhYAMCDzqVlw6I3wPNAeR6s8mcoeHT8YlT6eQH3V8xJ0SlW6w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-bullet-indent/-/remark-lint-list-item-bullet-indent-5.0.1.tgz", + "integrity": "sha512-LKuTxkw5aYChzZoF3BkfaBheSCHs0T8n8dPHLQEuOLo6iC5wy98iyryz0KZ61GD8stlZgQO2KdWSdnP6vr40Iw==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "pluralize": "^8.0.0", @@ -8347,10 +8364,11 @@ } }, "node_modules/remark-lint-list-item-content-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-content-indent/-/remark-lint-list-item-content-indent-4.0.0.tgz", - "integrity": "sha512-L4GZgWQQ54qWKbnDle3dbEOtnq+qdmZJ70lpM3yMFEMHs4xejqPKsIoiYeUtIV0rYHHCWS7IlLzcgYUK9vENQw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-content-indent/-/remark-lint-list-item-content-indent-4.0.1.tgz", + "integrity": "sha512-KSopxxp64O6dLuTQ2sWaTqgjKWr1+AoB1QCTektMJ3mfHfn0QyZzC2CZbBU22KGzBhiYXv9cIxlJlxUtq2NqHg==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-phrasing": "^4.0.0", @@ -8498,10 +8516,11 @@ } }, "node_modules/remark-lint-list-item-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-4.0.0.tgz", - "integrity": "sha512-Yd6/g8CH9e4vlPAPNgl7F575uKhP+pTo/qwGkE61GOcgEVNJ/529hjumUhyQ4sOAX0YAPAjxvq6fJvb4AhVOOA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-4.0.1.tgz", + "integrity": "sha512-gJd1Q+jOAeTgmGRsdMpnRh01DUrAm0O5PCQxE8ttv1QZOV015p/qJH+B4N6QSmcUuPokHLAh9USuq05C73qpiA==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-phrasing": "^4.0.0", @@ -8799,10 +8818,11 @@ } }, "node_modules/remark-lint-maximum-heading-length": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-maximum-heading-length/-/remark-lint-maximum-heading-length-4.0.0.tgz", - "integrity": "sha512-UCQxUd0zZyi6RUbpoK5KsxC50ppVqVk0hSgrSPot4wB6PHRgYMALU2fDkEcAjLDc/Y2TayG3IaZEKdqe+84Cwg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/remark-lint-maximum-heading-length/-/remark-lint-maximum-heading-length-4.1.1.tgz", + "integrity": "sha512-99yonukJ+e0uhx0zGH4uq6H9mhO7FA1ufmuToODH1N+X3ja61Grvlvvlq9UbP9+gbfbWgN97QGKPaTlE29FpaQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-mdx": "^3.0.0", @@ -9127,10 +9147,11 @@ } }, "node_modules/remark-lint-no-blockquote-without-marker": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-6.0.0.tgz", - "integrity": "sha512-fBhoTpkWcl5tG4FdwPdJIyb8XLrdr6MdLk1+K2BQ6Rom3rRsIYvuox4ohxOunNrXuth8xyw8kC6wDmODR44oFw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-6.0.1.tgz", + "integrity": "sha512-b4IOkNcG7C16HYAdKUeAhO7qPt45m+v7SeYbVrqvbSFtlD3EUBL8fgHRgLK1mdujFXDP1VguOEMx+Txv8JOT4w==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -9280,10 +9301,11 @@ } }, "node_modules/remark-lint-no-consecutive-blank-lines": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-5.0.0.tgz", - "integrity": "sha512-HsDZbFlelBVO3mEJDXd9v4z0HLB8pqxWnsV+I4ILYFp5lKYf6NxJaLBWFtP1gAg1+95WxityGLkGtYqmicDjpg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-5.0.1.tgz", + "integrity": "sha512-yLtYCrEBtGDao4ozmZruRzjMYAcBVFK69PoYjPfNwFO8pQ/LPt8KCq6oyg1ronNyRbDYEGqVdLIHcT/zL3LjPA==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-directive": "^3.0.0", @@ -9587,10 +9609,11 @@ } }, "node_modules/remark-lint-no-duplicate-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-definitions/-/remark-lint-no-duplicate-definitions-4.0.0.tgz", - "integrity": "sha512-21fcOACkCyhNsHkedKlpvqIywYx+5zGR507bW8e59gzdGhTbnBwQ9du4ACmN9jxPTfIBhUVMz0bWezkGrHE7Bg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-definitions/-/remark-lint-no-duplicate-definitions-4.0.1.tgz", + "integrity": "sha512-Ek+A/xDkv5Nn+BXCFmf+uOrFSajCHj6CjhsHjtROgVUeEPj726yYekDBoDRA0Y3+z+U30AsJoHgf/9Jj1IFSug==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -9724,10 +9747,11 @@ } }, "node_modules/remark-lint-no-duplicate-headings": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-headings/-/remark-lint-no-duplicate-headings-4.0.0.tgz", - "integrity": "sha512-FgBU/JCdR5MitHM+hnOcgBGO5ZCNV8epzuHIglFlJeb8ow23YhhNgmGvyk7RGrZrYuU5R9uQq23N4dF0g9atCA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-headings/-/remark-lint-no-duplicate-headings-4.0.1.tgz", + "integrity": "sha512-6lggqnpIe5FepikjYF2me3ovKV4oD/rAz8WmwVbLR2cLkce1iH+PB7jyxk/A2gQQqrDcIlRMA5Ct2Yj56cEwhQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -9875,10 +9899,11 @@ } }, "node_modules/remark-lint-no-emphasis-as-heading": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-emphasis-as-heading/-/remark-lint-no-emphasis-as-heading-4.0.0.tgz", - "integrity": "sha512-JViGYbuO/xzZThK+qVTNjtLM0v1xMTWFTWt2OJzAkDaGS6T9ZB5ZtRVSBFEMG0SF3dvpJwxe+3ABTsuPBdlYsA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-emphasis-as-heading/-/remark-lint-no-emphasis-as-heading-4.0.1.tgz", + "integrity": "sha512-zzI/C330qdKO9FB3h6IUtOG36FSrS5nfJ7qxp0atXGYtHyg+Ag7dPC/0FzchOVsxofQm0QTstVoIARt/9TiN5g==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-phrasing": "^4.0.0", @@ -10068,10 +10093,11 @@ } }, "node_modules/remark-lint-no-empty-url": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-empty-url/-/remark-lint-no-empty-url-4.0.0.tgz", - "integrity": "sha512-2zJxrSnL42wGe+CSZepBzoj8d/FeL/QU8GM6TEO/5qGfXwvJD7s2v6q074UJU0CAaWlWRqSxElescwk3yGQddA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-empty-url/-/remark-lint-no-empty-url-4.0.1.tgz", + "integrity": "sha512-FSQIO+Q63kNNSUfbvvWPz6ES4q1gJIc4aMjohch9bfKwcv6wWZc6UkjlMMi823I124p6onrY/F8KKECv06H5YQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unified-lint-rule": "^3.0.0", @@ -10202,10 +10228,11 @@ } }, "node_modules/remark-lint-no-file-name-articles": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-3.0.0.tgz", - "integrity": "sha512-il4IseupahbV2TVfFjfDVL/EQw7jBWVlMVsv4K2cgl5uPIjiCjFGQypqKnWl6pZDN0oNOs/DE8gBdyuDjldJaA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-3.0.1.tgz", + "integrity": "sha512-h31ZDDJV2T6g9WLBrXg1CJ1m8M170O/tlDPAEPGCa/rxwKvMcfum4yicaot0ZKbUZ1uEPjVSUPDeo3sU0zciCQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unified-lint-rule": "^3.0.0" @@ -10308,10 +10335,11 @@ } }, "node_modules/remark-lint-no-file-name-consecutive-dashes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-3.0.0.tgz", - "integrity": "sha512-3vSI1LOQlu8NSCpWLsKELa8dS9HU+YVZE0U43/DNkdEcnZmlJLpTHQjBTMZUHQipRgoOO+TOSyXFyN/H+2lbuQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-3.0.1.tgz", + "integrity": "sha512-qGJRZ81sowEjv1dBodbHZ29pDZbrFpxiQQ6gBvkkHkkoYPekdnr8iUxmV38HcqH8+JNW1O4ELr+m71AA9/34Mw==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unified-lint-rule": "^3.0.0" @@ -10414,10 +10442,11 @@ } }, "node_modules/remark-lint-no-file-name-irregular-characters": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-irregular-characters/-/remark-lint-no-file-name-irregular-characters-3.0.0.tgz", - "integrity": "sha512-DhGreliHNU7lLTARQujsaLAn8fUPY0V+H0LSmOUuowBZPtIRWeNdQhunSp96RvsuYdqAdERXe0WuH58i3pRqrg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-irregular-characters/-/remark-lint-no-file-name-irregular-characters-3.0.1.tgz", + "integrity": "sha512-kNm16eDnPqbN05W0RLIedHi40YzHf1esPHbNKv12AljKWptdCTS72uGjAbqUSZ48dRoKtJzL0HJ0OAqXIWUyxA==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unified-lint-rule": "^3.0.0" @@ -10520,10 +10549,11 @@ } }, "node_modules/remark-lint-no-file-name-mixed-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-mixed-case/-/remark-lint-no-file-name-mixed-case-3.0.0.tgz", - "integrity": "sha512-MXXNHdGB6P46itkf8gRP0kxQL85KfAj9YOOBqNtGsgI/8J5rsyM/rz1Ac20Xe+5C5oGi71+7EO/TExKu/+7dfw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-mixed-case/-/remark-lint-no-file-name-mixed-case-3.0.1.tgz", + "integrity": "sha512-cXVY0gM6DIHHK+mUhQVZ/WLh4cNfzEDpM54LNJBnflR9n9r6eNLR3JlWFRviTL4xRrQ5FXisBSlBa87BquiFVA==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unified-lint-rule": "^3.0.0" @@ -10626,10 +10656,11 @@ } }, "node_modules/remark-lint-no-file-name-outer-dashes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-3.0.0.tgz", - "integrity": "sha512-3kgamCp39mdlCtqF/+JLwwS4VpSj5wvVwRythUfrpW7993I9kF67dBsaU545aEzWSK+UJZqjb40i0m2VfnBRfQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-3.0.1.tgz", + "integrity": "sha512-QIMrBPZKZ6BwQRPM65HhEHcJv6+wZnZ4z2ikvx2ht40cSmIN7ZTL7wKKJlnpF+4Ioi9XUj+cRHWqEhwJ9LCQIw==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unified-lint-rule": "^3.0.0" @@ -10732,10 +10763,11 @@ } }, "node_modules/remark-lint-no-heading-content-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-content-indent/-/remark-lint-no-heading-content-indent-5.0.0.tgz", - "integrity": "sha512-psYSlD2BjcVkgpeXOLwPcYFBrbtJWp8E8JX1J4vSfoHPeY6aIxgYxXkf57cjGTApfRL8xawBmMDiF1FgQvpZYg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-content-indent/-/remark-lint-no-heading-content-indent-5.0.1.tgz", + "integrity": "sha512-YIWktnZo7M9aw7PGnHdshvetSH3Y0qW+Fm143R66zsk5lLzn1XA5NEd/MtDzP8tSxxV+gcv+bDd5St1QUI4oSQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-phrasing": "^4.0.0", @@ -10882,10 +10914,11 @@ } }, "node_modules/remark-lint-no-heading-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-indent/-/remark-lint-no-heading-indent-5.0.0.tgz", - "integrity": "sha512-JWGIWhaEzH00HywI0DHex92tJ5Mw7l11shQ6/MGhRjYsHMRWcwWcVeOuktVMe/BiQbg0hRoE4+g0z2VgUD6Cqw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-indent/-/remark-lint-no-heading-indent-5.0.1.tgz", + "integrity": "sha512-R/KkR9Qfh0AM3asadSnQQXMHu6BNZxPbxLI9h9JBPIZM+EtzycDlhaAHbOlQUdaHA5UEANhYENZBLrueH50Cdg==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-phrasing": "^4.0.0", @@ -11032,10 +11065,11 @@ } }, "node_modules/remark-lint-no-heading-like-paragraph": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-like-paragraph/-/remark-lint-no-heading-like-paragraph-4.0.0.tgz", - "integrity": "sha512-6P22xHF+2omrQUA9ujQ5yBUlZr3goaAxoa1t3wNSIydzqkbgwLS+RlpGsVvilW1Q8h4JgWpB42Zpflat6xr90g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-like-paragraph/-/remark-lint-no-heading-like-paragraph-4.0.1.tgz", + "integrity": "sha512-1sscTjv/F/mK5cNThz6fu57xcLgLdB0rl9vJ3BEwh7U4V5cIKp1tdFQhaguweSBnKCjCVaiU7HsEdle01Ai07Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-phrasing": "^4.0.0", @@ -11331,10 +11365,11 @@ } }, "node_modules/remark-lint-no-literal-urls": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-4.0.0.tgz", - "integrity": "sha512-rl/3Ai4Ax9IH/fRpOJZuXk1HgYX6oFTauhmBOilpqbq/YT2kN3FuXaneXdRfKv1bgMdHaLKxHWxGj/mDyA2n8w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-4.0.1.tgz", + "integrity": "sha512-RhTANFkFFXE6bM+WxWcPo2TTPEfkWG3lJZU50ycW7tJJmxUzDNzRed/z80EVJIdGwFa0NntVooLUJp3xrogalQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-string": "^4.0.0", @@ -11494,10 +11529,11 @@ } }, "node_modules/remark-lint-no-multiple-toplevel-headings": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-4.0.0.tgz", - "integrity": "sha512-JW11iYxza7asDdhQuKfr8SH1u4NBOCQ4U7Ru0HrKCPcT4y/AB1C1il5uMQzbcervgYPBq69xzyQ24+AJeL0t3A==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-4.0.1.tgz", + "integrity": "sha512-8sepobIOu3PlDOuMH7jtri+LH4tFNVQU+aqKSkrlNRdp831fYz9S+jA2crTVqWqxVbTwiF96uJWePv8/9qmHnA==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -11631,10 +11667,11 @@ } }, "node_modules/remark-lint-no-reference-like-url": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-reference-like-url/-/remark-lint-no-reference-like-url-4.0.0.tgz", - "integrity": "sha512-YkP8qWdrWDr9s8JLbJoC/U5Z0fU7hpa59Nin0i8zEOtD9coiYoI/YtXRKqSXuAKDmweb+JckhqtKuGJS5u77+w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-reference-like-url/-/remark-lint-no-reference-like-url-4.0.1.tgz", + "integrity": "sha512-GXS73779bPnJSqvCfOK2XzGzCWL5ggyk53KE049oOYTS55vmc26PjeW+ykbGfXIazRazZ1DLGaAqNoU9jCnZ4w==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -11805,10 +11842,11 @@ } }, "node_modules/remark-lint-no-shell-dollars": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-4.0.0.tgz", - "integrity": "sha512-ye2h8FzjsgqqQV0HHN2g9N4FqI3eD9Gpgu7tU5ADIJyQ3mUJdwBoFn7IlGnpmumR1fb/l6u/AhRavIZxXYqG+Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-4.0.1.tgz", + "integrity": "sha512-UPE1DNCIkLtnS3YFD065Gkq5lQqfndBDpX8Ct/Zjn7M0/hzCyf9B6tpwCU0I20m9jzhS/CSY6mxYnAiEg+KkFA==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "collapse-white-space": "^2.0.0", @@ -11941,10 +11979,11 @@ } }, "node_modules/remark-lint-no-shortcut-reference-image": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-4.0.0.tgz", - "integrity": "sha512-YEiCpW5F/8/LZyxlOuVK2L/n0NJ1AB0AJK7oP39OVyEk3Xl7w+JQi6nZ3KiH6REh+PWGqKn6M0KEPL9cT/iAOw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-4.0.1.tgz", + "integrity": "sha512-hQhJ3Dr8ZWRdj7qm6+9vcPpqtGchhENA2UHOmcTraLf6dN1cFATCgY/HbTbRIN6NkG/EEClTgRC1QCokWR2Mmw==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unified-lint-rule": "^3.0.0", @@ -12209,10 +12248,11 @@ } }, "node_modules/remark-lint-no-table-indentation": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-5.0.0.tgz", - "integrity": "sha512-MaLmnzgirpnRiRjWwrsyOX0RmP2eG4YAv169MtsxTVa6O3CpUDwTuTzivudE9L0kVvTlyF9DXEmdyjm85LDyVA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-5.0.1.tgz", + "integrity": "sha512-LHw9MGsuilM+3HkbRFZmdSE4T+sziaQzULH5ImYkLH2MLF8GKnAm2mgtveLZcW01wqFV2oEbpF1Y/s/QloXT7w==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -12361,10 +12401,11 @@ } }, "node_modules/remark-lint-no-tabs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-tabs/-/remark-lint-no-tabs-4.0.0.tgz", - "integrity": "sha512-rQR7LDdcw047ajB3D+v9uzdB8aZfZtEdlUJvQXKkcVDteWiuXGC3PcIrmM/8n3J/wlFMuwoAaW2IcdlJf8HzXQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-tabs/-/remark-lint-no-tabs-4.0.1.tgz", + "integrity": "sha512-+lhGUgY3jhTwWn1x+tTIJNy5Fbs2NcYXCobRY7xeszY0VKPCBF2GyELafOVnr+iTmosXLuhZPp5YwNezQKH9IQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unified-lint-rule": "^3.0.0", @@ -12620,10 +12661,11 @@ } }, "node_modules/remark-lint-no-unused-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-unused-definitions/-/remark-lint-no-unused-definitions-4.0.0.tgz", - "integrity": "sha512-YCZ6k575NCTx7mnN+9ls0G6YgMsZHi0LYQqfLW8MNVHBtbpTBvfmk8I39bmsvuKWeBD98weZoXSDqIiIGg+Q/g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-unused-definitions/-/remark-lint-no-unused-definitions-4.0.1.tgz", + "integrity": "sha512-AdMbaCeMpj32HvDUuyI+bQyu/405Nby/rgFW8XDpI7U7ufPhHl+jj9J4NgeW7Z8DrODGr0iFgPNt6JtNLskFdA==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -12770,10 +12812,11 @@ } }, "node_modules/remark-lint-ordered-list-marker-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-4.0.0.tgz", - "integrity": "sha512-xZ7Xppy5fzACH4b9h1b4lTzVtNY2AlUkNTfl1Oe6cIKN8tk3juFxN0wL2RpktPtSZ7iRIabzFmg6l8WPhlASJA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-4.0.1.tgz", + "integrity": "sha512-vZTAbstcBPbGwJacwldGzdGmKwy5/4r29SZ9nQkME4alEl5B1ReSBlYa8t7QnTSW7+tqvA9Sg71RPadgAKWa4w==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-phrasing": "^4.0.0", @@ -12921,10 +12964,11 @@ } }, "node_modules/remark-lint-ordered-list-marker-value": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-4.0.0.tgz", - "integrity": "sha512-7UjNU2Nv9LGEONTU9GPmTVoNoGKD5aL1X2xHzMbSJiTc50bfcazYqZawO+qj1pQ04WPhto1qHnl0HRB5wwSVwA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-4.0.1.tgz", + "integrity": "sha512-HQb1MrArvApREC1/I6bkiFlZVDjngsuII29n8E8StnAaHOMN3hVYy6wJ9Uk+O3+X9O8v7fDsZPqFUHSfJhERXQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -13073,10 +13117,11 @@ } }, "node_modules/remark-lint-rule-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-4.0.0.tgz", - "integrity": "sha512-Kt7IHMB5IbLgRFKaFUmB895sV3PTD0MBgN9CvXKxr1wHFF43S6tabjFIBSoQqyJRlhH0S3rK6Lvopofa009gLg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-4.0.1.tgz", + "integrity": "sha512-gl1Ft13oTS3dJUCsWZzxD/5dAwI1HON67KU7uNfODD5gXJ8Y11deOWbun190ma7XbYdD7P0l8VT2HeRtEQzrWg==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-phrasing": "^4.0.0", @@ -13223,10 +13268,11 @@ } }, "node_modules/remark-lint-strong-marker": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-4.0.0.tgz", - "integrity": "sha512-YcvuzakYhQWdCH+1E30sUY+wyvq+PNa77NZAMAYO/cS/pZczFB+q4Ccttw4Q+No/chX8oMfe0GYtm8dDWLei/g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-4.0.1.tgz", + "integrity": "sha512-KaGtj/OWEP4eoafevnlp3NsEVwC7yGEjBJ6uFMzfjNoXyjATdfZ2euB/AfKVt/A/FdZeeMeVoAUFH4DL+hScLQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unified-lint-rule": "^3.0.0", @@ -13372,10 +13418,11 @@ } }, "node_modules/remark-lint-table-cell-padding": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-5.0.0.tgz", - "integrity": "sha512-LNyiHDQZBIOqcQGG1tYsZHW7g0v8OyRmRgDrD5WEsMaAYfM6EiECUokN/Q4py9h4oM/2KUSrdZbtfuZmy87/kA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-5.1.1.tgz", + "integrity": "sha512-6fgVA1iINBoAJaZMOnSsxrF9Qj9+hmCqrsrqZqgJJETjT1ODGH64iAN1/6vHR7dIwmy73d6ysB2WrGyKhVlK3A==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -13525,10 +13572,11 @@ } }, "node_modules/remark-lint-table-pipe-alignment": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-table-pipe-alignment/-/remark-lint-table-pipe-alignment-4.0.0.tgz", - "integrity": "sha512-nx+xpEIWQRLOcq9hIbUIvhSE1NYRmDJmCY3cMoHJ1sIW7dRXMHyWfpWTgu7mpREKwSQdE0q4qnzk8McQQSkIcg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/remark-lint-table-pipe-alignment/-/remark-lint-table-pipe-alignment-4.1.1.tgz", + "integrity": "sha512-9VxivIJaDonrd/Jgkim1oYQ5MIqhWmyJggr2AqtiizwqxT4epRsWmLOz+/sk7PtTGoT/MtwndhlbM3lxuVXFow==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -13677,10 +13725,11 @@ } }, "node_modules/remark-lint-table-pipes": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-5.0.0.tgz", - "integrity": "sha512-e7jzAScDrt5+eMomh099TZJBN2K9ldDxBu9iYhNu5C0YsdAvnckJkgilsuClxFpmx4LCVYaX0EGbt/hQ3LB3xg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-5.0.1.tgz", + "integrity": "sha512-oOkRC0WRRDwvodfffGafoBFBTGwy9udQgKtxN53apmZpOmaUAxTi833ite0jMo078+LehNftO5bxrElZ9EQUlQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -13827,10 +13876,11 @@ } }, "node_modules/remark-lint-unordered-list-marker-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-4.0.0.tgz", - "integrity": "sha512-XlP4Wr4KJNovyWVv0H5axfUlF23iE9Kt2SxaVq4+ieum5YcMmKE6KsL+aqt3kiJb60SH1u6a0bxKFvdM/9riOA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-4.0.1.tgz", + "integrity": "sha512-HMrVQC0Qbr8ktSy+1lJGRGU10qecL3T14L6s/THEQXR5Tk0wcsLLG0auNvB4r2+H+ClhVO/Vnm1TEosh1OCsfw==", "dev": true, + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-phrasing": "^4.0.0", @@ -14267,10 +14317,11 @@ } }, "node_modules/remark-preset-lint-consistent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/remark-preset-lint-consistent/-/remark-preset-lint-consistent-6.0.0.tgz", - "integrity": "sha512-W3fwxajdietwjnFyTH5x2le63hxWGVOXxIs7KjRqU+5wkkN6ZQyuwPeeomblmS9wQr50fkidhXNHNDyCXtqgxQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/remark-preset-lint-consistent/-/remark-preset-lint-consistent-6.0.1.tgz", + "integrity": "sha512-SOLdA36UOU1hiGFm6HAqN9+DORGJPVWxU/EvPVkknTr9V4ULhlzHEJ8OVRMVX3jqoy4lrwb4IqiboVz0YLA7+Q==", "dev": true, + "license": "MIT", "dependencies": { "remark-lint": "^10.0.0", "remark-lint-blockquote-indentation": "^4.0.0", @@ -14361,10 +14412,11 @@ } }, "node_modules/remark-preset-lint-markdown-style-guide": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/remark-preset-lint-markdown-style-guide/-/remark-preset-lint-markdown-style-guide-6.0.0.tgz", - "integrity": "sha512-izsfNTHeqrRP64VWV6OdJnSUDwKFSthMKiiDcu14ODpPV0t7YiotCQWzgc7L4eW9Ctcp4aB4nHNLSuDmwhEWrQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/remark-preset-lint-markdown-style-guide/-/remark-preset-lint-markdown-style-guide-6.0.1.tgz", + "integrity": "sha512-hVCRMC8PZlI9hnXkZdrvg4n4j1aD//xHWj26Q7iFAbDB3JKtW1Ne72P7QNVyppmdrR6Gj84zhG3qphOLo8/i8A==", "dev": true, + "license": "MIT", "dependencies": { "remark-lint": "^10.0.0", "remark-lint-blockquote-indentation": "^4.0.0", @@ -14484,10 +14536,11 @@ } }, "node_modules/remark-preset-lint-recommended": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/remark-preset-lint-recommended/-/remark-preset-lint-recommended-7.0.0.tgz", - "integrity": "sha512-A9aPDL78OO12xG2a83DVd+M2QzdBMjn545fbXj40BFJdpt9t//MADkPAwRfpMCBkKi+iECPUTFCb3Jm8SsFG2w==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/remark-preset-lint-recommended/-/remark-preset-lint-recommended-7.0.1.tgz", + "integrity": "sha512-j1CY5u48PtZl872BQ40uWSQMT3R4gXKp0FUgevMu5gW7hFMtvaCiDq+BfhzeR8XKKiW9nIMZGfIMZHostz5X4g==", "dev": true, + "license": "MIT", "dependencies": { "remark-lint": "^10.0.0", "remark-lint-final-newline": "^3.0.0", @@ -20876,9 +20929,9 @@ } }, "remark-lint": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-10.0.0.tgz", - "integrity": "sha512-E8yHHDOJ8b+qI0G49BRu24pe8t0fNNBWv8ENQJpCGNrVeTeyBIGEbaUe1yuF7OG8faA6PVpcN/pqWjzW9fcBWQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-10.0.1.tgz", + "integrity": "sha512-1+PYGFziOg4pH7DDf1uMd4AR3YuO2EMnds/SdIWMPGT7CAfDRSnAmpxPsJD0Ds3IKpn97h3d5KPGf1WFOg6hXQ==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -20949,9 +21002,9 @@ } }, "remark-lint-blockquote-indentation": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-4.0.0.tgz", - "integrity": "sha512-hdUvn+KsJbBKpY9jLY01PmfpJ/WGhLu9GJMXQGU8ADXJc+F5DWSgKAr6GQ1IUKqvGYdEML/KZ61WomWFUuecVA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-4.0.1.tgz", + "integrity": "sha512-7BhOsImFgTD7IIliu2tt+yJbx5gbMbXCOspc3VdYf/87iLJdWKqJoMy2V6DZG7kBjBlBsIZi38fDDngJttXt4w==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -21065,9 +21118,9 @@ } }, "remark-lint-checkbox-character-style": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-checkbox-character-style/-/remark-lint-checkbox-character-style-5.0.0.tgz", - "integrity": "sha512-K0G/Nok59fb2q5KUxcemBVt+ymnhTkDVLJAatZ4PAh9At8y0DGctHdU27jWsuvO0Fs7Zy62Usk7IJE2VO89p1w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-checkbox-character-style/-/remark-lint-checkbox-character-style-5.0.1.tgz", + "integrity": "sha512-6qilm7XQXOcTvjFEqqNY57Ki7md9rkSdpMIfIzVXdEnI4Npl2BnUff6ANrGRM7qTgJTrloaf8H0eQ91urcU6Og==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -21181,9 +21234,9 @@ } }, "remark-lint-checkbox-content-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-checkbox-content-indent/-/remark-lint-checkbox-content-indent-5.0.0.tgz", - "integrity": "sha512-7L25a7TEfdogFSh4HDOnB+GTTTEiXJDMlceUPft9bzIjElI8Hm2+a2D8jUQn4ahj+j/3LmdZW4GjAeyfdPuqTA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-checkbox-content-indent/-/remark-lint-checkbox-content-indent-5.0.1.tgz", + "integrity": "sha512-R1gV4vGkgJQZQFIGve1paj4mVDUWlgX0KAHhjNpSyzuwuSIDoxWpEuSJSxcnczESgcjM4yVrZqEGMYi/fqZK0w==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -21342,9 +21395,9 @@ } }, "remark-lint-code-block-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-4.0.0.tgz", - "integrity": "sha512-LKBKMVruEO0tzDnnnqi1TfUcnwY6Mo7cVtZM4E4pKt3KMhtvgU2wD68/MxDOEJd0pmnLrEgIadv74bY0gWhZpg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-4.0.1.tgz", + "integrity": "sha512-d4mHsEpv1yqXWl2dd+28tGRX0Lzk5qw7cfxAQVkOXPUONhsMFwXJEBeeqZokeG4lOKtkKdIJR7ezScDfWR0X4w==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -21458,9 +21511,9 @@ } }, "remark-lint-definition-case": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-definition-case/-/remark-lint-definition-case-4.0.0.tgz", - "integrity": "sha512-XBmMmj8ii0KZUuJf7ZaVXDGp2+DWE02re9qn/6mV23rBpsDmpz7U1lQWRlwFQIE5q5bxIxP5pX7hDeTH0Egy9Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-definition-case/-/remark-lint-definition-case-4.0.1.tgz", + "integrity": "sha512-BItJMeXyEBKW/beM7gFLMt3flnyNoRDd8yNFq+7pIeFjO7KWGRxBWUaNgk/tFEPyQcGeCqrNS3nS0ic7qi7I2w==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -21563,9 +21616,9 @@ } }, "remark-lint-definition-spacing": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-4.0.0.tgz", - "integrity": "sha512-t6nP8unz6z/DLBTWeOmDFHPFbX3E2PbNgt2fTazRbVnMC6z3o25hBzg5hI6DL0MPt2ZTRX++rJsGRjb+vgh/tQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-4.0.1.tgz", + "integrity": "sha512-ZjShKaBUGeHrZyIZWwOZOxX3guj/P7gRR5wbDADQctL4oK+ZLQfOvJFmAsF1nD4gNr0Ficjd0AuiWxQcc1qTMA==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -21785,9 +21838,9 @@ } }, "remark-lint-fenced-code-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-4.0.0.tgz", - "integrity": "sha512-Zs0wJd4nRvBo/9NWQVfWg5Ykapbo0Zzw/SyZc3f0h73S1gTZZcfeU+bA5oDivlBdcUgLBsyHRE0QaoaVvN3/Wg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-4.1.1.tgz", + "integrity": "sha512-hKPqowc79jrJL47AfnqDThvE8Q249nHCleR5nxuf9ybriMqcAHYxragKzU5c4W1fNy20bTfFdZz/iAAQAk9kwg==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -21901,9 +21954,9 @@ } }, "remark-lint-fenced-code-marker": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-4.0.0.tgz", - "integrity": "sha512-WFN88Rx78m4/HSbW3Kx2XAYbVfzYns4bJd9qpwDD90DA3nc59zciYd01xi6Bk3n9vSs5gIlmG7xkwxVHHJ8KCA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-4.0.1.tgz", + "integrity": "sha512-uI91OcVPKjNxV+vpjDW9T64hkE0a/CRn3JhwdMxUAJYpVsKnA7PFPSFJOx/abNsVZHNSe7ZFGgGdaH/lqgSizA==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -22017,9 +22070,9 @@ } }, "remark-lint-file-extension": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-3.0.0.tgz", - "integrity": "sha512-wrOKiGvcl/ftB7FkeX2/l13ALvhKXV77HGR8AXo86cVY2pD+K0WdOC52DV3ldgpUXpWzE9kcgF8bbkxwzKpFFg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-3.0.1.tgz", + "integrity": "sha512-1Ca5Dgu9J/j1fb7nvzNXh2xy4ija03igiP5i4le64LfrlloGax4VWcG/M7uL+CpRTFVqEJMWw0iKDEZxYSgImg==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -22102,9 +22155,9 @@ } }, "remark-lint-final-definition": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-4.0.1.tgz", - "integrity": "sha512-51T9oSdA7wuhjSdgGo0snO1BY39Igt9cJQi7XpgtgFsbfQk8zSSAUAc/rLabY6+YCTpcPs6qmwvLXZ4mPX6Qlg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-4.0.2.tgz", + "integrity": "sha512-fz3UAcFQef77Zb8rz4za2R6y7pdyJot22iGtFoNIKdtbcNa8IKKEVoY3NIfrsLfhrjwzcha1Sp3fFA9NF6lc4w==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -22220,9 +22273,9 @@ } }, "remark-lint-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-final-newline/-/remark-lint-final-newline-3.0.0.tgz", - "integrity": "sha512-NaPyn6FiOn3IV/6gIcwWfJmgraPT2IaVLjhakfPglZkKVfn/FrOfETyY8Bp+HLoSRI9967OH0yRDnK7/pPIWeQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-final-newline/-/remark-lint-final-newline-3.0.1.tgz", + "integrity": "sha512-q5diKHD6BMbzqWqgvYPOB8AJgLrMzEMBAprNXjcpKoZ/uCRqly+gxjco+qVUMtMWSd+P+KXZZEqoa7Y6QiOudw==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -22306,9 +22359,9 @@ } }, "remark-lint-hard-break-spaces": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-4.0.0.tgz", - "integrity": "sha512-zCTq7/xfM0ZL3bMopXse9DH2nk38wE1LrxmYwnTrqASBLnEAJWE2U2//tRGVMEBfSAnNvmIo96twz6zkLWjbGA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-4.1.1.tgz", + "integrity": "sha512-AKDPDt39fvmr3yk38OKZEWJxxCOOUBE+96AsBfs+ExS5LW6oLa9041X5ahFDQHvHGzdoremEIaaElursaPEkNg==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -22431,9 +22484,9 @@ } }, "remark-lint-heading-increment": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-heading-increment/-/remark-lint-heading-increment-4.0.0.tgz", - "integrity": "sha512-TARnsjXWzY/yLwxh/y4+KnDSXO3Koue8Crp55T8G9pjj3vw+XgTAG35zSpIIY9HmGiQ2a3R0SOj2pAxATpnckg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-heading-increment/-/remark-lint-heading-increment-4.0.1.tgz", + "integrity": "sha512-uat7RTQn0hGlMv62p7yjLlg3tO3RljFbH6C+0M+5BNEF+s3NrA8jJgqW0UwLLNdCd3EABCKaWloHumT57ND7PQ==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -22538,9 +22591,9 @@ } }, "remark-lint-heading-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-4.0.0.tgz", - "integrity": "sha512-dQ6Jul5K0+aNUvrq4W7H0+osSoC9hsmwHZqBFq000+eMP/hWJqI8tuudw1rap8HHYuOsKLRbB5q+Fr7G+3Vw+Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-4.0.1.tgz", + "integrity": "sha512-+rUpJ/N2CGC5xPgZ18XgsCsUBtadgEhdTi0BJPrsFmHPzL22BUHajeg9im8Y7zphUcbi1qFiKuxZd2nzDgZSXQ==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -22716,9 +22769,9 @@ } }, "remark-lint-link-title-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-link-title-style/-/remark-lint-link-title-style-4.0.0.tgz", - "integrity": "sha512-cihTO5dkhjMj/evYIDAvRdQHD82OQeF4fNAq8FLb81HmFKo77VlSF6CK55H1bvlZogfJG58uN/5d1tSsOdcEbg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-link-title-style/-/remark-lint-link-title-style-4.0.1.tgz", + "integrity": "sha512-MtmnYrhjhRXR0zeiyYf/7GBlUF5KAPypJb345KjyDluOhI4Wj4VAXvVQuov/MFc3y8p/1yVwv3QDYv6yue8/wQ==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -22831,9 +22884,9 @@ } }, "remark-lint-list-item-bullet-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-bullet-indent/-/remark-lint-list-item-bullet-indent-5.0.0.tgz", - "integrity": "sha512-qq22QaxsDjfsL7aWGIPmP3P0N99CJBQQW1+iSrhYAMCDzqVlw6I3wPNAeR6s8mcoeHT8YlT6eQH3V8xJ0SlW6w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-bullet-indent/-/remark-lint-list-item-bullet-indent-5.0.1.tgz", + "integrity": "sha512-LKuTxkw5aYChzZoF3BkfaBheSCHs0T8n8dPHLQEuOLo6iC5wy98iyryz0KZ61GD8stlZgQO2KdWSdnP6vr40Iw==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -22926,9 +22979,9 @@ } }, "remark-lint-list-item-content-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-content-indent/-/remark-lint-list-item-content-indent-4.0.0.tgz", - "integrity": "sha512-L4GZgWQQ54qWKbnDle3dbEOtnq+qdmZJ70lpM3yMFEMHs4xejqPKsIoiYeUtIV0rYHHCWS7IlLzcgYUK9vENQw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-content-indent/-/remark-lint-list-item-content-indent-4.0.1.tgz", + "integrity": "sha512-KSopxxp64O6dLuTQ2sWaTqgjKWr1+AoB1QCTektMJ3mfHfn0QyZzC2CZbBU22KGzBhiYXv9cIxlJlxUtq2NqHg==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -23043,9 +23096,9 @@ } }, "remark-lint-list-item-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-4.0.0.tgz", - "integrity": "sha512-Yd6/g8CH9e4vlPAPNgl7F575uKhP+pTo/qwGkE61GOcgEVNJ/529hjumUhyQ4sOAX0YAPAjxvq6fJvb4AhVOOA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-4.0.1.tgz", + "integrity": "sha512-gJd1Q+jOAeTgmGRsdMpnRh01DUrAm0O5PCQxE8ttv1QZOV015p/qJH+B4N6QSmcUuPokHLAh9USuq05C73qpiA==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -23276,9 +23329,9 @@ } }, "remark-lint-maximum-heading-length": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-maximum-heading-length/-/remark-lint-maximum-heading-length-4.0.0.tgz", - "integrity": "sha512-UCQxUd0zZyi6RUbpoK5KsxC50ppVqVk0hSgrSPot4wB6PHRgYMALU2fDkEcAjLDc/Y2TayG3IaZEKdqe+84Cwg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/remark-lint-maximum-heading-length/-/remark-lint-maximum-heading-length-4.1.1.tgz", + "integrity": "sha512-99yonukJ+e0uhx0zGH4uq6H9mhO7FA1ufmuToODH1N+X3ja61Grvlvvlq9UbP9+gbfbWgN97QGKPaTlE29FpaQ==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -23528,9 +23581,9 @@ } }, "remark-lint-no-blockquote-without-marker": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-6.0.0.tgz", - "integrity": "sha512-fBhoTpkWcl5tG4FdwPdJIyb8XLrdr6MdLk1+K2BQ6Rom3rRsIYvuox4ohxOunNrXuth8xyw8kC6wDmODR44oFw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-6.0.1.tgz", + "integrity": "sha512-b4IOkNcG7C16HYAdKUeAhO7qPt45m+v7SeYbVrqvbSFtlD3EUBL8fgHRgLK1mdujFXDP1VguOEMx+Txv8JOT4w==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -23647,9 +23700,9 @@ } }, "remark-lint-no-consecutive-blank-lines": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-5.0.0.tgz", - "integrity": "sha512-HsDZbFlelBVO3mEJDXd9v4z0HLB8pqxWnsV+I4ILYFp5lKYf6NxJaLBWFtP1gAg1+95WxityGLkGtYqmicDjpg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-5.0.1.tgz", + "integrity": "sha512-yLtYCrEBtGDao4ozmZruRzjMYAcBVFK69PoYjPfNwFO8pQ/LPt8KCq6oyg1ronNyRbDYEGqVdLIHcT/zL3LjPA==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -23886,9 +23939,9 @@ } }, "remark-lint-no-duplicate-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-definitions/-/remark-lint-no-duplicate-definitions-4.0.0.tgz", - "integrity": "sha512-21fcOACkCyhNsHkedKlpvqIywYx+5zGR507bW8e59gzdGhTbnBwQ9du4ACmN9jxPTfIBhUVMz0bWezkGrHE7Bg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-definitions/-/remark-lint-no-duplicate-definitions-4.0.1.tgz", + "integrity": "sha512-Ek+A/xDkv5Nn+BXCFmf+uOrFSajCHj6CjhsHjtROgVUeEPj726yYekDBoDRA0Y3+z+U30AsJoHgf/9Jj1IFSug==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -23993,9 +24046,9 @@ } }, "remark-lint-no-duplicate-headings": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-headings/-/remark-lint-no-duplicate-headings-4.0.0.tgz", - "integrity": "sha512-FgBU/JCdR5MitHM+hnOcgBGO5ZCNV8epzuHIglFlJeb8ow23YhhNgmGvyk7RGrZrYuU5R9uQq23N4dF0g9atCA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-headings/-/remark-lint-no-duplicate-headings-4.0.1.tgz", + "integrity": "sha512-6lggqnpIe5FepikjYF2me3ovKV4oD/rAz8WmwVbLR2cLkce1iH+PB7jyxk/A2gQQqrDcIlRMA5Ct2Yj56cEwhQ==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -24110,9 +24163,9 @@ } }, "remark-lint-no-emphasis-as-heading": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-emphasis-as-heading/-/remark-lint-no-emphasis-as-heading-4.0.0.tgz", - "integrity": "sha512-JViGYbuO/xzZThK+qVTNjtLM0v1xMTWFTWt2OJzAkDaGS6T9ZB5ZtRVSBFEMG0SF3dvpJwxe+3ABTsuPBdlYsA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-emphasis-as-heading/-/remark-lint-no-emphasis-as-heading-4.0.1.tgz", + "integrity": "sha512-zzI/C330qdKO9FB3h6IUtOG36FSrS5nfJ7qxp0atXGYtHyg+Ag7dPC/0FzchOVsxofQm0QTstVoIARt/9TiN5g==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -24267,9 +24320,9 @@ } }, "remark-lint-no-empty-url": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-empty-url/-/remark-lint-no-empty-url-4.0.0.tgz", - "integrity": "sha512-2zJxrSnL42wGe+CSZepBzoj8d/FeL/QU8GM6TEO/5qGfXwvJD7s2v6q074UJU0CAaWlWRqSxElescwk3yGQddA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-empty-url/-/remark-lint-no-empty-url-4.0.1.tgz", + "integrity": "sha512-FSQIO+Q63kNNSUfbvvWPz6ES4q1gJIc4aMjohch9bfKwcv6wWZc6UkjlMMi823I124p6onrY/F8KKECv06H5YQ==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -24371,9 +24424,9 @@ } }, "remark-lint-no-file-name-articles": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-3.0.0.tgz", - "integrity": "sha512-il4IseupahbV2TVfFjfDVL/EQw7jBWVlMVsv4K2cgl5uPIjiCjFGQypqKnWl6pZDN0oNOs/DE8gBdyuDjldJaA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-3.0.1.tgz", + "integrity": "sha512-h31ZDDJV2T6g9WLBrXg1CJ1m8M170O/tlDPAEPGCa/rxwKvMcfum4yicaot0ZKbUZ1uEPjVSUPDeo3sU0zciCQ==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -24455,9 +24508,9 @@ } }, "remark-lint-no-file-name-consecutive-dashes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-3.0.0.tgz", - "integrity": "sha512-3vSI1LOQlu8NSCpWLsKELa8dS9HU+YVZE0U43/DNkdEcnZmlJLpTHQjBTMZUHQipRgoOO+TOSyXFyN/H+2lbuQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-3.0.1.tgz", + "integrity": "sha512-qGJRZ81sowEjv1dBodbHZ29pDZbrFpxiQQ6gBvkkHkkoYPekdnr8iUxmV38HcqH8+JNW1O4ELr+m71AA9/34Mw==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -24539,9 +24592,9 @@ } }, "remark-lint-no-file-name-irregular-characters": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-irregular-characters/-/remark-lint-no-file-name-irregular-characters-3.0.0.tgz", - "integrity": "sha512-DhGreliHNU7lLTARQujsaLAn8fUPY0V+H0LSmOUuowBZPtIRWeNdQhunSp96RvsuYdqAdERXe0WuH58i3pRqrg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-irregular-characters/-/remark-lint-no-file-name-irregular-characters-3.0.1.tgz", + "integrity": "sha512-kNm16eDnPqbN05W0RLIedHi40YzHf1esPHbNKv12AljKWptdCTS72uGjAbqUSZ48dRoKtJzL0HJ0OAqXIWUyxA==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -24623,9 +24676,9 @@ } }, "remark-lint-no-file-name-mixed-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-mixed-case/-/remark-lint-no-file-name-mixed-case-3.0.0.tgz", - "integrity": "sha512-MXXNHdGB6P46itkf8gRP0kxQL85KfAj9YOOBqNtGsgI/8J5rsyM/rz1Ac20Xe+5C5oGi71+7EO/TExKu/+7dfw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-mixed-case/-/remark-lint-no-file-name-mixed-case-3.0.1.tgz", + "integrity": "sha512-cXVY0gM6DIHHK+mUhQVZ/WLh4cNfzEDpM54LNJBnflR9n9r6eNLR3JlWFRviTL4xRrQ5FXisBSlBa87BquiFVA==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -24707,9 +24760,9 @@ } }, "remark-lint-no-file-name-outer-dashes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-3.0.0.tgz", - "integrity": "sha512-3kgamCp39mdlCtqF/+JLwwS4VpSj5wvVwRythUfrpW7993I9kF67dBsaU545aEzWSK+UJZqjb40i0m2VfnBRfQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-3.0.1.tgz", + "integrity": "sha512-QIMrBPZKZ6BwQRPM65HhEHcJv6+wZnZ4z2ikvx2ht40cSmIN7ZTL7wKKJlnpF+4Ioi9XUj+cRHWqEhwJ9LCQIw==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -24791,9 +24844,9 @@ } }, "remark-lint-no-heading-content-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-content-indent/-/remark-lint-no-heading-content-indent-5.0.0.tgz", - "integrity": "sha512-psYSlD2BjcVkgpeXOLwPcYFBrbtJWp8E8JX1J4vSfoHPeY6aIxgYxXkf57cjGTApfRL8xawBmMDiF1FgQvpZYg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-content-indent/-/remark-lint-no-heading-content-indent-5.0.1.tgz", + "integrity": "sha512-YIWktnZo7M9aw7PGnHdshvetSH3Y0qW+Fm143R66zsk5lLzn1XA5NEd/MtDzP8tSxxV+gcv+bDd5St1QUI4oSQ==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -24907,9 +24960,9 @@ } }, "remark-lint-no-heading-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-indent/-/remark-lint-no-heading-indent-5.0.0.tgz", - "integrity": "sha512-JWGIWhaEzH00HywI0DHex92tJ5Mw7l11shQ6/MGhRjYsHMRWcwWcVeOuktVMe/BiQbg0hRoE4+g0z2VgUD6Cqw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-indent/-/remark-lint-no-heading-indent-5.0.1.tgz", + "integrity": "sha512-R/KkR9Qfh0AM3asadSnQQXMHu6BNZxPbxLI9h9JBPIZM+EtzycDlhaAHbOlQUdaHA5UEANhYENZBLrueH50Cdg==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -25023,9 +25076,9 @@ } }, "remark-lint-no-heading-like-paragraph": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-heading-like-paragraph/-/remark-lint-no-heading-like-paragraph-4.0.0.tgz", - "integrity": "sha512-6P22xHF+2omrQUA9ujQ5yBUlZr3goaAxoa1t3wNSIydzqkbgwLS+RlpGsVvilW1Q8h4JgWpB42Zpflat6xr90g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-like-paragraph/-/remark-lint-no-heading-like-paragraph-4.0.1.tgz", + "integrity": "sha512-1sscTjv/F/mK5cNThz6fu57xcLgLdB0rl9vJ3BEwh7U4V5cIKp1tdFQhaguweSBnKCjCVaiU7HsEdle01Ai07Q==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -25254,9 +25307,9 @@ } }, "remark-lint-no-literal-urls": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-4.0.0.tgz", - "integrity": "sha512-rl/3Ai4Ax9IH/fRpOJZuXk1HgYX6oFTauhmBOilpqbq/YT2kN3FuXaneXdRfKv1bgMdHaLKxHWxGj/mDyA2n8w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-4.0.1.tgz", + "integrity": "sha512-RhTANFkFFXE6bM+WxWcPo2TTPEfkWG3lJZU50ycW7tJJmxUzDNzRed/z80EVJIdGwFa0NntVooLUJp3xrogalQ==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -25379,9 +25432,9 @@ } }, "remark-lint-no-multiple-toplevel-headings": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-4.0.0.tgz", - "integrity": "sha512-JW11iYxza7asDdhQuKfr8SH1u4NBOCQ4U7Ru0HrKCPcT4y/AB1C1il5uMQzbcervgYPBq69xzyQ24+AJeL0t3A==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-4.0.1.tgz", + "integrity": "sha512-8sepobIOu3PlDOuMH7jtri+LH4tFNVQU+aqKSkrlNRdp831fYz9S+jA2crTVqWqxVbTwiF96uJWePv8/9qmHnA==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -25486,9 +25539,9 @@ } }, "remark-lint-no-reference-like-url": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-reference-like-url/-/remark-lint-no-reference-like-url-4.0.0.tgz", - "integrity": "sha512-YkP8qWdrWDr9s8JLbJoC/U5Z0fU7hpa59Nin0i8zEOtD9coiYoI/YtXRKqSXuAKDmweb+JckhqtKuGJS5u77+w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-reference-like-url/-/remark-lint-no-reference-like-url-4.0.1.tgz", + "integrity": "sha512-GXS73779bPnJSqvCfOK2XzGzCWL5ggyk53KE049oOYTS55vmc26PjeW+ykbGfXIazRazZ1DLGaAqNoU9jCnZ4w==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -25624,9 +25677,9 @@ } }, "remark-lint-no-shell-dollars": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-4.0.0.tgz", - "integrity": "sha512-ye2h8FzjsgqqQV0HHN2g9N4FqI3eD9Gpgu7tU5ADIJyQ3mUJdwBoFn7IlGnpmumR1fb/l6u/AhRavIZxXYqG+Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-4.0.1.tgz", + "integrity": "sha512-UPE1DNCIkLtnS3YFD065Gkq5lQqfndBDpX8Ct/Zjn7M0/hzCyf9B6tpwCU0I20m9jzhS/CSY6mxYnAiEg+KkFA==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -25730,9 +25783,9 @@ } }, "remark-lint-no-shortcut-reference-image": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-4.0.0.tgz", - "integrity": "sha512-YEiCpW5F/8/LZyxlOuVK2L/n0NJ1AB0AJK7oP39OVyEk3Xl7w+JQi6nZ3KiH6REh+PWGqKn6M0KEPL9cT/iAOw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-4.0.1.tgz", + "integrity": "sha512-hQhJ3Dr8ZWRdj7qm6+9vcPpqtGchhENA2UHOmcTraLf6dN1cFATCgY/HbTbRIN6NkG/EEClTgRC1QCokWR2Mmw==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -25938,9 +25991,9 @@ } }, "remark-lint-no-table-indentation": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-5.0.0.tgz", - "integrity": "sha512-MaLmnzgirpnRiRjWwrsyOX0RmP2eG4YAv169MtsxTVa6O3CpUDwTuTzivudE9L0kVvTlyF9DXEmdyjm85LDyVA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-5.0.1.tgz", + "integrity": "sha512-LHw9MGsuilM+3HkbRFZmdSE4T+sziaQzULH5ImYkLH2MLF8GKnAm2mgtveLZcW01wqFV2oEbpF1Y/s/QloXT7w==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -26056,9 +26109,9 @@ } }, "remark-lint-no-tabs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-tabs/-/remark-lint-no-tabs-4.0.0.tgz", - "integrity": "sha512-rQR7LDdcw047ajB3D+v9uzdB8aZfZtEdlUJvQXKkcVDteWiuXGC3PcIrmM/8n3J/wlFMuwoAaW2IcdlJf8HzXQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-tabs/-/remark-lint-no-tabs-4.0.1.tgz", + "integrity": "sha512-+lhGUgY3jhTwWn1x+tTIJNy5Fbs2NcYXCobRY7xeszY0VKPCBF2GyELafOVnr+iTmosXLuhZPp5YwNezQKH9IQ==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -26259,9 +26312,9 @@ } }, "remark-lint-no-unused-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-no-unused-definitions/-/remark-lint-no-unused-definitions-4.0.0.tgz", - "integrity": "sha512-YCZ6k575NCTx7mnN+9ls0G6YgMsZHi0LYQqfLW8MNVHBtbpTBvfmk8I39bmsvuKWeBD98weZoXSDqIiIGg+Q/g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-no-unused-definitions/-/remark-lint-no-unused-definitions-4.0.1.tgz", + "integrity": "sha512-AdMbaCeMpj32HvDUuyI+bQyu/405Nby/rgFW8XDpI7U7ufPhHl+jj9J4NgeW7Z8DrODGr0iFgPNt6JtNLskFdA==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -26375,9 +26428,9 @@ } }, "remark-lint-ordered-list-marker-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-4.0.0.tgz", - "integrity": "sha512-xZ7Xppy5fzACH4b9h1b4lTzVtNY2AlUkNTfl1Oe6cIKN8tk3juFxN0wL2RpktPtSZ7iRIabzFmg6l8WPhlASJA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-4.0.1.tgz", + "integrity": "sha512-vZTAbstcBPbGwJacwldGzdGmKwy5/4r29SZ9nQkME4alEl5B1ReSBlYa8t7QnTSW7+tqvA9Sg71RPadgAKWa4w==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -26492,9 +26545,9 @@ } }, "remark-lint-ordered-list-marker-value": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-4.0.0.tgz", - "integrity": "sha512-7UjNU2Nv9LGEONTU9GPmTVoNoGKD5aL1X2xHzMbSJiTc50bfcazYqZawO+qj1pQ04WPhto1qHnl0HRB5wwSVwA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-4.0.1.tgz", + "integrity": "sha512-HQb1MrArvApREC1/I6bkiFlZVDjngsuII29n8E8StnAaHOMN3hVYy6wJ9Uk+O3+X9O8v7fDsZPqFUHSfJhERXQ==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -26610,9 +26663,9 @@ } }, "remark-lint-rule-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-4.0.0.tgz", - "integrity": "sha512-Kt7IHMB5IbLgRFKaFUmB895sV3PTD0MBgN9CvXKxr1wHFF43S6tabjFIBSoQqyJRlhH0S3rK6Lvopofa009gLg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-4.0.1.tgz", + "integrity": "sha512-gl1Ft13oTS3dJUCsWZzxD/5dAwI1HON67KU7uNfODD5gXJ8Y11deOWbun190ma7XbYdD7P0l8VT2HeRtEQzrWg==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -26726,9 +26779,9 @@ } }, "remark-lint-strong-marker": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-4.0.0.tgz", - "integrity": "sha512-YcvuzakYhQWdCH+1E30sUY+wyvq+PNa77NZAMAYO/cS/pZczFB+q4Ccttw4Q+No/chX8oMfe0GYtm8dDWLei/g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-4.0.1.tgz", + "integrity": "sha512-KaGtj/OWEP4eoafevnlp3NsEVwC7yGEjBJ6uFMzfjNoXyjATdfZ2euB/AfKVt/A/FdZeeMeVoAUFH4DL+hScLQ==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -26841,9 +26894,9 @@ } }, "remark-lint-table-cell-padding": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-5.0.0.tgz", - "integrity": "sha512-LNyiHDQZBIOqcQGG1tYsZHW7g0v8OyRmRgDrD5WEsMaAYfM6EiECUokN/Q4py9h4oM/2KUSrdZbtfuZmy87/kA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-5.1.1.tgz", + "integrity": "sha512-6fgVA1iINBoAJaZMOnSsxrF9Qj9+hmCqrsrqZqgJJETjT1ODGH64iAN1/6vHR7dIwmy73d6ysB2WrGyKhVlK3A==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -26960,9 +27013,9 @@ } }, "remark-lint-table-pipe-alignment": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-table-pipe-alignment/-/remark-lint-table-pipe-alignment-4.0.0.tgz", - "integrity": "sha512-nx+xpEIWQRLOcq9hIbUIvhSE1NYRmDJmCY3cMoHJ1sIW7dRXMHyWfpWTgu7mpREKwSQdE0q4qnzk8McQQSkIcg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/remark-lint-table-pipe-alignment/-/remark-lint-table-pipe-alignment-4.1.1.tgz", + "integrity": "sha512-9VxivIJaDonrd/Jgkim1oYQ5MIqhWmyJggr2AqtiizwqxT4epRsWmLOz+/sk7PtTGoT/MtwndhlbM3lxuVXFow==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -27078,9 +27131,9 @@ } }, "remark-lint-table-pipes": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-5.0.0.tgz", - "integrity": "sha512-e7jzAScDrt5+eMomh099TZJBN2K9ldDxBu9iYhNu5C0YsdAvnckJkgilsuClxFpmx4LCVYaX0EGbt/hQ3LB3xg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-5.0.1.tgz", + "integrity": "sha512-oOkRC0WRRDwvodfffGafoBFBTGwy9udQgKtxN53apmZpOmaUAxTi833ite0jMo078+LehNftO5bxrElZ9EQUlQ==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -27194,9 +27247,9 @@ } }, "remark-lint-unordered-list-marker-style": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-4.0.0.tgz", - "integrity": "sha512-XlP4Wr4KJNovyWVv0H5axfUlF23iE9Kt2SxaVq4+ieum5YcMmKE6KsL+aqt3kiJb60SH1u6a0bxKFvdM/9riOA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-4.0.1.tgz", + "integrity": "sha512-HMrVQC0Qbr8ktSy+1lJGRGU10qecL3T14L6s/THEQXR5Tk0wcsLLG0auNvB4r2+H+ClhVO/Vnm1TEosh1OCsfw==", "dev": true, "requires": { "@types/mdast": "^4.0.0", @@ -27490,9 +27543,9 @@ } }, "remark-preset-lint-consistent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/remark-preset-lint-consistent/-/remark-preset-lint-consistent-6.0.0.tgz", - "integrity": "sha512-W3fwxajdietwjnFyTH5x2le63hxWGVOXxIs7KjRqU+5wkkN6ZQyuwPeeomblmS9wQr50fkidhXNHNDyCXtqgxQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/remark-preset-lint-consistent/-/remark-preset-lint-consistent-6.0.1.tgz", + "integrity": "sha512-SOLdA36UOU1hiGFm6HAqN9+DORGJPVWxU/EvPVkknTr9V4ULhlzHEJ8OVRMVX3jqoy4lrwb4IqiboVz0YLA7+Q==", "dev": true, "requires": { "remark-lint": "^10.0.0", @@ -27566,9 +27619,9 @@ } }, "remark-preset-lint-markdown-style-guide": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/remark-preset-lint-markdown-style-guide/-/remark-preset-lint-markdown-style-guide-6.0.0.tgz", - "integrity": "sha512-izsfNTHeqrRP64VWV6OdJnSUDwKFSthMKiiDcu14ODpPV0t7YiotCQWzgc7L4eW9Ctcp4aB4nHNLSuDmwhEWrQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/remark-preset-lint-markdown-style-guide/-/remark-preset-lint-markdown-style-guide-6.0.1.tgz", + "integrity": "sha512-hVCRMC8PZlI9hnXkZdrvg4n4j1aD//xHWj26Q7iFAbDB3JKtW1Ne72P7QNVyppmdrR6Gj84zhG3qphOLo8/i8A==", "dev": true, "requires": { "remark-lint": "^10.0.0", @@ -27671,9 +27724,9 @@ } }, "remark-preset-lint-recommended": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/remark-preset-lint-recommended/-/remark-preset-lint-recommended-7.0.0.tgz", - "integrity": "sha512-A9aPDL78OO12xG2a83DVd+M2QzdBMjn545fbXj40BFJdpt9t//MADkPAwRfpMCBkKi+iECPUTFCb3Jm8SsFG2w==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/remark-preset-lint-recommended/-/remark-preset-lint-recommended-7.0.1.tgz", + "integrity": "sha512-j1CY5u48PtZl872BQ40uWSQMT3R4gXKp0FUgevMu5gW7hFMtvaCiDq+BfhzeR8XKKiW9nIMZGfIMZHostz5X4g==", "dev": true, "requires": { "remark-lint": "^10.0.0", diff --git a/package.json b/package.json index 244d6aae0d..9f93b4bc98 100644 --- a/package.json +++ b/package.json @@ -32,65 +32,65 @@ "remark-cli": "^12.0.1", "remark-frontmatter": "^5.0.0", "remark-heading-gap": "^6.0.0", - "remark-lint": "^10.0.0", - "remark-lint-blockquote-indentation": "^4.0.0", - "remark-lint-checkbox-character-style": "^5.0.0", - "remark-lint-checkbox-content-indent": "^5.0.0", + "remark-lint": "^10.0.1", + "remark-lint-blockquote-indentation": "^4.0.1", + "remark-lint-checkbox-character-style": "^5.0.1", + "remark-lint-checkbox-content-indent": "^5.0.1", "remark-lint-code": "^2.0.0", - "remark-lint-code-block-style": "^4.0.0", - "remark-lint-definition-case": "^4.0.0", - "remark-lint-definition-spacing": "^4.0.0", - "remark-lint-fenced-code-flag": "^4.0.0", - "remark-lint-fenced-code-marker": "^4.0.0", - "remark-lint-file-extension": "^3.0.0", - "remark-lint-final-definition": "^4.0.1", - "remark-lint-final-newline": "^3.0.0", - "remark-lint-hard-break-spaces": "^4.0.0", - "remark-lint-heading-increment": "^4.0.0", - "remark-lint-heading-style": "^4.0.0", + "remark-lint-code-block-style": "^4.0.1", + "remark-lint-definition-case": "^4.0.1", + "remark-lint-definition-spacing": "^4.0.1", + "remark-lint-fenced-code-flag": "^4.1.1", + "remark-lint-fenced-code-marker": "^4.0.1", + "remark-lint-file-extension": "^3.0.1", + "remark-lint-final-definition": "^4.0.2", + "remark-lint-final-newline": "^3.0.1", + "remark-lint-hard-break-spaces": "^4.1.1", + "remark-lint-heading-increment": "^4.0.1", + "remark-lint-heading-style": "^4.0.1", "remark-lint-heading-whitespace": "^1.0.0", - "remark-lint-link-title-style": "^4.0.0", - "remark-lint-list-item-bullet-indent": "^5.0.0", - "remark-lint-list-item-content-indent": "^4.0.0", - "remark-lint-list-item-indent": "^4.0.0", - "remark-lint-maximum-heading-length": "^4.0.0", - "remark-lint-no-blockquote-without-marker": "^6.0.0", - "remark-lint-no-consecutive-blank-lines": "^5.0.0", + "remark-lint-link-title-style": "^4.0.1", + "remark-lint-list-item-bullet-indent": "^5.0.1", + "remark-lint-list-item-content-indent": "^4.0.1", + "remark-lint-list-item-indent": "^4.0.1", + "remark-lint-maximum-heading-length": "^4.1.1", + "remark-lint-no-blockquote-without-marker": "^6.0.1", + "remark-lint-no-consecutive-blank-lines": "^5.0.1", "remark-lint-no-dead-urls": "^2.0.1", - "remark-lint-no-duplicate-definitions": "^4.0.0", - "remark-lint-no-duplicate-headings": "^4.0.0", - "remark-lint-no-emphasis-as-heading": "^4.0.0", + "remark-lint-no-duplicate-definitions": "^4.0.1", + "remark-lint-no-duplicate-headings": "^4.0.1", + "remark-lint-no-emphasis-as-heading": "^4.0.1", "remark-lint-no-empty-sections": "^4.0.0", - "remark-lint-no-empty-url": "^4.0.0", - "remark-lint-no-file-name-articles": "^3.0.0", - "remark-lint-no-file-name-consecutive-dashes": "^3.0.0", - "remark-lint-no-file-name-irregular-characters": "^3.0.0", - "remark-lint-no-file-name-mixed-case": "^3.0.0", - "remark-lint-no-file-name-outer-dashes": "^3.0.0", - "remark-lint-no-heading-content-indent": "^5.0.0", - "remark-lint-no-heading-indent": "^5.0.0", - "remark-lint-no-heading-like-paragraph": "^4.0.0", - "remark-lint-no-literal-urls": "^4.0.0", - "remark-lint-no-multiple-toplevel-headings": "^4.0.0", - "remark-lint-no-reference-like-url": "^4.0.0", + "remark-lint-no-empty-url": "^4.0.1", + "remark-lint-no-file-name-articles": "^3.0.1", + "remark-lint-no-file-name-consecutive-dashes": "^3.0.1", + "remark-lint-no-file-name-irregular-characters": "^3.0.1", + "remark-lint-no-file-name-mixed-case": "^3.0.1", + "remark-lint-no-file-name-outer-dashes": "^3.0.1", + "remark-lint-no-heading-content-indent": "^5.0.1", + "remark-lint-no-heading-indent": "^5.0.1", + "remark-lint-no-heading-like-paragraph": "^4.0.1", + "remark-lint-no-literal-urls": "^4.0.1", + "remark-lint-no-multiple-toplevel-headings": "^4.0.1", + "remark-lint-no-reference-like-url": "^4.0.1", "remark-lint-no-repeat-punctuation": "^0.1.4", - "remark-lint-no-shell-dollars": "^4.0.0", - "remark-lint-no-shortcut-reference-image": "^4.0.0", - "remark-lint-no-table-indentation": "^5.0.0", - "remark-lint-no-tabs": "^4.0.0", - "remark-lint-no-unused-definitions": "^4.0.0", - "remark-lint-ordered-list-marker-style": "^4.0.0", - "remark-lint-ordered-list-marker-value": "^4.0.0", - "remark-lint-rule-style": "^4.0.0", - "remark-lint-strong-marker": "^4.0.0", - "remark-lint-table-cell-padding": "^5.0.0", - "remark-lint-table-pipe-alignment": "^4.0.0", - "remark-lint-table-pipes": "^5.0.0", - "remark-lint-unordered-list-marker-style": "^4.0.0", + "remark-lint-no-shell-dollars": "^4.0.1", + "remark-lint-no-shortcut-reference-image": "^4.0.1", + "remark-lint-no-table-indentation": "^5.0.1", + "remark-lint-no-tabs": "^4.0.1", + "remark-lint-no-unused-definitions": "^4.0.1", + "remark-lint-ordered-list-marker-style": "^4.0.1", + "remark-lint-ordered-list-marker-value": "^4.0.1", + "remark-lint-rule-style": "^4.0.1", + "remark-lint-strong-marker": "^4.0.1", + "remark-lint-table-cell-padding": "^5.1.1", + "remark-lint-table-pipe-alignment": "^4.1.1", + "remark-lint-table-pipes": "^5.0.1", + "remark-lint-unordered-list-marker-style": "^4.0.1", "remark-lint-write-good": "^1.2.0", - "remark-preset-lint-consistent": "^6.0.0", - "remark-preset-lint-markdown-style-guide": "^6.0.0", - "remark-preset-lint-recommended": "^7.0.0", + "remark-preset-lint-consistent": "^6.0.1", + "remark-preset-lint-markdown-style-guide": "^6.0.1", + "remark-preset-lint-recommended": "^7.0.1", "remark-retext": "^6.0.0", "remark-textr": "^6.1.0", "remark-validate-links": "^13.0.2" From 972ce7138792faf19fc76e12c8f1d0cdf8a6b992 Mon Sep 17 00:00:00 2001 From: Stefan Schick Date: Thu, 30 Jan 2025 15:49:04 +0100 Subject: [PATCH 346/544] Add Test and add EnumConverter --- src/GitVersion.App.Tests/ArgumentParserTests.cs | 7 +++++++ src/GitVersion.App/OverrideConfigurationOptionParser.cs | 4 +++- .../VersionCalculation/VersionStrategies.cs | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/GitVersion.App.Tests/ArgumentParserTests.cs b/src/GitVersion.App.Tests/ArgumentParserTests.cs index 6569742bb3..f4c5d197e1 100644 --- a/src/GitVersion.App.Tests/ArgumentParserTests.cs +++ b/src/GitVersion.App.Tests/ArgumentParserTests.cs @@ -533,6 +533,13 @@ private static IEnumerable OverrideConfigWithSingleOptionTestData( UpdateBuildNumber = true } ); + yield return new TestCaseData( + "strategies=[\"None\",\"Mainline\"]", + new GitVersionConfiguration() + { + VersionStrategies = [ VersionStrategies.None, VersionStrategies.Mainline] + } + ); } [TestCaseSource(nameof(OverrideConfigWithMultipleOptionsTestData))] diff --git a/src/GitVersion.App/OverrideConfigurationOptionParser.cs b/src/GitVersion.App/OverrideConfigurationOptionParser.cs index 9b85428f71..1d4d6fa985 100644 --- a/src/GitVersion.App/OverrideConfigurationOptionParser.cs +++ b/src/GitVersion.App/OverrideConfigurationOptionParser.cs @@ -1,4 +1,5 @@ using GitVersion.Configuration; +using GitVersion.VersionCalculation; namespace GitVersion; @@ -45,7 +46,8 @@ private static bool IsSupportedPropertyType(Type propertyType) return unwrappedType == typeof(string) || unwrappedType.IsEnum || unwrappedType == typeof(int) - || unwrappedType == typeof(bool); + || unwrappedType == typeof(bool) + || unwrappedType == typeof(VersionStrategies[]); } internal void SetValue(string key, string value) => overrideConfiguration[key] = QuotedStringHelpers.UnquoteText(value); diff --git a/src/GitVersion.Core/VersionCalculation/VersionStrategies.cs b/src/GitVersion.Core/VersionCalculation/VersionStrategies.cs index 4fe020c87a..4bef24d860 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionStrategies.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionStrategies.cs @@ -1,6 +1,7 @@ namespace GitVersion.VersionCalculation; [Flags] +[JsonConverter(typeof(JsonStringEnumConverter))] public enum VersionStrategies { None = 0, From 72df047fc20f9d9a5b076f9481820b8e8bb93396 Mon Sep 17 00:00:00 2001 From: Stefan Schick Date: Fri, 31 Jan 2025 12:53:22 +0100 Subject: [PATCH 347/544] Implement custom deserializer --- .../ConfigurationSerializer.cs | 2 ++ src/GitVersion.Core/GitVersion.Core.csproj | 1 + src/GitVersion.Core/PublicAPI.Shipped.txt | 6 ++++ .../VersionCalculation/VersionStrategies.cs | 1 - .../VersionStrategiesConverter.cs | 34 +++++++++++++++++++ 5 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs diff --git a/src/GitVersion.Configuration/ConfigurationSerializer.cs b/src/GitVersion.Configuration/ConfigurationSerializer.cs index df18446214..bb87dce97a 100644 --- a/src/GitVersion.Configuration/ConfigurationSerializer.cs +++ b/src/GitVersion.Configuration/ConfigurationSerializer.cs @@ -1,3 +1,4 @@ +using GitVersion.VersionCalculation; using YamlDotNet.Serialization; using YamlDotNet.Serialization.NamingConventions; using YamlDotNet.Serialization.TypeInspectors; @@ -8,6 +9,7 @@ internal class ConfigurationSerializer : IConfigurationSerializer { private static IDeserializer Deserializer => new DeserializerBuilder() .WithNamingConvention(HyphenatedNamingConvention.Instance) + .WithTypeConverter(VersionStrategiesConverter.Instance) .WithTypeInspector(inspector => new JsonPropertyNameInspector(inspector)) .Build(); diff --git a/src/GitVersion.Core/GitVersion.Core.csproj b/src/GitVersion.Core/GitVersion.Core.csproj index a11a076110..5f82cba761 100644 --- a/src/GitVersion.Core/GitVersion.Core.csproj +++ b/src/GitVersion.Core/GitVersion.Core.csproj @@ -15,6 +15,7 @@ + diff --git a/src/GitVersion.Core/PublicAPI.Shipped.txt b/src/GitVersion.Core/PublicAPI.Shipped.txt index e8e7ed46a5..ea6aeafe73 100644 --- a/src/GitVersion.Core/PublicAPI.Shipped.txt +++ b/src/GitVersion.Core/PublicAPI.Shipped.txt @@ -707,6 +707,12 @@ GitVersion.VersionCalculation.VersionStrategies.None = 0 -> GitVersion.VersionCa GitVersion.VersionCalculation.VersionStrategies.TaggedCommit = 8 -> GitVersion.VersionCalculation.VersionStrategies GitVersion.VersionCalculation.VersionStrategies.TrackReleaseBranches = 16 -> GitVersion.VersionCalculation.VersionStrategies GitVersion.VersionCalculation.VersionStrategies.VersionInBranchName = 32 -> GitVersion.VersionCalculation.VersionStrategies +GitVersion.VersionCalculation.VersionStrategiesConverter +GitVersion.VersionCalculation.VersionStrategiesConverter.VersionStrategiesConverter() -> void +static readonly GitVersion.VersionCalculation.VersionStrategiesConverter.Instance -> YamlDotNet.Serialization.IYamlTypeConverter! +GitVersion.VersionCalculation.VersionStrategiesConverter.Accepts(System.Type type) -> bool +GitVersion.VersionCalculation.VersionStrategiesConverter.ReadYaml(YamlDotNet.Core.IParser! parser, System.Type! type, YamlDotNet.Serialization.ObjectDeserializer! rootDeserializer) -> object? +GitVersion.VersionCalculation.VersionStrategiesConverter.WriteYaml(YamlDotNet.Core.IEmitter! emitter, object? value, System.Type! type, YamlDotNet.Serialization.ObjectSerializer! serializer) -> void GitVersion.VersionCalculation.VersionStrategyModule GitVersion.VersionCalculation.VersionStrategyModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void GitVersion.VersionCalculation.VersionStrategyModule.VersionStrategyModule() -> void diff --git a/src/GitVersion.Core/VersionCalculation/VersionStrategies.cs b/src/GitVersion.Core/VersionCalculation/VersionStrategies.cs index 4bef24d860..4fe020c87a 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionStrategies.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionStrategies.cs @@ -1,7 +1,6 @@ namespace GitVersion.VersionCalculation; [Flags] -[JsonConverter(typeof(JsonStringEnumConverter))] public enum VersionStrategies { None = 0, diff --git a/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs b/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs new file mode 100644 index 0000000000..fe67c5b42b --- /dev/null +++ b/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs @@ -0,0 +1,34 @@ +using YamlDotNet.Core; +using YamlDotNet.Core.Events; +using YamlDotNet.Serialization; +using YamlDotNet.Serialization.NamingConventions; + +namespace GitVersion.VersionCalculation; + +public class VersionStrategiesConverter : IYamlTypeConverter +{ + public static readonly IYamlTypeConverter Instance = new VersionStrategiesConverter(); + + public bool Accepts(Type type) + { + return type == typeof(VersionStrategies[]); + } + + public object? ReadYaml(IParser parser, Type type, ObjectDeserializer rootDeserializer) + { + string data = parser.Consume().Value; + + var deserializer = new DeserializerBuilder() + .WithNamingConvention(UnderscoredNamingConvention.Instance) // see height_in_inches in sample yml + .Build(); + + VersionStrategies[] strategies = deserializer.Deserialize(data); + + return strategies; + } + + public void WriteYaml(IEmitter emitter, object? value, Type type, ObjectSerializer serializer) + { + // Convert from an object to text during serialization. + } +} From 1bad89ada2fe3869e76a2e9a5b8637a925cc60ec Mon Sep 17 00:00:00 2001 From: Stefan Schick Date: Fri, 31 Jan 2025 13:23:37 +0100 Subject: [PATCH 348/544] Add throw statement for serialization --- .../VersionCalculation/VersionStrategiesConverter.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs b/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs index fe67c5b42b..cefc60403b 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs @@ -30,5 +30,6 @@ public bool Accepts(Type type) public void WriteYaml(IEmitter emitter, object? value, Type type, ObjectSerializer serializer) { // Convert from an object to text during serialization. + throw new NotImplementedException(); } } From 8adfe8d39678ffd93301e85adb7816f882c3ffeb Mon Sep 17 00:00:00 2001 From: Stefan Schick Date: Fri, 31 Jan 2025 15:44:56 +0100 Subject: [PATCH 349/544] Implement Serialization --- .../VersionCalculation/VersionStrategiesConverter.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs b/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs index cefc60403b..fc8ada9478 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs @@ -29,7 +29,15 @@ public bool Accepts(Type type) public void WriteYaml(IEmitter emitter, object? value, Type type, ObjectSerializer serializer) { - // Convert from an object to text during serialization. - throw new NotImplementedException(); + VersionStrategies[] strategies = (VersionStrategies[])value!; + + var s = new SerializerBuilder() + .JsonCompatible() // <- Looks good + //.WithDefaultScalarStyle(ScalarStyle.DoubleQuoted) + //.WithNamingConvention(CamelCaseNamingConvention.Instance) + .Build(); + var data = s.Serialize(strategies); + + emitter.Emit(new Scalar(data)); } } From eaa470dab7761b7a484ab92d43a4ccf4b3d4660c Mon Sep 17 00:00:00 2001 From: Stefan Schick Date: Fri, 31 Jan 2025 16:37:36 +0100 Subject: [PATCH 350/544] Extend converter --- .../VersionStrategiesConverter.cs | 38 ++++++++++++------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs b/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs index fc8ada9478..e115ca5056 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs @@ -9,22 +9,34 @@ public class VersionStrategiesConverter : IYamlTypeConverter { public static readonly IYamlTypeConverter Instance = new VersionStrategiesConverter(); - public bool Accepts(Type type) - { - return type == typeof(VersionStrategies[]); - } + public bool Accepts(Type type) => type == typeof(VersionStrategies[]); public object? ReadYaml(IParser parser, Type type, ObjectDeserializer rootDeserializer) { - string data = parser.Consume().Value; - - var deserializer = new DeserializerBuilder() - .WithNamingConvention(UnderscoredNamingConvention.Instance) // see height_in_inches in sample yml - .Build(); - - VersionStrategies[] strategies = deserializer.Deserialize(data); - - return strategies; + List strategies = new(); + + if (parser.TryConsume(out var _)) + { + while (!parser.TryConsume(out var _)) + { + string data = parser.Consume().Value; + + var strategy = Enum.Parse(data); + strategies.Add(strategy); + } + } + else + { + string data = parser.Consume().Value; + + var deserializer = new DeserializerBuilder() + .WithNamingConvention(UnderscoredNamingConvention.Instance) // see height_in_inches in sample yml + .Build(); + + strategies = deserializer.Deserialize>(data); + } + + return strategies.ToArray(); } public void WriteYaml(IEmitter emitter, object? value, Type type, ObjectSerializer serializer) From de6e886b390a63dab6dd6d8c753261b4bb2b91d3 Mon Sep 17 00:00:00 2001 From: Stefan Schick Date: Mon, 3 Feb 2025 08:36:12 +0100 Subject: [PATCH 351/544] Remove comments --- .../VersionCalculation/VersionStrategiesConverter.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs b/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs index e115ca5056..0718238ff7 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs @@ -30,7 +30,7 @@ public class VersionStrategiesConverter : IYamlTypeConverter string data = parser.Consume().Value; var deserializer = new DeserializerBuilder() - .WithNamingConvention(UnderscoredNamingConvention.Instance) // see height_in_inches in sample yml + .WithNamingConvention(UnderscoredNamingConvention.Instance) .Build(); strategies = deserializer.Deserialize>(data); @@ -44,9 +44,7 @@ public void WriteYaml(IEmitter emitter, object? value, Type type, ObjectSerializ VersionStrategies[] strategies = (VersionStrategies[])value!; var s = new SerializerBuilder() - .JsonCompatible() // <- Looks good - //.WithDefaultScalarStyle(ScalarStyle.DoubleQuoted) - //.WithNamingConvention(CamelCaseNamingConvention.Instance) + .JsonCompatible() .Build(); var data = s.Serialize(strategies); From 81267646bc82270bee9a67c8a3a628ba43b01d77 Mon Sep 17 00:00:00 2001 From: Stefan Schick Date: Mon, 3 Feb 2025 09:03:42 +0100 Subject: [PATCH 352/544] Add nullability annotation for public API --- src/GitVersion.Core/PublicAPI.Shipped.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GitVersion.Core/PublicAPI.Shipped.txt b/src/GitVersion.Core/PublicAPI.Shipped.txt index ea6aeafe73..b1101b9c68 100644 --- a/src/GitVersion.Core/PublicAPI.Shipped.txt +++ b/src/GitVersion.Core/PublicAPI.Shipped.txt @@ -710,7 +710,7 @@ GitVersion.VersionCalculation.VersionStrategies.VersionInBranchName = 32 -> GitV GitVersion.VersionCalculation.VersionStrategiesConverter GitVersion.VersionCalculation.VersionStrategiesConverter.VersionStrategiesConverter() -> void static readonly GitVersion.VersionCalculation.VersionStrategiesConverter.Instance -> YamlDotNet.Serialization.IYamlTypeConverter! -GitVersion.VersionCalculation.VersionStrategiesConverter.Accepts(System.Type type) -> bool +GitVersion.VersionCalculation.VersionStrategiesConverter.Accepts(System.Type! type) -> bool GitVersion.VersionCalculation.VersionStrategiesConverter.ReadYaml(YamlDotNet.Core.IParser! parser, System.Type! type, YamlDotNet.Serialization.ObjectDeserializer! rootDeserializer) -> object? GitVersion.VersionCalculation.VersionStrategiesConverter.WriteYaml(YamlDotNet.Core.IEmitter! emitter, object? value, System.Type! type, YamlDotNet.Serialization.ObjectSerializer! serializer) -> void GitVersion.VersionCalculation.VersionStrategyModule From bd6b03c627f54f7c80e28911cfdfa93c0ebafa06 Mon Sep 17 00:00:00 2001 From: Stefan Schick Date: Mon, 3 Feb 2025 09:12:53 +0100 Subject: [PATCH 353/544] Fix formatting issue in test --- src/GitVersion.App.Tests/ArgumentParserTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/GitVersion.App.Tests/ArgumentParserTests.cs b/src/GitVersion.App.Tests/ArgumentParserTests.cs index f4c5d197e1..c9d678043a 100644 --- a/src/GitVersion.App.Tests/ArgumentParserTests.cs +++ b/src/GitVersion.App.Tests/ArgumentParserTests.cs @@ -535,9 +535,9 @@ private static IEnumerable OverrideConfigWithSingleOptionTestData( ); yield return new TestCaseData( "strategies=[\"None\",\"Mainline\"]", - new GitVersionConfiguration() + new GitVersionConfiguration { - VersionStrategies = [ VersionStrategies.None, VersionStrategies.Mainline] + VersionStrategies = [VersionStrategies.None, VersionStrategies.Mainline] } ); } From 3e74e07dc01a03b00cdc1b424970ad71946e3dcd Mon Sep 17 00:00:00 2001 From: Stefan Schick Date: Tue, 4 Feb 2025 09:40:42 +0100 Subject: [PATCH 354/544] Move VersionStrategiesConverter to GitVersion.Configuration --- src/GitVersion.Configuration/ConfigurationSerializer.cs | 1 - .../VersionStrategiesConverter.cs | 5 +++-- src/GitVersion.Core/GitVersion.Core.csproj | 1 - src/GitVersion.Core/PublicAPI.Shipped.txt | 6 ------ 4 files changed, 3 insertions(+), 10 deletions(-) rename src/{GitVersion.Core/VersionCalculation => GitVersion.Configuration}/VersionStrategiesConverter.cs (91%) diff --git a/src/GitVersion.Configuration/ConfigurationSerializer.cs b/src/GitVersion.Configuration/ConfigurationSerializer.cs index bb87dce97a..9d66d0012c 100644 --- a/src/GitVersion.Configuration/ConfigurationSerializer.cs +++ b/src/GitVersion.Configuration/ConfigurationSerializer.cs @@ -1,4 +1,3 @@ -using GitVersion.VersionCalculation; using YamlDotNet.Serialization; using YamlDotNet.Serialization.NamingConventions; using YamlDotNet.Serialization.TypeInspectors; diff --git a/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs b/src/GitVersion.Configuration/VersionStrategiesConverter.cs similarity index 91% rename from src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs rename to src/GitVersion.Configuration/VersionStrategiesConverter.cs index 0718238ff7..7d790154cf 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionStrategiesConverter.cs +++ b/src/GitVersion.Configuration/VersionStrategiesConverter.cs @@ -1,11 +1,12 @@ +using GitVersion.VersionCalculation; using YamlDotNet.Core; using YamlDotNet.Core.Events; using YamlDotNet.Serialization; using YamlDotNet.Serialization.NamingConventions; -namespace GitVersion.VersionCalculation; +namespace GitVersion.Configuration; -public class VersionStrategiesConverter : IYamlTypeConverter +internal class VersionStrategiesConverter : IYamlTypeConverter { public static readonly IYamlTypeConverter Instance = new VersionStrategiesConverter(); diff --git a/src/GitVersion.Core/GitVersion.Core.csproj b/src/GitVersion.Core/GitVersion.Core.csproj index 5f82cba761..a11a076110 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/PublicAPI.Shipped.txt b/src/GitVersion.Core/PublicAPI.Shipped.txt index b1101b9c68..e8e7ed46a5 100644 --- a/src/GitVersion.Core/PublicAPI.Shipped.txt +++ b/src/GitVersion.Core/PublicAPI.Shipped.txt @@ -707,12 +707,6 @@ GitVersion.VersionCalculation.VersionStrategies.None = 0 -> GitVersion.VersionCa GitVersion.VersionCalculation.VersionStrategies.TaggedCommit = 8 -> GitVersion.VersionCalculation.VersionStrategies GitVersion.VersionCalculation.VersionStrategies.TrackReleaseBranches = 16 -> GitVersion.VersionCalculation.VersionStrategies GitVersion.VersionCalculation.VersionStrategies.VersionInBranchName = 32 -> GitVersion.VersionCalculation.VersionStrategies -GitVersion.VersionCalculation.VersionStrategiesConverter -GitVersion.VersionCalculation.VersionStrategiesConverter.VersionStrategiesConverter() -> void -static readonly GitVersion.VersionCalculation.VersionStrategiesConverter.Instance -> YamlDotNet.Serialization.IYamlTypeConverter! -GitVersion.VersionCalculation.VersionStrategiesConverter.Accepts(System.Type! type) -> bool -GitVersion.VersionCalculation.VersionStrategiesConverter.ReadYaml(YamlDotNet.Core.IParser! parser, System.Type! type, YamlDotNet.Serialization.ObjectDeserializer! rootDeserializer) -> object? -GitVersion.VersionCalculation.VersionStrategiesConverter.WriteYaml(YamlDotNet.Core.IEmitter! emitter, object? value, System.Type! type, YamlDotNet.Serialization.ObjectSerializer! serializer) -> void GitVersion.VersionCalculation.VersionStrategyModule GitVersion.VersionCalculation.VersionStrategyModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void GitVersion.VersionCalculation.VersionStrategyModule.VersionStrategyModule() -> void From ef99d8fdb25eb0c6192559aae1c2eab3444de2c6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 15:45:45 +0000 Subject: [PATCH 355/544] (deps): Bump Polly from 8.5.1 to 8.5.2 in /src Bumps [Polly](https://github.com/App-vNext/Polly) from 8.5.1 to 8.5.2. - [Release notes](https://github.com/App-vNext/Polly/releases) - [Changelog](https://github.com/App-vNext/Polly/blob/main/CHANGELOG.md) - [Commits](https://github.com/App-vNext/Polly/compare/8.5.1...8.5.2) --- updated-dependencies: - dependency-name: Polly dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 69f15bafea..b0ab87c29b 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -14,7 +14,7 @@ - + From 39ecbaccfbd6a30f269731e41e5122ab1d0aa7c6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 15:40:31 +0000 Subject: [PATCH 356/544] (deps): Bump Polly from 8.5.1 to 8.5.2 in /new-cli Bumps [Polly](https://github.com/App-vNext/Polly) from 8.5.1 to 8.5.2. - [Release notes](https://github.com/App-vNext/Polly/releases) - [Changelog](https://github.com/App-vNext/Polly/blob/main/CHANGELOG.md) - [Commits](https://github.com/App-vNext/Polly/compare/8.5.1...8.5.2) --- updated-dependencies: - dependency-name: Polly dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 0498da41e5..85e43c6011 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -11,7 +11,7 @@ - + From 1a4595c4cc302a1fd6570e02b2d4c6ba50593f66 Mon Sep 17 00:00:00 2001 From: abdullah-aleiti Date: Fri, 7 Feb 2025 16:33:36 +0300 Subject: [PATCH 357/544] docs: fix grammar --- docs/input/docs/reference/modes/continuous-delivery.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/input/docs/reference/modes/continuous-delivery.md b/docs/input/docs/reference/modes/continuous-delivery.md index ee5c1df4cf..bc93a85bc4 100644 --- a/docs/input/docs/reference/modes/continuous-delivery.md +++ b/docs/input/docs/reference/modes/continuous-delivery.md @@ -19,7 +19,7 @@ on the issues of incrementing automatically. ## How Continuous Delivery affects GitVersion -Continuous delivery is good when you deploy continuously to an testing system. +Continuous delivery is good when you deploy continuously to a testing system. * 1.1.0-3 * 1.1.0-2 (tag: 1.1.0-2) <-- This is the version which has been deployed on testing From fc5bd988f17f721541a16e91bbb6687e10564515 Mon Sep 17 00:00:00 2001 From: Bi0T1N Date: Sat, 8 Feb 2025 12:13:11 +0100 Subject: [PATCH 358/544] Replace C# extension with official C# Dev Kit --- .devcontainer/devcontainer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index c8de2ac6d0..69b116d50b 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -41,7 +41,7 @@ }, // Add the IDs of extensions you want installed when the container is created. "extensions": [ - "ms-dotnettools.csharp", + "ms-dotnettools.csdevkit", "EditorConfig.EditorConfig", "streetsidesoftware.code-spell-checker" ] From cedcda1405a2241e3f6b50211b8b5f4881fc4eb6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 16:25:32 +0000 Subject: [PATCH 359/544] (deps): Bump the analyzers group across 2 directories with 2 updates Bumps the analyzers group with 2 updates in the /new-cli directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Bumps the analyzers group with 2 updates in the /src directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Updates `Roslynator.Analyzers` from 4.12.11 to 4.13.0 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.11...v4.13.0) Updates `Roslynator.Formatting.Analyzers` from 4.12.11 to 4.13.0 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.11...v4.13.0) Updates `Roslynator.Analyzers` from 4.12.11 to 4.13.0 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.11...v4.13.0) Updates `Roslynator.Formatting.Analyzers` from 4.12.11 to 4.13.0 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.12.11...v4.13.0) --- updated-dependencies: - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-minor dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-minor dependency-group: analyzers - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-minor dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-minor dependency-group: analyzers ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 4 ++-- src/Directory.Packages.props | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 85e43c6011..f86fd80080 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -12,8 +12,8 @@ - - + + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index b0ab87c29b..300a56175e 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -15,8 +15,8 @@ - - + + From 611c663635ca197c4779e06a772db8396ffe2d7b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:28:26 +0000 Subject: [PATCH 360/544] (deps): Bump the microsoft group across 2 directories with 11 updates Bumps the microsoft group with 2 updates in the /new-cli directory: [System.Text.Json](https://github.com/dotnet/runtime) and [Microsoft.Extensions.DependencyInjection.Abstractions](https://github.com/dotnet/runtime). Bumps the microsoft group with 11 updates in the /src directory: | Package | From | To | | --- | --- | --- | | [System.Text.Json](https://github.com/dotnet/runtime) | `9.0.1` | `9.0.2` | | [Microsoft.Extensions.DependencyInjection.Abstractions](https://github.com/dotnet/runtime) | `9.0.1` | `9.0.2` | | [Microsoft.Extensions.Configuration.CommandLine](https://github.com/dotnet/runtime) | `9.0.1` | `9.0.2` | | [Microsoft.Extensions.DependencyInjection](https://github.com/dotnet/runtime) | `9.0.1` | `9.0.2` | | [Microsoft.Extensions.FileSystemGlobbing](https://github.com/dotnet/runtime) | `9.0.1` | `9.0.2` | | [Microsoft.Extensions.FileSystemGlobbing](https://github.com/dotnet/runtime) | `9.0.1` | `9.0.2` | | [Microsoft.Extensions.Hosting](https://github.com/dotnet/runtime) | `9.0.1` | `9.0.2` | | [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) | `17.12.0` | `17.13.0` | | [Microsoft.Bcl.AsyncInterfaces](https://github.com/dotnet/runtime) | `9.0.1` | `9.0.2` | | [Microsoft.Build.Utilities.Core](https://github.com/dotnet/msbuild) | `17.12.6` | `17.13.9` | | [System.Drawing.Common](https://github.com/dotnet/winforms) | `9.0.1` | `9.0.2` | | [System.Security.Cryptography.Xml](https://github.com/dotnet/runtime) | `9.0.1` | `9.0.2` | Updates `System.Text.Json` from 9.0.1 to 9.0.2 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.1...v9.0.2) Updates `Microsoft.Extensions.DependencyInjection.Abstractions` from 9.0.1 to 9.0.2 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.1...v9.0.2) Updates `System.Text.Json` from 9.0.1 to 9.0.2 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.1...v9.0.2) Updates `Microsoft.Extensions.DependencyInjection.Abstractions` from 9.0.1 to 9.0.2 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.1...v9.0.2) Updates `Microsoft.Extensions.Configuration.CommandLine` from 9.0.1 to 9.0.2 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.1...v9.0.2) Updates `Microsoft.Extensions.DependencyInjection` from 9.0.1 to 9.0.2 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.1...v9.0.2) Updates `Microsoft.Extensions.FileSystemGlobbing` from 9.0.1 to 9.0.2 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.1...v9.0.2) Updates `Microsoft.Extensions.FileSystemGlobbing` from 9.0.1 to 9.0.2 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.1...v9.0.2) Updates `Microsoft.Extensions.Hosting` from 9.0.1 to 9.0.2 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.1...v9.0.2) Updates `Microsoft.NET.Test.Sdk` from 17.12.0 to 17.13.0 - [Release notes](https://github.com/microsoft/vstest/releases) - [Changelog](https://github.com/microsoft/vstest/blob/main/docs/releases.md) - [Commits](https://github.com/microsoft/vstest/compare/v17.12.0...v17.13.0) Updates `Microsoft.Bcl.AsyncInterfaces` from 9.0.1 to 9.0.2 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.1...v9.0.2) Updates `Microsoft.Build.Utilities.Core` from 17.12.6 to 17.13.9 - [Release notes](https://github.com/dotnet/msbuild/releases) - [Changelog](https://github.com/dotnet/msbuild/blob/main/documentation/Changelog.md) - [Commits](https://github.com/dotnet/msbuild/compare/v17.12.6...v17.13.9) Updates `System.Drawing.Common` from 9.0.1 to 9.0.2 - [Release notes](https://github.com/dotnet/winforms/releases) - [Changelog](https://github.com/dotnet/winforms/blob/main/docs/release-activity.md) - [Commits](https://github.com/dotnet/winforms/compare/v9.0.1...v9.0.2) Updates `System.Security.Cryptography.Xml` from 9.0.1 to 9.0.2 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.1...v9.0.2) --- updated-dependencies: - dependency-name: System.Text.Json dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.DependencyInjection.Abstractions dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: System.Text.Json dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.DependencyInjection.Abstractions dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.Configuration.CommandLine dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.DependencyInjection dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.FileSystemGlobbing dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.FileSystemGlobbing dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.Hosting dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.NET.Test.Sdk dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: Microsoft.Bcl.AsyncInterfaces dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Build.Utilities.Core dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: System.Drawing.Common dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: System.Security.Cryptography.Xml dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 4 ++-- src/Directory.Packages.props | 24 ++++++++++++------------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index f86fd80080..7efe417c6b 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -10,7 +10,7 @@ - + @@ -21,6 +21,6 @@ - + \ No newline at end of file diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 300a56175e..225e2a962b 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -11,8 +11,8 @@ - - + + @@ -22,23 +22,23 @@ - + - - - - - - + + + + + + - - - + + + From e7c49f4195027084818eb3678b3cb7d89ce54e49 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:57:52 +0000 Subject: [PATCH 361/544] (deps): Bump JunitXml.TestLogger from 5.0.0 to 6.0.0 in /src Bumps [JunitXml.TestLogger](https://github.com/spekt/testlogger) from 5.0.0 to 6.0.0. - [Release notes](https://github.com/spekt/testlogger/releases) - [Changelog](https://github.com/spekt/testlogger/blob/master/CHANGELOG.md) - [Commits](https://github.com/spekt/testlogger/compare/v5.0.0...v6.0.0) --- updated-dependencies: - dependency-name: JunitXml.TestLogger dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 225e2a962b..d2c0cec67e 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -20,7 +20,7 @@ - + From c0a78dcbb7a30bea6652fa3d7e2c6d99e0457ff2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 17:35:22 +0000 Subject: [PATCH 362/544] (deps): Bump NUnit3TestAdapter from 4.6.0 to 5.0.0 in /src Bumps [NUnit3TestAdapter](https://github.com/nunit/nunit3-vs-adapter) from 4.6.0 to 5.0.0. - [Release notes](https://github.com/nunit/nunit3-vs-adapter/releases) - [Commits](https://github.com/nunit/nunit3-vs-adapter/compare/V4.6.0...V5.0.0) --- updated-dependencies: - dependency-name: NUnit3TestAdapter dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index d2c0cec67e..dc78029018 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -34,7 +34,7 @@ - + From 8b17c0f925e46237d9a50387cb84ecea3315b0e6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 16:53:32 +0000 Subject: [PATCH 363/544] (deps): Bump the analyzers group across 2 directories with 2 updates Bumps the analyzers group with 2 updates in the /new-cli directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Bumps the analyzers group with 2 updates in the /src directory: [Roslynator.Analyzers](https://github.com/dotnet/roslynator) and [Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator). Updates `Roslynator.Analyzers` from 4.13.0 to 4.13.1 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.13.0...v4.13.1) Updates `Roslynator.Formatting.Analyzers` from 4.13.0 to 4.13.1 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.13.0...v4.13.1) Updates `Roslynator.Analyzers` from 4.13.0 to 4.13.1 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.13.0...v4.13.1) Updates `Roslynator.Formatting.Analyzers` from 4.13.0 to 4.13.1 - [Release notes](https://github.com/dotnet/roslynator/releases) - [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md) - [Commits](https://github.com/dotnet/roslynator/compare/v4.13.0...v4.13.1) --- updated-dependencies: - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers - dependency-name: Roslynator.Formatting.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: analyzers ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 4 ++-- src/Directory.Packages.props | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 7efe417c6b..484bf7508e 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -12,8 +12,8 @@ - - + + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index dc78029018..01fe6f6143 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -15,8 +15,8 @@ - - + + From 46aa2420206518c2696e2683a7548793439c941e Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 24 Feb 2025 21:59:53 +0100 Subject: [PATCH 364/544] cleanup --- .github/workflows/_artifacts_linux.yml | 1 + .github/workflows/_docker.yml | 1 + .github/workflows/_docker_manifests.yml | 1 + .github/workflows/_prepare.yml | 5 +++++ build/build/Tasks/Package/PackageNuget.cs | 4 ++-- 5 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/_artifacts_linux.yml b/.github/workflows/_artifacts_linux.yml index 813732178b..4bd3272370 100644 --- a/.github/workflows/_artifacts_linux.yml +++ b/.github/workflows/_artifacts_linux.yml @@ -13,6 +13,7 @@ on: dotnet_versions: required: true type: string + env: DOTNET_INSTALL_DIR: "./.dotnet" DOTNET_ROLL_FORWARD: "Major" diff --git a/.github/workflows/_docker.yml b/.github/workflows/_docker.yml index 5ca990810d..8d3d3129cc 100644 --- a/.github/workflows/_docker.yml +++ b/.github/workflows/_docker.yml @@ -13,6 +13,7 @@ on: dotnet_versions: required: true type: string + env: DOTNET_INSTALL_DIR: "./.dotnet" DOTNET_ROLL_FORWARD: "Major" diff --git a/.github/workflows/_docker_manifests.yml b/.github/workflows/_docker_manifests.yml index 1212d8b4a7..07df99a950 100644 --- a/.github/workflows/_docker_manifests.yml +++ b/.github/workflows/_docker_manifests.yml @@ -7,6 +7,7 @@ on: dotnet_versions: required: true type: string + env: DOTNET_INSTALL_DIR: "./.dotnet" DOTNET_ROLL_FORWARD: "Major" diff --git a/.github/workflows/_prepare.yml b/.github/workflows/_prepare.yml index 58c8e6b9b1..f227724340 100644 --- a/.github/workflows/_prepare.yml +++ b/.github/workflows/_prepare.yml @@ -7,6 +7,11 @@ on: dotnet_versions: description: 'List of .NET versions' value: ${{ jobs.set_matrix.outputs.dotnet_versions }} + +env: + DOTNET_INSTALL_DIR: "./.dotnet" + DOTNET_ROLL_FORWARD: "Major" + jobs: prepare: name: ${{ matrix.os }} diff --git a/build/build/Tasks/Package/PackageNuget.cs b/build/build/Tasks/Package/PackageNuget.cs index 64186050c9..cfd2a35f78 100644 --- a/build/build/Tasks/Package/PackageNuget.cs +++ b/build/build/Tasks/Package/PackageNuget.cs @@ -25,10 +25,10 @@ private static void PackageWithCli(BuildContext context) // GitVersion.MsBuild, global tool & core context.DotNetPack("./src/GitVersion.Core", settings); - settings.ArgumentCustomization = arg => arg.Append("/p:PackAsTool=true"); + settings.ArgumentCustomization = arg => arg.Append("-p:PackAsTool=true"); context.DotNetPack("./src/GitVersion.App", settings); - settings.ArgumentCustomization = arg => arg.Append("/p:IsPackaging=true"); + settings.ArgumentCustomization = arg => arg.Append("-p:IsPackaging=true"); context.DotNetPack("./src/GitVersion.MsBuild", settings); } } From 2e2cfc6ad51731fffe040bf2f506a54f43a56700 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 15:51:27 +0000 Subject: [PATCH 365/544] (deps): Bump dotnet-sdk from 9.0.102 to 9.0.200 Bumps [dotnet-sdk](https://github.com/dotnet/sdk) from 9.0.102 to 9.0.200. - [Release notes](https://github.com/dotnet/sdk/releases) - [Commits](https://github.com/dotnet/sdk/compare/v9.0.102...v9.0.200) --- updated-dependencies: - dependency-name: dotnet-sdk dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build/build/Tasks/Package/PackageNuget.cs | 2 +- global.json | 2 +- new-cli/GitVersion.Common.Command/ICommand.cs | 2 +- src/GitVersion.App/IGlobbingResolver.cs | 2 +- src/GitVersion.Core/Configuration/IBranchConfiguration.cs | 4 ++-- .../Configuration/IConfigurationSerializer.cs | 4 ++-- src/GitVersion.Core/Configuration/IIgnoreConfiguration.cs | 2 +- .../Configuration/IPreventIncrementConfiguration.cs | 6 +++--- src/GitVersion.Core/Output/IConverterContext.cs | 2 +- src/GitVersion.Core/Output/IVersionConverter.cs | 2 +- 10 files changed, 14 insertions(+), 14 deletions(-) diff --git a/build/build/Tasks/Package/PackageNuget.cs b/build/build/Tasks/Package/PackageNuget.cs index cfd2a35f78..300c32848f 100644 --- a/build/build/Tasks/Package/PackageNuget.cs +++ b/build/build/Tasks/Package/PackageNuget.cs @@ -25,7 +25,7 @@ private static void PackageWithCli(BuildContext context) // GitVersion.MsBuild, global tool & core context.DotNetPack("./src/GitVersion.Core", settings); - settings.ArgumentCustomization = arg => arg.Append("-p:PackAsTool=true"); + settings.ArgumentCustomization = arg => arg.Append("-p:PackAsTool=true").Append("-p:BuildInParallel=false"); context.DotNetPack("./src/GitVersion.App", settings); settings.ArgumentCustomization = arg => arg.Append("-p:IsPackaging=true"); diff --git a/global.json b/global.json index 63f9762c77..d5acb9d0bc 100644 --- a/global.json +++ b/global.json @@ -5,6 +5,6 @@ "src" ], "sdk": { - "version": "9.0.102" + "version": "9.0.200" } } diff --git a/new-cli/GitVersion.Common.Command/ICommand.cs b/new-cli/GitVersion.Common.Command/ICommand.cs index 9b630a7177..6f2723e5cf 100644 --- a/new-cli/GitVersion.Common.Command/ICommand.cs +++ b/new-cli/GitVersion.Common.Command/ICommand.cs @@ -2,7 +2,7 @@ namespace GitVersion; public interface ICommand { - public Task InvokeAsync(T settings, CancellationToken cancellationToken = default); + Task InvokeAsync(T settings, CancellationToken cancellationToken = default); } public interface ICommandImpl diff --git a/src/GitVersion.App/IGlobbingResolver.cs b/src/GitVersion.App/IGlobbingResolver.cs index a65374573d..6bfa777fb1 100644 --- a/src/GitVersion.App/IGlobbingResolver.cs +++ b/src/GitVersion.App/IGlobbingResolver.cs @@ -2,5 +2,5 @@ namespace GitVersion; internal interface IGlobbingResolver { - public IEnumerable Resolve(string workingDirectory, string pattern); + IEnumerable Resolve(string workingDirectory, string pattern); } diff --git a/src/GitVersion.Core/Configuration/IBranchConfiguration.cs b/src/GitVersion.Core/Configuration/IBranchConfiguration.cs index 209168bb9d..8a72789533 100644 --- a/src/GitVersion.Core/Configuration/IBranchConfiguration.cs +++ b/src/GitVersion.Core/Configuration/IBranchConfiguration.cs @@ -20,9 +20,9 @@ public interface IBranchConfiguration CommitMessageIncrementMode? CommitMessageIncrementing { get; } - public string? RegularExpression { get; } + string? RegularExpression { get; } - public bool IsMatch(string branchName) + bool IsMatch(string branchName) { if (string.IsNullOrWhiteSpace(RegularExpression)) { diff --git a/src/GitVersion.Core/Configuration/IConfigurationSerializer.cs b/src/GitVersion.Core/Configuration/IConfigurationSerializer.cs index 312e0e3feb..abb3d744b3 100644 --- a/src/GitVersion.Core/Configuration/IConfigurationSerializer.cs +++ b/src/GitVersion.Core/Configuration/IConfigurationSerializer.cs @@ -2,7 +2,7 @@ namespace GitVersion.Configuration; internal interface IConfigurationSerializer { - public T Deserialize(string input); + T Deserialize(string input); string Serialize(object graph); - public IGitVersionConfiguration? ReadConfiguration(string input); + IGitVersionConfiguration? ReadConfiguration(string input); } diff --git a/src/GitVersion.Core/Configuration/IIgnoreConfiguration.cs b/src/GitVersion.Core/Configuration/IIgnoreConfiguration.cs index 21efe431d6..f836d52915 100644 --- a/src/GitVersion.Core/Configuration/IIgnoreConfiguration.cs +++ b/src/GitVersion.Core/Configuration/IIgnoreConfiguration.cs @@ -6,5 +6,5 @@ public interface IIgnoreConfiguration IReadOnlySet Shas { get; } - public bool IsEmpty => Before == null && Shas.Count == 0; + bool IsEmpty => Before == null && Shas.Count == 0; } diff --git a/src/GitVersion.Core/Configuration/IPreventIncrementConfiguration.cs b/src/GitVersion.Core/Configuration/IPreventIncrementConfiguration.cs index 1769ed0cac..bc8c1b9460 100644 --- a/src/GitVersion.Core/Configuration/IPreventIncrementConfiguration.cs +++ b/src/GitVersion.Core/Configuration/IPreventIncrementConfiguration.cs @@ -2,9 +2,9 @@ namespace GitVersion.Configuration; public interface IPreventIncrementConfiguration { - public bool? OfMergedBranch { get; } + bool? OfMergedBranch { get; } - public bool? WhenBranchMerged { get; } + bool? WhenBranchMerged { get; } - public bool? WhenCurrentCommitTagged { get; } + bool? WhenCurrentCommitTagged { get; } } diff --git a/src/GitVersion.Core/Output/IConverterContext.cs b/src/GitVersion.Core/Output/IConverterContext.cs index 2df5562e71..eb8d0a4d32 100644 --- a/src/GitVersion.Core/Output/IConverterContext.cs +++ b/src/GitVersion.Core/Output/IConverterContext.cs @@ -2,5 +2,5 @@ namespace GitVersion; public interface IConverterContext { - public string WorkingDirectory { get; } + string WorkingDirectory { get; } } diff --git a/src/GitVersion.Core/Output/IVersionConverter.cs b/src/GitVersion.Core/Output/IVersionConverter.cs index 34d34a8454..22fdd9a75d 100644 --- a/src/GitVersion.Core/Output/IVersionConverter.cs +++ b/src/GitVersion.Core/Output/IVersionConverter.cs @@ -4,5 +4,5 @@ namespace GitVersion; public interface IVersionConverter : IDisposable where T : IConverterContext { - public void Execute(GitVersionVariables variables, T context); + void Execute(GitVersionVariables variables, T context); } From c23c6a0e3a29ca1965900233b57120e9ef404f52 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Feb 2025 12:47:34 +0000 Subject: [PATCH 366/544] (deps): Bump the microsoft group across 2 directories with 4 updates Bumps the microsoft group with 2 updates in the /new-cli directory: [Microsoft.CodeAnalysis.Analyzers](https://github.com/dotnet/roslyn-analyzers) and [Microsoft.CodeAnalysis.CSharp](https://github.com/dotnet/roslyn). Bumps the microsoft group with 3 updates in the /src directory: [Microsoft.CodeAnalysis.Common](https://github.com/dotnet/roslyn), [Microsoft.CodeAnalysis.CSharp](https://github.com/dotnet/roslyn) and [Microsoft.CodeAnalysis.VisualBasic](https://github.com/dotnet/roslyn). Updates `Microsoft.CodeAnalysis.Analyzers` from 3.11.0 to 3.11.0 - [Release notes](https://github.com/dotnet/roslyn-analyzers/releases) - [Changelog](https://github.com/dotnet/roslyn-analyzers/blob/main/PostReleaseActivities.md) - [Commits](https://github.com/dotnet/roslyn-analyzers/commits) Updates `Microsoft.CodeAnalysis.CSharp` from 4.12.0 to 4.13.0 - [Release notes](https://github.com/dotnet/roslyn/releases) - [Changelog](https://github.com/dotnet/roslyn/blob/main/docs/Breaking%20API%20Changes.md) - [Commits](https://github.com/dotnet/roslyn/commits) Updates `Microsoft.CodeAnalysis.Common` from 4.12.0 to 4.13.0 - [Release notes](https://github.com/dotnet/roslyn/releases) - [Changelog](https://github.com/dotnet/roslyn/blob/main/docs/Breaking%20API%20Changes.md) - [Commits](https://github.com/dotnet/roslyn/commits) Updates `Microsoft.CodeAnalysis.CSharp` from 4.12.0 to 4.13.0 - [Release notes](https://github.com/dotnet/roslyn/releases) - [Changelog](https://github.com/dotnet/roslyn/blob/main/docs/Breaking%20API%20Changes.md) - [Commits](https://github.com/dotnet/roslyn/commits) Updates `Microsoft.CodeAnalysis.Common` from 4.12.0 to 4.13.0 - [Release notes](https://github.com/dotnet/roslyn/releases) - [Changelog](https://github.com/dotnet/roslyn/blob/main/docs/Breaking%20API%20Changes.md) - [Commits](https://github.com/dotnet/roslyn/commits) Updates `Microsoft.CodeAnalysis.VisualBasic` from 4.12.0 to 4.13.0 - [Release notes](https://github.com/dotnet/roslyn/releases) - [Changelog](https://github.com/dotnet/roslyn/blob/main/docs/Breaking%20API%20Changes.md) - [Commits](https://github.com/dotnet/roslyn/commits) --- updated-dependencies: - dependency-name: Microsoft.CodeAnalysis.Analyzers dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.CodeAnalysis.CSharp dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: Microsoft.CodeAnalysis.Common dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: Microsoft.CodeAnalysis.CSharp dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: Microsoft.CodeAnalysis.Common dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft - dependency-name: Microsoft.CodeAnalysis.VisualBasic dependency-type: direct:production update-type: version-update:semver-minor dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- src/Directory.Packages.props | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 484bf7508e..4fceffd909 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -6,7 +6,7 @@ - + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 01fe6f6143..206e2aba10 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -6,9 +6,9 @@ - - - + + + From dc4d28afa1a1d14884284c5d0e99447a5dc0a3e9 Mon Sep 17 00:00:00 2001 From: Bi0T1N Date: Fri, 21 Feb 2025 23:04:34 +0100 Subject: [PATCH 367/544] Support for dotted versions of the GitVersion config files by default follow the convention of having a leading dot for config files used e.g. for .gitignore, .editorconfig, .gitattributes, etc --- docs/input/docs/usage/cli/arguments.md | 8 +++---- .../OverrideConfigurationOptionParser.cs | 2 +- .../ConfigurationFileLocatorTests.cs | 14 +++++++++++++ .../ConfigurationFileLocator.cs | 21 +++++++++++++------ .../Core/GitVersionExecutorTests.cs | 2 ++ 5 files changed, 36 insertions(+), 11 deletions(-) diff --git a/docs/input/docs/usage/cli/arguments.md b/docs/input/docs/usage/cli/arguments.md index c47e115ba7..01d773c752 100644 --- a/docs/input/docs/usage/cli/arguments.md +++ b/docs/input/docs/usage/cli/arguments.md @@ -41,9 +41,9 @@ GitVersion [path] E.g. /output json /format {SemVer} - will output `1.2.3+beta.4` /output json /format {Major}.{Minor} - will output `1.2` /l Path to logfile. - /config Path to config file (defaults to GitVersion.yml or GitVersion.yaml) + /config Path to config file (defaults to GitVersion.yml, GitVersion.yaml, .GitVersion.yml or .GitVersion.yaml) /showconfig Outputs the effective GitVersion config (defaults + custom - from GitVersion.yml or GitVersion.yaml) in yaml format + from GitVersion.yml, GitVersion.yaml, .GitVersion.yml or .GitVersion.yaml) in yaml format /overrideconfig Overrides GitVersion config values inline (semicolon- separated key value pairs e.g. /overrideconfig tag-prefix=Foo) @@ -97,7 +97,7 @@ GitVersion [path] ## Override config -`/overrideconfig [key=value]` will override appropriate `key` from 'GitVersion.yml' or 'GitVersion.yaml'. +`/overrideconfig [key=value]` will override appropriate `key` from 'GitVersion.yml', 'GitVersion.yaml', '.GitVersion.yml' or '.GitVersion.yaml'. To specify multiple options add multiple `/overrideconfig [key=value]` entries: `/overrideconfig key1=value1 /overrideconfig key2=value2`. @@ -129,7 +129,7 @@ Following options are supported: Read more about [Configuration](/docs/reference/configuration). -Using `override-config` on the command line will not change the contents of the config file `GitVersion.yml` or `GitVersion.yaml`. +Using `override-config` on the command line will not change the contents of the config file `GitVersion.yml`, `GitVersion.yaml`, `.GitVersion.yml` or `.GitVersion.yaml`. ### Example: How to override configuration option 'tag-prefix' to use prefix 'custom' diff --git a/src/GitVersion.App/OverrideConfigurationOptionParser.cs b/src/GitVersion.App/OverrideConfigurationOptionParser.cs index 1d4d6fa985..f3e886ddcf 100644 --- a/src/GitVersion.App/OverrideConfigurationOptionParser.cs +++ b/src/GitVersion.App/OverrideConfigurationOptionParser.cs @@ -18,7 +18,7 @@ internal class OverrideConfigurationOptionParser /// /// /// - /// Lookup keys are created from to match 'GitVersion.yml' or 'GitVersion.yaml' file + /// Lookup keys are created from to match 'GitVersion.yml', 'GitVersion.yaml', '.GitVersion.yml' or '.GitVersion.yaml' file /// options as close as possible. /// private static ILookup GetSupportedProperties() => typeof(GitVersionConfiguration).GetProperties(BindingFlags.Public | BindingFlags.Instance) diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs index 48c43afa15..1f2db614d3 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs @@ -37,8 +37,20 @@ public void Setup() [TestCase(ConfigurationFileLocator.DefaultFileName, ConfigurationFileLocator.DefaultFileName)] [TestCase(ConfigurationFileLocator.DefaultFileName, ConfigurationFileLocator.DefaultAlternativeFileName)] + [TestCase(ConfigurationFileLocator.DefaultFileName, ConfigurationFileLocator.DefaultFileNameDotted)] + [TestCase(ConfigurationFileLocator.DefaultFileName, ConfigurationFileLocator.DefaultAlternativeFileNameDotted)] [TestCase(ConfigurationFileLocator.DefaultAlternativeFileName, ConfigurationFileLocator.DefaultFileName)] [TestCase(ConfigurationFileLocator.DefaultAlternativeFileName, ConfigurationFileLocator.DefaultAlternativeFileName)] + [TestCase(ConfigurationFileLocator.DefaultAlternativeFileName, ConfigurationFileLocator.DefaultFileNameDotted)] + [TestCase(ConfigurationFileLocator.DefaultAlternativeFileName, ConfigurationFileLocator.DefaultAlternativeFileNameDotted)] + [TestCase(ConfigurationFileLocator.DefaultFileNameDotted, ConfigurationFileLocator.DefaultFileName)] + [TestCase(ConfigurationFileLocator.DefaultFileNameDotted, ConfigurationFileLocator.DefaultAlternativeFileName)] + [TestCase(ConfigurationFileLocator.DefaultFileNameDotted, ConfigurationFileLocator.DefaultFileNameDotted)] + [TestCase(ConfigurationFileLocator.DefaultFileNameDotted, ConfigurationFileLocator.DefaultAlternativeFileNameDotted)] + [TestCase(ConfigurationFileLocator.DefaultAlternativeFileNameDotted, ConfigurationFileLocator.DefaultFileName)] + [TestCase(ConfigurationFileLocator.DefaultAlternativeFileNameDotted, ConfigurationFileLocator.DefaultAlternativeFileName)] + [TestCase(ConfigurationFileLocator.DefaultAlternativeFileNameDotted, ConfigurationFileLocator.DefaultFileNameDotted)] + [TestCase(ConfigurationFileLocator.DefaultAlternativeFileNameDotted, ConfigurationFileLocator.DefaultAlternativeFileNameDotted)] public void ThrowsExceptionOnAmbiguousConfigFileLocation(string repoConfigFile, string workingConfigFile) { using var repositoryConfigFilePath = this.fileSystem.SetupConfigFile(path: this.repoPath, fileName: repoConfigFile); @@ -52,6 +64,8 @@ public void ThrowsExceptionOnAmbiguousConfigFileLocation(string repoConfigFile, [TestCase(ConfigurationFileLocator.DefaultFileName)] [TestCase(ConfigurationFileLocator.DefaultAlternativeFileName)] + [TestCase(ConfigurationFileLocator.DefaultFileNameDotted)] + [TestCase(ConfigurationFileLocator.DefaultAlternativeFileNameDotted)] public void NoWarnOnGitVersionYmlFile(string configurationFile) { using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, fileName: configurationFile); diff --git a/src/GitVersion.Configuration/ConfigurationFileLocator.cs b/src/GitVersion.Configuration/ConfigurationFileLocator.cs index 6d23ac35c5..14c8c69156 100644 --- a/src/GitVersion.Configuration/ConfigurationFileLocator.cs +++ b/src/GitVersion.Configuration/ConfigurationFileLocator.cs @@ -13,6 +13,9 @@ internal class ConfigurationFileLocator( { public const string DefaultFileName = "GitVersion.yml"; public const string DefaultAlternativeFileName = "GitVersion.yaml"; + public const string DefaultFileNameDotted = $".{DefaultFileName}"; + public const string DefaultAlternativeFileNameDotted = $".{DefaultAlternativeFileName}"; + public List PossibleConfigFileNames = [DefaultFileName, DefaultAlternativeFileName, DefaultFileNameDotted, DefaultAlternativeFileNameDotted]; private readonly IFileSystem fileSystem = fileSystem.NotNull(); private readonly ILog log = log.NotNull(); @@ -30,11 +33,17 @@ public void Verify(string? workingDirectory, string? projectRootDirectory) public string? GetConfigurationFile(string? directory) { if (directory is null) return null; - string?[] candidates = [this.ConfigurationFile, DefaultFileName, DefaultAlternativeFileName]; - var candidatePaths = - from candidate in candidates - where !candidate.IsNullOrWhiteSpace() - select PathHelper.Combine(directory, candidate); + var candidateList = new List(PossibleConfigFileNames); + if (!this.ConfigurationFile.IsNullOrEmpty()) + { + // give configuration value the highest priority + candidateList.Insert(0, this.ConfigurationFile); + } + + var candidatePaths = candidateList + .Where(candidate => !string.IsNullOrWhiteSpace(candidate)) + .Select(candidate => PathHelper.Combine(directory, candidate)) + .ToList(); foreach (var candidatePath in candidatePaths) { @@ -65,7 +74,7 @@ private void WarnAboutAmbiguousConfigFileSelection(string? workingDirectory, str if (!hasConfigInProjectRootDirectory && !hasConfigInWorkingDirectory) { - if (this.ConfigurationFile is not (DefaultFileName or DefaultAlternativeFileName)) + if (!PossibleConfigFileNames.Any(entry => entry.Equals(this.ConfigurationFile))) { workingConfigFile = PathHelper.Combine(workingDirectory, this.ConfigurationFile); projectRootConfigFile = PathHelper.Combine(projectRootDirectory, this.ConfigurationFile); diff --git a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs index 2fea817d8f..f2dac1d3f8 100644 --- a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs +++ b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs @@ -243,6 +243,8 @@ public void CacheFileIsMissing() [TestCase(ConfigurationFileLocator.DefaultFileName)] [TestCase(ConfigurationFileLocator.DefaultAlternativeFileName)] + [TestCase(ConfigurationFileLocator.DefaultFileNameDotted)] + [TestCase(ConfigurationFileLocator.DefaultAlternativeFileNameDotted)] public void ConfigChangeInvalidatesCache(string configFileName) { const string versionCacheFileContent = """ From 53a6329a9cb843d93bd9f3897be22c72c27092f9 Mon Sep 17 00:00:00 2001 From: Bi0T1N Date: Wed, 26 Feb 2025 20:48:27 +0100 Subject: [PATCH 368/544] Rename PossibleConfigFileNames to SupportedConfigFileNames --- src/GitVersion.Configuration/ConfigurationFileLocator.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/GitVersion.Configuration/ConfigurationFileLocator.cs b/src/GitVersion.Configuration/ConfigurationFileLocator.cs index 14c8c69156..c05ceeb24b 100644 --- a/src/GitVersion.Configuration/ConfigurationFileLocator.cs +++ b/src/GitVersion.Configuration/ConfigurationFileLocator.cs @@ -15,7 +15,7 @@ internal class ConfigurationFileLocator( public const string DefaultAlternativeFileName = "GitVersion.yaml"; public const string DefaultFileNameDotted = $".{DefaultFileName}"; public const string DefaultAlternativeFileNameDotted = $".{DefaultAlternativeFileName}"; - public List PossibleConfigFileNames = [DefaultFileName, DefaultAlternativeFileName, DefaultFileNameDotted, DefaultAlternativeFileNameDotted]; + public List SupportedConfigFileNames = [DefaultFileName, DefaultAlternativeFileName, DefaultFileNameDotted, DefaultAlternativeFileNameDotted]; private readonly IFileSystem fileSystem = fileSystem.NotNull(); private readonly ILog log = log.NotNull(); @@ -33,7 +33,7 @@ public void Verify(string? workingDirectory, string? projectRootDirectory) public string? GetConfigurationFile(string? directory) { if (directory is null) return null; - var candidateList = new List(PossibleConfigFileNames); + var candidateList = new List(SupportedConfigFileNames); if (!this.ConfigurationFile.IsNullOrEmpty()) { // give configuration value the highest priority @@ -74,7 +74,7 @@ private void WarnAboutAmbiguousConfigFileSelection(string? workingDirectory, str if (!hasConfigInProjectRootDirectory && !hasConfigInWorkingDirectory) { - if (!PossibleConfigFileNames.Any(entry => entry.Equals(this.ConfigurationFile))) + if (!SupportedConfigFileNames.Any(entry => entry.Equals(this.ConfigurationFile))) { workingConfigFile = PathHelper.Combine(workingDirectory, this.ConfigurationFile); projectRootConfigFile = PathHelper.Combine(projectRootDirectory, this.ConfigurationFile); From 6d61b3dce0fc4362007f786e8350500e353aaadf Mon Sep 17 00:00:00 2001 From: Bi0T1N Date: Wed, 26 Feb 2025 20:50:06 +0100 Subject: [PATCH 369/544] Use case insensitive comparison for config filenames --- .../Configuration/ConfigurationFileLocatorTests.cs | 12 ++++++++++++ .../ConfigurationFileLocator.cs | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs index 1f2db614d3..e89ac22636 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs @@ -73,6 +73,18 @@ public void NoWarnOnGitVersionYmlFile(string configurationFile) Should.NotThrow(() => this.configurationProvider.ProvideForDirectory(this.repoPath)); } + [TestCase(ConfigurationFileLocator.DefaultFileName)] + [TestCase(ConfigurationFileLocator.DefaultAlternativeFileName)] + [TestCase(ConfigurationFileLocator.DefaultFileNameDotted)] + [TestCase(ConfigurationFileLocator.DefaultAlternativeFileNameDotted)] + public void NoWarnOnLowercasedGitVersionYmlFile(string configurationFile) + { + var lowercasedConfigurationFile = configurationFile.ToLower(); + using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, fileName: lowercasedConfigurationFile); + + Should.NotThrow(() => this.configurationProvider.ProvideForDirectory(this.repoPath)); + } + [Test] public void NoWarnOnNoGitVersionYmlFile() => Should.NotThrow(() => this.configurationProvider.ProvideForDirectory(this.repoPath)); } diff --git a/src/GitVersion.Configuration/ConfigurationFileLocator.cs b/src/GitVersion.Configuration/ConfigurationFileLocator.cs index c05ceeb24b..3bd9556e80 100644 --- a/src/GitVersion.Configuration/ConfigurationFileLocator.cs +++ b/src/GitVersion.Configuration/ConfigurationFileLocator.cs @@ -74,7 +74,7 @@ private void WarnAboutAmbiguousConfigFileSelection(string? workingDirectory, str if (!hasConfigInProjectRootDirectory && !hasConfigInWorkingDirectory) { - if (!SupportedConfigFileNames.Any(entry => entry.Equals(this.ConfigurationFile))) + if (!SupportedConfigFileNames.Any(entry => entry.Equals(this.ConfigurationFile, StringComparison.OrdinalIgnoreCase))) { workingConfigFile = PathHelper.Combine(workingDirectory, this.ConfigurationFile); projectRootConfigFile = PathHelper.Combine(projectRootDirectory, this.ConfigurationFile); From ea037470fd46fa257a292216859b828b92c76c58 Mon Sep 17 00:00:00 2001 From: Bi0T1N Date: Wed, 26 Feb 2025 20:57:28 +0100 Subject: [PATCH 370/544] Change candidates section to use old code syntax --- .../ConfigurationFileLocator.cs | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/GitVersion.Configuration/ConfigurationFileLocator.cs b/src/GitVersion.Configuration/ConfigurationFileLocator.cs index 3bd9556e80..6b7ce942c2 100644 --- a/src/GitVersion.Configuration/ConfigurationFileLocator.cs +++ b/src/GitVersion.Configuration/ConfigurationFileLocator.cs @@ -33,17 +33,12 @@ public void Verify(string? workingDirectory, string? projectRootDirectory) public string? GetConfigurationFile(string? directory) { if (directory is null) return null; - var candidateList = new List(SupportedConfigFileNames); - if (!this.ConfigurationFile.IsNullOrEmpty()) - { - // give configuration value the highest priority - candidateList.Insert(0, this.ConfigurationFile); - } - var candidatePaths = candidateList - .Where(candidate => !string.IsNullOrWhiteSpace(candidate)) - .Select(candidate => PathHelper.Combine(directory, candidate)) - .ToList(); + string?[] candidates = [this.ConfigurationFile, ..SupportedConfigFileNames]; + var candidatePaths = + from candidate in candidates + where !candidate.IsNullOrWhiteSpace() + select PathHelper.Combine(directory, candidate); foreach (var candidatePath in candidatePaths) { From 91af21378e890b07b2807e882890605ff3096048 Mon Sep 17 00:00:00 2001 From: Bi0T1N Date: Wed, 26 Feb 2025 21:12:24 +0100 Subject: [PATCH 371/544] Make dotnet format happy with syntax --- src/GitVersion.Configuration/ConfigurationFileLocator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GitVersion.Configuration/ConfigurationFileLocator.cs b/src/GitVersion.Configuration/ConfigurationFileLocator.cs index 6b7ce942c2..0354d9a0c9 100644 --- a/src/GitVersion.Configuration/ConfigurationFileLocator.cs +++ b/src/GitVersion.Configuration/ConfigurationFileLocator.cs @@ -34,7 +34,7 @@ public void Verify(string? workingDirectory, string? projectRootDirectory) { if (directory is null) return null; - string?[] candidates = [this.ConfigurationFile, ..SupportedConfigFileNames]; + string?[] candidates = [this.ConfigurationFile, .. SupportedConfigFileNames]; var candidatePaths = from candidate in candidates where !candidate.IsNullOrWhiteSpace() From 9bb94bcfb7ea088ee97068d1deb3b518bbf63264 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Mar 2025 15:48:21 +0000 Subject: [PATCH 372/544] (docs deps): Bump remark-validate-links in the remark group Bumps the remark group with 1 update: [remark-validate-links](https://github.com/remarkjs/remark-validate-links). Updates `remark-validate-links` from 13.0.2 to 13.1.0 - [Release notes](https://github.com/remarkjs/remark-validate-links/releases) - [Commits](https://github.com/remarkjs/remark-validate-links/compare/13.0.2...13.1.0) --- updated-dependencies: - dependency-name: remark-validate-links dependency-type: direct:development update-type: version-update:semver-minor dependency-group: remark ... Signed-off-by: dependabot[bot] --- package-lock.json | 15 ++++++++------- package.json | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2951e77495..2a225d49b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -72,7 +72,7 @@ "remark-preset-lint-recommended": "^7.0.1", "remark-retext": "^6.0.0", "remark-textr": "^6.1.0", - "remark-validate-links": "^13.0.2" + "remark-validate-links": "^13.1.0" } }, "node_modules/@babel/code-frame": { @@ -14888,10 +14888,11 @@ } }, "node_modules/remark-validate-links": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/remark-validate-links/-/remark-validate-links-13.0.2.tgz", - "integrity": "sha512-YZPiB6eWT6sjVYD+TXisCGzNZwbWmtnqeA6rr7zlYz7LrtKENaT+fPIRjG16tW4dv85su2VsWdw7e3cqS+2Tog==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/remark-validate-links/-/remark-validate-links-13.1.0.tgz", + "integrity": "sha512-z+glZ4zoRyrWimQHtoqJEFJdPoIR1R1SDr/JoWjmS6EsYlyhxNuCHtIt165gmV7ltOSFJ+rGsipqRGfBPInd7A==", "dev": true, + "license": "MIT", "dependencies": { "@types/hosted-git-info": "^3.0.0", "@types/mdast": "^4.0.0", @@ -28007,9 +28008,9 @@ } }, "remark-validate-links": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/remark-validate-links/-/remark-validate-links-13.0.2.tgz", - "integrity": "sha512-YZPiB6eWT6sjVYD+TXisCGzNZwbWmtnqeA6rr7zlYz7LrtKENaT+fPIRjG16tW4dv85su2VsWdw7e3cqS+2Tog==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/remark-validate-links/-/remark-validate-links-13.1.0.tgz", + "integrity": "sha512-z+glZ4zoRyrWimQHtoqJEFJdPoIR1R1SDr/JoWjmS6EsYlyhxNuCHtIt165gmV7ltOSFJ+rGsipqRGfBPInd7A==", "dev": true, "requires": { "@types/hosted-git-info": "^3.0.0", diff --git a/package.json b/package.json index 9f93b4bc98..3502300036 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "remark-preset-lint-recommended": "^7.0.1", "remark-retext": "^6.0.0", "remark-textr": "^6.1.0", - "remark-validate-links": "^13.0.2" + "remark-validate-links": "^13.1.0" }, "overrides": { "got": "^11.8.5" From 47a3c8d755f3cef47e487f44784cb2cf1f0cf61f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 15:43:30 +0000 Subject: [PATCH 373/544] (deps): Bump System.CommandLine Bumps the microsoft group with 1 update in the /new-cli directory: [System.CommandLine](https://github.com/dotnet/command-line-api). Updates `System.CommandLine` from 2.0.0-beta4.25072.1 to 2.0.0-beta4.25153.1 - [Release notes](https://github.com/dotnet/command-line-api/releases) - [Changelog](https://github.com/dotnet/command-line-api/blob/main/docs/History.md) - [Commits](https://github.com/dotnet/command-line-api/commits) --- updated-dependencies: - dependency-name: System.CommandLine dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 4fceffd909..eec8c27572 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -20,7 +20,7 @@ - + \ No newline at end of file From 9f1be5b05a31b0360dcce5d757ba7230d667ea19 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 5 Mar 2025 22:18:21 +0100 Subject: [PATCH 374/544] cleanup --- .../GitVersion.App.Tests.csproj | 1 - .../Helpers/ProgramFixture.cs | 2 +- src/GitVersion.App/GlobbingResolver.cs | 3 +- .../Agents/AzurePipelines.cs | 2 +- .../VersionStrategiesConverter.cs | 4 +- .../Extensions/MockCollectionExtensions.cs | 6 +- ...EffectiveBranchConfigurationFinderTests.cs | 14 ++-- .../ShaVersionFilterTests.cs | 4 +- .../Helpers/DirectoryHelper.cs | 6 +- .../VersionSearchStrategies/BaseVersion.cs | 4 +- src/GitVersion.LibGit2Sharp/Git/Remote.cs | 2 +- .../GitVersion.MsBuild.Tests.csproj | 1 - .../GenerateGitVersionInformationTest.cs | 1 - .../Tasks/TestTaskBase.cs | 2 +- .../Tasks/UpdateAssemblyInfoTaskTest.cs | 1 - .../Fixtures/RepositoryFixtureBase.cs | 1 - .../GitVersion.Testing.csproj | 9 +++ .../Helpers/DirectoryHelper.cs | 79 ------------------- 18 files changed, 34 insertions(+), 108 deletions(-) rename src/{GitVersion.Core.Tests => GitVersion.Core}/Helpers/DirectoryHelper.cs (96%) delete mode 100644 src/GitVersion.Testing/Helpers/DirectoryHelper.cs diff --git a/src/GitVersion.App.Tests/GitVersion.App.Tests.csproj b/src/GitVersion.App.Tests/GitVersion.App.Tests.csproj index 111e288a9f..fbddfbedb5 100644 --- a/src/GitVersion.App.Tests/GitVersion.App.Tests.csproj +++ b/src/GitVersion.App.Tests/GitVersion.App.Tests.csproj @@ -15,7 +15,6 @@ - diff --git a/src/GitVersion.App.Tests/Helpers/ProgramFixture.cs b/src/GitVersion.App.Tests/Helpers/ProgramFixture.cs index 1fa2d6268c..cb663b43aa 100644 --- a/src/GitVersion.App.Tests/Helpers/ProgramFixture.cs +++ b/src/GitVersion.App.Tests/Helpers/ProgramFixture.cs @@ -49,7 +49,7 @@ public void WithEnv(params KeyValuePair[] envs) public Task Run(string arg) { - var args = arg.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToArray(); + var args = arg.Split([' '], StringSplitOptions.RemoveEmptyEntries).ToArray(); return Run(args); } diff --git a/src/GitVersion.App/GlobbingResolver.cs b/src/GitVersion.App/GlobbingResolver.cs index 43851b5435..d17606436a 100644 --- a/src/GitVersion.App/GlobbingResolver.cs +++ b/src/GitVersion.App/GlobbingResolver.cs @@ -13,5 +13,6 @@ public IEnumerable Resolve(string workingDirectory, string pattern) return this.matcher.Execute(GetDirectoryInfoWrapper(workingDirectory)).Files.Select(file => file.Path); } - protected virtual DirectoryInfoBase GetDirectoryInfoWrapper(string workingDirectory) => new DirectoryInfoWrapper(new DirectoryInfo(workingDirectory)); + private static DirectoryInfoWrapper GetDirectoryInfoWrapper(string workingDirectory) + => new(new DirectoryInfo(workingDirectory)); } diff --git a/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs b/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs index 31d44ea671..e29ab4062d 100644 --- a/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs +++ b/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs @@ -35,7 +35,7 @@ public override string GenerateSetVersionMessage(GitVersionVariables variables) if (buildNumberEnv == newBuildNumber) { var buildNumber = variables.FullSemVer.EndsWith("+0") - ? variables.FullSemVer.Substring(0, variables.FullSemVer.Length - 2) + ? variables.FullSemVer[..^2] : variables.FullSemVer; return $"##vso[build.updatebuildnumber]{buildNumber}"; diff --git a/src/GitVersion.Configuration/VersionStrategiesConverter.cs b/src/GitVersion.Configuration/VersionStrategiesConverter.cs index 7d790154cf..b4144464d4 100644 --- a/src/GitVersion.Configuration/VersionStrategiesConverter.cs +++ b/src/GitVersion.Configuration/VersionStrategiesConverter.cs @@ -12,9 +12,9 @@ internal class VersionStrategiesConverter : IYamlTypeConverter public bool Accepts(Type type) => type == typeof(VersionStrategies[]); - public object? ReadYaml(IParser parser, Type type, ObjectDeserializer rootDeserializer) + public object ReadYaml(IParser parser, Type type, ObjectDeserializer rootDeserializer) { - List strategies = new(); + List strategies = []; if (parser.TryConsume(out var _)) { diff --git a/src/GitVersion.Core.Tests/Extensions/MockCollectionExtensions.cs b/src/GitVersion.Core.Tests/Extensions/MockCollectionExtensions.cs index 7feb8ed156..81c3191326 100644 --- a/src/GitVersion.Core.Tests/Extensions/MockCollectionExtensions.cs +++ b/src/GitVersion.Core.Tests/Extensions/MockCollectionExtensions.cs @@ -11,5 +11,9 @@ private static IEnumerator GetEnumerator(params T[] itemsToReturn) } public static void MockCollectionReturn(this IEnumerable items, params T[] itemsToReturn) - => items.GetEnumerator().Returns(_ => GetEnumerator(itemsToReturn)); + { + var enumerator = items.GetEnumerator(); + enumerator.Returns(_ => GetEnumerator(itemsToReturn)); + enumerator.Dispose(); + } } diff --git a/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs index 4a4b295da0..35bd07d123 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs @@ -46,7 +46,7 @@ public void When_getting_configurations_of_a_branch_with_versioning_mode_Given_f .WithBranch("develop", builder => builder.WithDeploymentMode(null).WithIncrement(IncrementStrategy.Inherit)) .Build(); var repositoryStoreMock = Substitute.For(); - repositoryStoreMock.GetSourceBranches(developBranchMock, configuration, Arg.Any>()).Returns(new[] { mainBranchMock }); + repositoryStoreMock.GetSourceBranches(developBranchMock, configuration, Arg.Any>()).Returns([mainBranchMock]); var unitUnderTest = new EffectiveBranchConfigurationFinder(Substitute.For(), repositoryStoreMock); @@ -75,7 +75,7 @@ public void When_getting_configurations_of_a_branch_with_versioning_mode_Given_p .Build(); var repositoryStoreMock = Substitute.For(); - repositoryStoreMock.GetSourceBranches(developBranchMock, configuration, Arg.Any>()).Returns(new[] { mainBranchMock }); + repositoryStoreMock.GetSourceBranches(developBranchMock, configuration, Arg.Any>()).Returns([mainBranchMock]); var unitUnderTest = new EffectiveBranchConfigurationFinder(Substitute.For(), repositoryStoreMock); @@ -109,7 +109,7 @@ public void When_getting_configurations_of_a_branch_with_tag_alpha_Given_branch_ .Build(); var repositoryStoreMock = Substitute.For(); - repositoryStoreMock.GetSourceBranches(developBranchMock, configuration, Arg.Any>()).Returns(new[] { mainBranchMock }); + repositoryStoreMock.GetSourceBranches(developBranchMock, configuration, Arg.Any>()).Returns([mainBranchMock]); var unitUnderTest = new EffectiveBranchConfigurationFinder(Substitute.For(), repositoryStoreMock); @@ -136,7 +136,7 @@ public void When_getting_configurations_of_a_branch_without_tag_Given_branch_whi .Build(); var repositoryStoreMock = Substitute.For(); - repositoryStoreMock.GetSourceBranches(developBranchMock, configuration, Arg.Any>()).Returns(new[] { mainBranchMock }); + repositoryStoreMock.GetSourceBranches(developBranchMock, configuration, Arg.Any>()).Returns([mainBranchMock]); var unitUnderTest = new EffectiveBranchConfigurationFinder(Substitute.For(), repositoryStoreMock); @@ -292,7 +292,7 @@ public void When_getting_configurations_of_an_unknown_branch_Given_fallback_conf .Build(); var repositoryStoreMock = Substitute.For(); var developBranchMock = GitToolsTestingExtensions.CreateMockBranch("develop", GitToolsTestingExtensions.CreateMockCommit()); - repositoryStoreMock.GetSourceBranches(unknownBranchMock, configuration, Arg.Any>()).Returns(new[] { developBranchMock }); + repositoryStoreMock.GetSourceBranches(unknownBranchMock, configuration, Arg.Any>()).Returns([developBranchMock]); var unitUnderTest = new EffectiveBranchConfigurationFinder(Substitute.For(), repositoryStoreMock); @@ -325,7 +325,7 @@ public void When_getting_configurations_of_an_unknown_branch_Given_fallback_conf .Build(); var repositoryStoreMock = Substitute.For(); var developBranchMock = GitToolsTestingExtensions.CreateMockBranch("develop", GitToolsTestingExtensions.CreateMockCommit()); - repositoryStoreMock.GetSourceBranches(unknownBranchMock, configuration, Arg.Any>()).Returns(new[] { developBranchMock }); + repositoryStoreMock.GetSourceBranches(unknownBranchMock, configuration, Arg.Any>()).Returns([developBranchMock]); var unitUnderTest = new EffectiveBranchConfigurationFinder(Substitute.For(), repositoryStoreMock); @@ -360,7 +360,7 @@ public void When_getting_configurations_of_an_unknown_branch_Given_fallback_and_ .Build(); var repositoryStoreMock = Substitute.For(); var developBranchMock = GitToolsTestingExtensions.CreateMockBranch("develop", GitToolsTestingExtensions.CreateMockCommit()); - repositoryStoreMock.GetSourceBranches(Arg.Any(), Arg.Any(), Arg.Any>()).Returns(new[] { developBranchMock }); + repositoryStoreMock.GetSourceBranches(Arg.Any(), Arg.Any(), Arg.Any>()).Returns([developBranchMock]); var unitUnderTest = new EffectiveBranchConfigurationFinder(Substitute.For(), repositoryStoreMock); diff --git a/src/GitVersion.Core.Tests/VersionCalculation/ShaVersionFilterTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/ShaVersionFilterTests.cs index 86be277b52..9ad4953bbe 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/ShaVersionFilterTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/ShaVersionFilterTests.cs @@ -10,7 +10,7 @@ public class ShaVersionFilterTests : TestBase public void VerifyNullGuard() { var commit = GitToolsTestingExtensions.CreateMockCommit(); - var sut = new ShaVersionFilter(new[] { commit.Sha }); + var sut = new ShaVersionFilter([commit.Sha]); Should.Throw(() => sut.Exclude(null!, out _)); } @@ -20,7 +20,7 @@ public void WhenShaMatchShouldExcludeWithReason() { var commit = GitToolsTestingExtensions.CreateMockCommit(); BaseVersion version = new("dummy", new SemanticVersion(1), commit); - var sut = new ShaVersionFilter(new[] { commit.Sha }); + var sut = new ShaVersionFilter([commit.Sha]); sut.Exclude(version, out var reason).ShouldBeTrue(); reason.ShouldNotBeNullOrWhiteSpace(); diff --git a/src/GitVersion.Core.Tests/Helpers/DirectoryHelper.cs b/src/GitVersion.Core/Helpers/DirectoryHelper.cs similarity index 96% rename from src/GitVersion.Core.Tests/Helpers/DirectoryHelper.cs rename to src/GitVersion.Core/Helpers/DirectoryHelper.cs index d7c6f74f02..0bf996404e 100644 --- a/src/GitVersion.Core.Tests/Helpers/DirectoryHelper.cs +++ b/src/GitVersion.Core/Helpers/DirectoryHelper.cs @@ -1,8 +1,6 @@ -using GitVersion.Helpers; +namespace GitVersion.Helpers; -namespace GitVersion.Core.Tests.Helpers; - -public static class DirectoryHelper +internal static class DirectoryHelper { private static readonly Dictionary ToRename = new() { diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs index 16aec5ce62..28a574b6a0 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/BaseVersion.cs @@ -55,9 +55,7 @@ public override string ToString() stringBuilder.Append($"{Source}: "); stringBuilder.Append(Operator.ForceIncrement ? "Force version increment " : "Version increment "); - if (SemanticVersion is not null) - stringBuilder.Append($"'{SemanticVersion:f}' "); - + stringBuilder.Append($"'{SemanticVersion:f}' "); stringBuilder.Append($"+semver '{Operator.Increment}'"); if (Operator.Label is null) diff --git a/src/GitVersion.LibGit2Sharp/Git/Remote.cs b/src/GitVersion.LibGit2Sharp/Git/Remote.cs index a41d7d5e80..9b409824e7 100644 --- a/src/GitVersion.LibGit2Sharp/Git/Remote.cs +++ b/src/GitVersion.LibGit2Sharp/Git/Remote.cs @@ -23,7 +23,7 @@ public IEnumerable RefSpecs { var refSpecs = this.innerRemote.RefSpecs; return refSpecs is null - ? Enumerable.Empty() + ? [] : new RefSpecCollection((LibGit2Sharp.RefSpecCollection)refSpecs); } } diff --git a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj index 428b5be4a2..6fa47ea425 100644 --- a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj +++ b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj @@ -26,7 +26,6 @@ - diff --git a/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs b/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs index a98a3d224e..9f3f86bfda 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs @@ -1,4 +1,3 @@ -using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; using GitVersion.MsBuild.Tasks; using GitVersion.MsBuild.Tests.Helpers; diff --git a/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs b/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs index ed19e7ad0c..5247f91e14 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs @@ -71,7 +71,7 @@ protected static MsBuildTaskFixtureResult ExecuteMsBuildTaskInGitHubActions("GITHUB_ACTIONS", "true")); var result = msbuildFixture.Execute(task); if (!result.Success) Console.WriteLine(result.Log); diff --git a/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs b/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs index 651f9895e5..beaaa8ef94 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs @@ -1,4 +1,3 @@ -using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; using GitVersion.MsBuild.Tasks; using GitVersion.MsBuild.Tests.Helpers; diff --git a/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs b/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs index 1ac92f2086..aed81489f4 100644 --- a/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs +++ b/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs @@ -1,5 +1,4 @@ using GitVersion.Helpers; -using GitVersion.Testing.Internal; using LibGit2Sharp; using Shouldly; diff --git a/src/GitVersion.Testing/GitVersion.Testing.csproj b/src/GitVersion.Testing/GitVersion.Testing.csproj index 48fca60324..c17ce24c9c 100644 --- a/src/GitVersion.Testing/GitVersion.Testing.csproj +++ b/src/GitVersion.Testing/GitVersion.Testing.csproj @@ -6,6 +6,15 @@ + + + + + + + + + diff --git a/src/GitVersion.Testing/Helpers/DirectoryHelper.cs b/src/GitVersion.Testing/Helpers/DirectoryHelper.cs deleted file mode 100644 index d8137e267d..0000000000 --- a/src/GitVersion.Testing/Helpers/DirectoryHelper.cs +++ /dev/null @@ -1,79 +0,0 @@ -using GitVersion.Helpers; - -namespace GitVersion.Testing.Internal; - -internal static class DirectoryHelper -{ - private static readonly Dictionary ToRename = new() - { - { "gitted", ".git" }, - { "gitmodules", ".gitmodules" } - }; - - public static void CopyFilesRecursively(DirectoryInfo source, DirectoryInfo target) - { - // From http://stackoverflow.com/questions/58744/best-way-to-copy-the-entire-contents-of-a-directory-in-c/58779#58779 - - foreach (var dir in source.GetDirectories()) - { - CopyFilesRecursively(dir, target.CreateSubdirectory(Rename(dir.Name))); - } - - foreach (var file in source.GetFiles()) - { - file.CopyTo(PathHelper.Combine(target.FullName, Rename(file.Name))); - } - } - - private static string Rename(string name) => ToRename.GetValueOrDefault(name, name); - - public static void DeleteSubDirectories(string parentPath) - { - var dirs = Directory.GetDirectories(parentPath); - foreach (var dir in dirs) - { - DeleteDirectory(dir); - } - } - - public static void DeleteDirectory(string directoryPath) - { - // From http://stackoverflow.com/questions/329355/cannot-delete-directory-with-directory-deletepath-true/329502#329502 - - if (!Directory.Exists(directoryPath)) - { - Trace.WriteLine($"Directory '{directoryPath}' is missing and can't be removed."); - - return; - } - - var files = Directory.GetFiles(directoryPath); - var dirs = Directory.GetDirectories(directoryPath); - - foreach (var file in files) - { - File.SetAttributes(file, FileAttributes.Normal); - File.Delete(file); - } - - foreach (var dir in dirs) - { - DeleteDirectory(dir); - } - - File.SetAttributes(directoryPath, FileAttributes.Normal); - try - { - Directory.Delete(directoryPath, false); - } - catch (IOException) - { - Trace.WriteLine(string.Format("{0}The directory '{1}' could not be deleted!" + - "{0}Most of the time, this is due to an external process accessing the files in the temporary repositories created during the test runs, and keeping a handle on the directory, thus preventing the deletion of those files." + - "{0}Known and common causes include:" + - "{0}- Windows Search Indexer (go to the Indexing Options, in the Windows Control Panel, and exclude the bin folder of LibGit2Sharp.Tests)" + - "{0}- Antivirus (exclude the bin folder of LibGit2Sharp.Tests from the paths scanned by your real-time antivirus){0}", - SysEnv.NewLine, Path.GetFullPath(directoryPath))); - } - } -} From b1a1b465d02fd9a1f874708e7c3b8c741ffa4cf2 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 5 Mar 2025 21:49:38 +0100 Subject: [PATCH 375/544] GitToolsTestingExtensions => GitRepositoryTestingExtensions --- ...s.cs => GitRepositoryTestingExtensions.cs} | 2 +- .../Helpers/GitVersionContextBuilder.cs | 8 ++-- ...EffectiveBranchConfigurationFinderTests.cs | 40 +++++++++---------- .../MinDateVersionFilterTests.cs | 4 +- .../ShaVersionFilterTests.cs | 6 +-- ...nfiguredNextVersionVersionStrategyTests.cs | 2 +- .../MergeMessageBaseVersionStrategyTests.cs | 8 ++-- .../GitVersion.MsBuild.Tests.csproj | 2 +- ...s.cs => GitRepositoryTestingExtensions.cs} | 2 +- 9 files changed, 37 insertions(+), 37 deletions(-) rename src/GitVersion.Core.Tests/Extensions/{GitToolsTestingExtensions.cs => GitRepositoryTestingExtensions.cs} (99%) rename src/GitVersion.MsBuild.Tests/Helpers/{GitToolsTestingExtensions.cs => GitRepositoryTestingExtensions.cs} (96%) diff --git a/src/GitVersion.Core.Tests/Extensions/GitToolsTestingExtensions.cs b/src/GitVersion.Core.Tests/Extensions/GitRepositoryTestingExtensions.cs similarity index 99% rename from src/GitVersion.Core.Tests/Extensions/GitToolsTestingExtensions.cs rename to src/GitVersion.Core.Tests/Extensions/GitRepositoryTestingExtensions.cs index 7e20ec2aaf..97fdf611d9 100644 --- a/src/GitVersion.Core.Tests/Extensions/GitToolsTestingExtensions.cs +++ b/src/GitVersion.Core.Tests/Extensions/GitRepositoryTestingExtensions.cs @@ -12,7 +12,7 @@ namespace GitVersion.Core.Tests; -public static class GitToolsTestingExtensions +public static class GitRepositoryTestingExtensions { private static int commitCount = 1; private static readonly DateTimeOffset when = DateTimeOffset.Now; diff --git a/src/GitVersion.Core.Tests/Helpers/GitVersionContextBuilder.cs b/src/GitVersion.Core.Tests/Helpers/GitVersionContextBuilder.cs index eb76416658..045c930d87 100644 --- a/src/GitVersion.Core.Tests/Helpers/GitVersionContextBuilder.cs +++ b/src/GitVersion.Core.Tests/Helpers/GitVersionContextBuilder.cs @@ -42,8 +42,8 @@ private GitVersionContextBuilder WithBranch(string branchName) private GitVersionContextBuilder AddBranch(string branchName) { - var mockCommit = GitToolsTestingExtensions.CreateMockCommit(); - var mockBranch = GitToolsTestingExtensions.CreateMockBranch(branchName, mockCommit); + var mockCommit = GitRepositoryTestingExtensions.CreateMockCommit(); + var mockBranch = GitRepositoryTestingExtensions.CreateMockBranch(branchName, mockCommit); this.repository ??= CreateRepository(); @@ -71,8 +71,8 @@ public void Build() private static IGitRepository CreateRepository() { - var mockCommit = GitToolsTestingExtensions.CreateMockCommit(); - var mockBranch = GitToolsTestingExtensions.CreateMockBranch(TestBase.MainBranch, mockCommit); + var mockCommit = GitRepositoryTestingExtensions.CreateMockCommit(); + var mockBranch = GitRepositoryTestingExtensions.CreateMockBranch(TestBase.MainBranch, mockCommit); var branches = Substitute.For(); branches.MockCollectionReturn(mockBranch); diff --git a/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs index 35bd07d123..ba682c3543 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/EffectiveBranchConfigurationFinderTests.cs @@ -14,7 +14,7 @@ public void When_getting_configurations_of_a_branch_without_versioning_mode_Give DeploymentMode versioningMode) { // Arrange - var branchMock = GitToolsTestingExtensions.CreateMockBranch("main", GitToolsTestingExtensions.CreateMockCommit()); + var branchMock = GitRepositoryTestingExtensions.CreateMockBranch("main", GitRepositoryTestingExtensions.CreateMockCommit()); var configuration = GitFlowConfigurationBuilder.New .WithDeploymentMode(versioningMode) .WithBranch("main", builder => builder.WithDeploymentMode(null)) @@ -38,8 +38,8 @@ public void When_getting_configurations_of_a_branch_with_versioning_mode_Given_f DeploymentMode versioningMode) { // Arrange - var mainBranchMock = GitToolsTestingExtensions.CreateMockBranch("main", GitToolsTestingExtensions.CreateMockCommit()); - var developBranchMock = GitToolsTestingExtensions.CreateMockBranch("develop", GitToolsTestingExtensions.CreateMockCommit()); + var mainBranchMock = GitRepositoryTestingExtensions.CreateMockBranch("main", GitRepositoryTestingExtensions.CreateMockCommit()); + var developBranchMock = GitRepositoryTestingExtensions.CreateMockBranch("develop", GitRepositoryTestingExtensions.CreateMockCommit()); var configuration = GitFlowConfigurationBuilder.New .WithDeploymentMode(null) .WithBranch("main", builder => builder.WithDeploymentMode(versioningMode)) @@ -64,8 +64,8 @@ public void When_getting_configurations_of_a_branch_with_versioning_mode_Given_p DeploymentMode versioningMode) { // Arrange - var mainBranchMock = GitToolsTestingExtensions.CreateMockBranch("main", GitToolsTestingExtensions.CreateMockCommit()); - var developBranchMock = GitToolsTestingExtensions.CreateMockBranch("develop", GitToolsTestingExtensions.CreateMockCommit()); + var mainBranchMock = GitRepositoryTestingExtensions.CreateMockBranch("main", GitRepositoryTestingExtensions.CreateMockCommit()); + var developBranchMock = GitRepositoryTestingExtensions.CreateMockBranch("develop", GitRepositoryTestingExtensions.CreateMockCommit()); var configuration = GitFlowConfigurationBuilder.New .WithDeploymentMode(null) .WithBranch("main", builder => builder.WithDeploymentMode(versioningMode)) @@ -99,8 +99,8 @@ public void When_getting_configurations_of_a_branch_with_versioning_mode_Given_p public void When_getting_configurations_of_a_branch_with_tag_alpha_Given_branch_which_inherits_from_parent_branch_Then_result_should_have_tag_alpha() { // Arrange - var mainBranchMock = GitToolsTestingExtensions.CreateMockBranch("main", GitToolsTestingExtensions.CreateMockCommit()); - var developBranchMock = GitToolsTestingExtensions.CreateMockBranch("develop", GitToolsTestingExtensions.CreateMockCommit()); + var mainBranchMock = GitRepositoryTestingExtensions.CreateMockBranch("main", GitRepositoryTestingExtensions.CreateMockCommit()); + var developBranchMock = GitRepositoryTestingExtensions.CreateMockBranch("develop", GitRepositoryTestingExtensions.CreateMockCommit()); var configuration = GitFlowConfigurationBuilder.New .WithBranch("main", builder => builder.WithLabel(string.Empty)) .WithBranch("develop", builder => builder @@ -126,8 +126,8 @@ public void When_getting_configurations_of_a_branch_with_tag_alpha_Given_branch_ public void When_getting_configurations_of_a_branch_without_tag_Given_branch_which_inherits_from_parent_branch_Then_result_should_have_tag_from_parent() { // Arrange - var mainBranchMock = GitToolsTestingExtensions.CreateMockBranch("main", GitToolsTestingExtensions.CreateMockCommit()); - var developBranchMock = GitToolsTestingExtensions.CreateMockBranch("develop", GitToolsTestingExtensions.CreateMockCommit()); + var mainBranchMock = GitRepositoryTestingExtensions.CreateMockBranch("main", GitRepositoryTestingExtensions.CreateMockCommit()); + var developBranchMock = GitRepositoryTestingExtensions.CreateMockBranch("develop", GitRepositoryTestingExtensions.CreateMockCommit()); var configuration = GitFlowConfigurationBuilder.New .WithBranch("main", builder => builder.WithLabel(string.Empty)) .WithBranch("develop", builder => builder @@ -154,7 +154,7 @@ public void When_getting_configurations_of_a_branch_without_tag_Given_branch_whi public void UsesFirstBranchConfigWhenMultipleMatch(string branchName, IncrementStrategy incrementStrategy, string label) { // Arrange - var releaseBranchMock = GitToolsTestingExtensions.CreateMockBranch(branchName, GitToolsTestingExtensions.CreateMockCommit()); + var releaseBranchMock = GitRepositoryTestingExtensions.CreateMockBranch(branchName, GitRepositoryTestingExtensions.CreateMockCommit()); var configuration = GitFlowConfigurationBuilder.New .WithoutBranches() .WithBranch("release/latest", builder => builder @@ -188,7 +188,7 @@ public void UsesFirstBranchConfigWhenMultipleMatch(string branchName, IncrementS public void When_getting_configurations_of_an_orphaned_branch_Given_fallback_configuration_with_increment_inherit_Then_result_should_be_empty() { // Arrange - var branchMock = GitToolsTestingExtensions.CreateMockBranch("develop", GitToolsTestingExtensions.CreateMockCommit()); + var branchMock = GitRepositoryTestingExtensions.CreateMockBranch("develop", GitRepositoryTestingExtensions.CreateMockCommit()); var configuration = GitFlowConfigurationBuilder.New .WithIncrement(IncrementStrategy.Inherit) .WithBranch("develop", builder => builder.WithIncrement(IncrementStrategy.Inherit)) @@ -213,7 +213,7 @@ public void When_getting_configurations_of_an_orphaned_branch_Given_fallback_con IncrementStrategy fallbackIncrement) { // Arrange - var branchMock = GitToolsTestingExtensions.CreateMockBranch("develop", GitToolsTestingExtensions.CreateMockCommit()); + var branchMock = GitRepositoryTestingExtensions.CreateMockBranch("develop", GitRepositoryTestingExtensions.CreateMockCommit()); var configuration = GitFlowConfigurationBuilder.New .WithIncrement(fallbackIncrement) .WithBranch("develop", builder => builder.WithIncrement(IncrementStrategy.Inherit)) @@ -236,7 +236,7 @@ public void When_getting_configurations_of_an_orphaned_branch_Given_fallback_con public void When_getting_configurations_of_an_unknown_branch_Given_fallback_and_unknown_configuration_with_increment_inherit_Then_result_should_be_empty() { // Arrange - var branchMock = GitToolsTestingExtensions.CreateMockBranch("unknown", GitToolsTestingExtensions.CreateMockCommit()); + var branchMock = GitRepositoryTestingExtensions.CreateMockBranch("unknown", GitRepositoryTestingExtensions.CreateMockCommit()); var configuration = GitFlowConfigurationBuilder.New .WithIncrement(IncrementStrategy.Inherit) .WithBranch("unknown", builder => builder.WithIncrement(IncrementStrategy.Inherit)) @@ -261,7 +261,7 @@ public void When_getting_configurations_of_an_unknown_branch_Given_fallback_conf IncrementStrategy fallbackIncrement) { // Arrange - var branchMock = GitToolsTestingExtensions.CreateMockBranch("unknown", GitToolsTestingExtensions.CreateMockCommit()); + var branchMock = GitRepositoryTestingExtensions.CreateMockBranch("unknown", GitRepositoryTestingExtensions.CreateMockCommit()); var configuration = GitFlowConfigurationBuilder.New .WithIncrement(fallbackIncrement) .WithBranch("unknown", builder => builder.WithIncrement(IncrementStrategy.Inherit)) @@ -285,13 +285,13 @@ public void When_getting_configurations_of_an_unknown_branch_Given_fallback_conf IncrementStrategy fallbackIncrement, IncrementStrategy developIncrement) { // Arrange - var unknownBranchMock = GitToolsTestingExtensions.CreateMockBranch("unknown", GitToolsTestingExtensions.CreateMockCommit()); + var unknownBranchMock = GitRepositoryTestingExtensions.CreateMockBranch("unknown", GitRepositoryTestingExtensions.CreateMockCommit()); var configuration = GitFlowConfigurationBuilder.New .WithIncrement(fallbackIncrement) .WithBranch("develop", builder => builder.WithIncrement(developIncrement)) .Build(); var repositoryStoreMock = Substitute.For(); - var developBranchMock = GitToolsTestingExtensions.CreateMockBranch("develop", GitToolsTestingExtensions.CreateMockCommit()); + var developBranchMock = GitRepositoryTestingExtensions.CreateMockBranch("develop", GitRepositoryTestingExtensions.CreateMockCommit()); repositoryStoreMock.GetSourceBranches(unknownBranchMock, configuration, Arg.Any>()).Returns([developBranchMock]); var unitUnderTest = new EffectiveBranchConfigurationFinder(Substitute.For(), repositoryStoreMock); @@ -318,13 +318,13 @@ public void When_getting_configurations_of_an_unknown_branch_Given_fallback_conf IncrementStrategy fallbackIncrement) { // Arrange - var unknownBranchMock = GitToolsTestingExtensions.CreateMockBranch("unknown", GitToolsTestingExtensions.CreateMockCommit()); + var unknownBranchMock = GitRepositoryTestingExtensions.CreateMockBranch("unknown", GitRepositoryTestingExtensions.CreateMockCommit()); var configuration = GitFlowConfigurationBuilder.New .WithIncrement(fallbackIncrement) .WithBranch("develop", builder => builder.WithIncrement(IncrementStrategy.Inherit)) .Build(); var repositoryStoreMock = Substitute.For(); - var developBranchMock = GitToolsTestingExtensions.CreateMockBranch("develop", GitToolsTestingExtensions.CreateMockCommit()); + var developBranchMock = GitRepositoryTestingExtensions.CreateMockBranch("develop", GitRepositoryTestingExtensions.CreateMockCommit()); repositoryStoreMock.GetSourceBranches(unknownBranchMock, configuration, Arg.Any>()).Returns([developBranchMock]); var unitUnderTest = new EffectiveBranchConfigurationFinder(Substitute.For(), repositoryStoreMock); @@ -353,13 +353,13 @@ public void When_getting_configurations_of_an_unknown_branch_Given_fallback_and_ IncrementStrategy developBranchIncrement) { // Arrange - var unknownBranchMock = GitToolsTestingExtensions.CreateMockBranch("unknown", GitToolsTestingExtensions.CreateMockCommit()); + var unknownBranchMock = GitRepositoryTestingExtensions.CreateMockBranch("unknown", GitRepositoryTestingExtensions.CreateMockCommit()); var configuration = GitFlowConfigurationBuilder.New .WithIncrement(IncrementStrategy.Inherit) .WithBranch("develop", builder => builder.WithIncrement(developBranchIncrement)) .Build(); var repositoryStoreMock = Substitute.For(); - var developBranchMock = GitToolsTestingExtensions.CreateMockBranch("develop", GitToolsTestingExtensions.CreateMockCommit()); + var developBranchMock = GitRepositoryTestingExtensions.CreateMockBranch("develop", GitRepositoryTestingExtensions.CreateMockCommit()); repositoryStoreMock.GetSourceBranches(Arg.Any(), Arg.Any(), Arg.Any>()).Returns([developBranchMock]); var unitUnderTest = new EffectiveBranchConfigurationFinder(Substitute.For(), repositoryStoreMock); diff --git a/src/GitVersion.Core.Tests/VersionCalculation/MinDateVersionFilterTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/MinDateVersionFilterTests.cs index bd5438ecc7..86f41c787c 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/MinDateVersionFilterTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/MinDateVersionFilterTests.cs @@ -18,7 +18,7 @@ public void VerifyNullGuard() [Test] public void WhenCommitShouldExcludeWithReason() { - var commit = GitToolsTestingExtensions.CreateMockCommit(); + var commit = GitRepositoryTestingExtensions.CreateMockCommit(); BaseVersion version = new("dummy", new SemanticVersion(1), commit); var futureDate = DateTimeOffset.UtcNow.AddYears(1); var sut = new MinDateVersionFilter(futureDate); @@ -30,7 +30,7 @@ public void WhenCommitShouldExcludeWithReason() [Test] public void WhenShaMismatchShouldNotExclude() { - var commit = GitToolsTestingExtensions.CreateMockCommit(); + var commit = GitRepositoryTestingExtensions.CreateMockCommit(); BaseVersion version = new("dummy", new SemanticVersion(1), commit); var pastDate = DateTimeOffset.UtcNow.AddYears(-1); var sut = new MinDateVersionFilter(pastDate); diff --git a/src/GitVersion.Core.Tests/VersionCalculation/ShaVersionFilterTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/ShaVersionFilterTests.cs index 9ad4953bbe..69b95b9f20 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/ShaVersionFilterTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/ShaVersionFilterTests.cs @@ -9,7 +9,7 @@ public class ShaVersionFilterTests : TestBase [Test] public void VerifyNullGuard() { - var commit = GitToolsTestingExtensions.CreateMockCommit(); + var commit = GitRepositoryTestingExtensions.CreateMockCommit(); var sut = new ShaVersionFilter([commit.Sha]); Should.Throw(() => sut.Exclude(null!, out _)); @@ -18,7 +18,7 @@ public void VerifyNullGuard() [Test] public void WhenShaMatchShouldExcludeWithReason() { - var commit = GitToolsTestingExtensions.CreateMockCommit(); + var commit = GitRepositoryTestingExtensions.CreateMockCommit(); BaseVersion version = new("dummy", new SemanticVersion(1), commit); var sut = new ShaVersionFilter([commit.Sha]); @@ -29,7 +29,7 @@ public void WhenShaMatchShouldExcludeWithReason() [Test] public void WhenShaMismatchShouldNotExclude() { - var commit = GitToolsTestingExtensions.CreateMockCommit(); + var commit = GitRepositoryTestingExtensions.CreateMockCommit(); BaseVersion version = new("dummy", new SemanticVersion(1), commit); var sut = new ShaVersionFilter(["mismatched"]); diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfiguredNextVersionVersionStrategyTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfiguredNextVersionVersionStrategyTests.cs index 369124aae4..bd06aceb05 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfiguredNextVersionVersionStrategyTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfiguredNextVersionVersionStrategyTests.cs @@ -81,7 +81,7 @@ public void ConfiguredNextVersionTestShouldFail(string nextVersion, SemanticVers contextBuilder.ServicesProvider.ShouldNotBeNull(); var strategy = contextBuilder.ServicesProvider.GetServiceForType(); var context = contextBuilder.ServicesProvider.GetRequiredService>().Value; - var branchMock = GitToolsTestingExtensions.CreateMockBranch("main", GitToolsTestingExtensions.CreateMockCommit()); + var branchMock = GitRepositoryTestingExtensions.CreateMockBranch("main", GitRepositoryTestingExtensions.CreateMockCommit()); strategy.ShouldNotBeNull(); return strategy.GetBaseVersions(context.Configuration.GetEffectiveBranchConfiguration(branchMock)).SingleOrDefault(); diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs index 0f34c39434..fccd3fcd36 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/MergeMessageBaseVersionStrategyTests.cs @@ -15,11 +15,11 @@ public void ShouldNotAllowIncrementOfVersion() { // When a branch is merged in you want to start building stable packages of that version // So we shouldn't bump the version - var mockCommit = GitToolsTestingExtensions.CreateMockCommit(); + var mockCommit = GitRepositoryTestingExtensions.CreateMockCommit(); mockCommit.Message.Returns("Merge branch 'release-0.1.5'"); mockCommit.Parents.Returns(GetParents(true)); - var mockBranch = GitToolsTestingExtensions.CreateMockBranch(MainBranch, mockCommit); + var mockBranch = GitRepositoryTestingExtensions.CreateMockBranch(MainBranch, mockCommit); var branches = Substitute.For(); branches.MockCollectionReturn(mockBranch); @@ -154,11 +154,11 @@ public void TakesVersionFromMergeOfConfiguredReleaseBranch(string message, strin private static void AssertMergeMessage(string message, string? expectedVersion, IEnumerable parents, IReadOnlyDictionary? configuration = null) { - var commit = GitToolsTestingExtensions.CreateMockCommit(); + var commit = GitRepositoryTestingExtensions.CreateMockCommit(); commit.Message.Returns(message); commit.Parents.Returns(parents); - var mockBranch = GitToolsTestingExtensions.CreateMockBranch(MainBranch, commit, GitToolsTestingExtensions.CreateMockCommit()); + var mockBranch = GitRepositoryTestingExtensions.CreateMockBranch(MainBranch, commit, GitRepositoryTestingExtensions.CreateMockCommit()); var mockRepository = Substitute.For(); mockRepository.Head.Returns(mockBranch); diff --git a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj index 6fa47ea425..42bf2b0fa1 100644 --- a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj +++ b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj @@ -31,7 +31,7 @@ - + diff --git a/src/GitVersion.MsBuild.Tests/Helpers/GitToolsTestingExtensions.cs b/src/GitVersion.MsBuild.Tests/Helpers/GitRepositoryTestingExtensions.cs similarity index 96% rename from src/GitVersion.MsBuild.Tests/Helpers/GitToolsTestingExtensions.cs rename to src/GitVersion.MsBuild.Tests/Helpers/GitRepositoryTestingExtensions.cs index 73aff7d672..1e6069f57d 100644 --- a/src/GitVersion.MsBuild.Tests/Helpers/GitToolsTestingExtensions.cs +++ b/src/GitVersion.MsBuild.Tests/Helpers/GitRepositoryTestingExtensions.cs @@ -6,7 +6,7 @@ namespace GitVersion.MsBuild.Tests.Helpers; -public static class GitToolsTestingExtensions +public static class GitRepositoryTestingExtensions { /// /// Simulates running on build server From 36f3a0a2d2ee4af283992f9b03db6508569a0afc Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 5 Mar 2025 21:51:58 +0100 Subject: [PATCH 376/544] move FileAppender to GitVersion.App --- .../Logging => GitVersion.App}/FileAppender.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) rename src/{GitVersion.Core/Logging => GitVersion.App}/FileAppender.cs (94%) diff --git a/src/GitVersion.Core/Logging/FileAppender.cs b/src/GitVersion.App/FileAppender.cs similarity index 94% rename from src/GitVersion.Core/Logging/FileAppender.cs rename to src/GitVersion.App/FileAppender.cs index a5c8f56a78..8d2fc8f8a2 100644 --- a/src/GitVersion.Core/Logging/FileAppender.cs +++ b/src/GitVersion.App/FileAppender.cs @@ -1,6 +1,7 @@ using GitVersion.Helpers; +using GitVersion.Logging; -namespace GitVersion.Logging; +namespace GitVersion; internal class FileAppender : ILogAppender { From 380874e8193e6fb44b9b5228e59ca0737fcf8e9f Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 5 Mar 2025 22:25:01 +0100 Subject: [PATCH 377/544] added IFileSystem to BuildAgentBase --- .../Agents/BuildServerBaseTests.cs | 2 +- src/GitVersion.BuildAgents/Agents/AppVeyor.cs | 2 +- src/GitVersion.BuildAgents/Agents/AzurePipelines.cs | 2 +- src/GitVersion.BuildAgents/Agents/BitBucketPipelines.cs | 2 +- src/GitVersion.BuildAgents/Agents/BuildKite.cs | 2 +- src/GitVersion.BuildAgents/Agents/CodeBuild.cs | 2 +- src/GitVersion.BuildAgents/Agents/ContinuaCi.cs | 2 +- src/GitVersion.BuildAgents/Agents/Drone.cs | 2 +- src/GitVersion.BuildAgents/Agents/EnvRun.cs | 2 +- src/GitVersion.BuildAgents/Agents/GitHubActions.cs | 2 +- src/GitVersion.BuildAgents/Agents/GitLabCi.cs | 2 +- src/GitVersion.BuildAgents/Agents/Jenkins.cs | 2 +- src/GitVersion.BuildAgents/Agents/MyGet.cs | 2 +- src/GitVersion.BuildAgents/Agents/SpaceAutomation.cs | 2 +- src/GitVersion.BuildAgents/Agents/TeamCity.cs | 2 +- src/GitVersion.BuildAgents/Agents/TravisCI.cs | 2 +- src/GitVersion.Core/Agents/BuildAgentBase.cs | 5 +++-- src/GitVersion.Core/Agents/LocalBuild.cs | 2 +- 18 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/GitVersion.BuildAgents.Tests/Agents/BuildServerBaseTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/BuildServerBaseTests.cs index 9666ef0e79..f1e0166beb 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/BuildServerBaseTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/BuildServerBaseTests.cs @@ -48,7 +48,7 @@ public void BuildNumberIsFullSemVer() writes.ShouldNotContain(x => x != null && x.StartsWith("Executing GenerateSetVersionMessage for ")); } - private class BuildAgent(IEnvironment environment, ILog log) : BuildAgentBase(environment, log) + private class BuildAgent(IEnvironment environment, ILog log, IFileSystem fileSystem) : BuildAgentBase(environment, log, fileSystem) { protected override string EnvironmentVariable => throw new NotImplementedException(); diff --git a/src/GitVersion.BuildAgents/Agents/AppVeyor.cs b/src/GitVersion.BuildAgents/Agents/AppVeyor.cs index 580b9adc29..b1b38db2da 100644 --- a/src/GitVersion.BuildAgents/Agents/AppVeyor.cs +++ b/src/GitVersion.BuildAgents/Agents/AppVeyor.cs @@ -4,7 +4,7 @@ namespace GitVersion.Agents; -internal class AppVeyor(IEnvironment environment, ILog log) : BuildAgentBase(environment, log) +internal class AppVeyor(IEnvironment environment, ILog log, IFileSystem fileSystem) : BuildAgentBase(environment, log, fileSystem) { public const string EnvironmentVariableName = "APPVEYOR"; diff --git a/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs b/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs index e29ab4062d..8c4e11b372 100644 --- a/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs +++ b/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs @@ -4,7 +4,7 @@ namespace GitVersion.Agents; -internal class AzurePipelines(IEnvironment environment, ILog log) : BuildAgentBase(environment, log) +internal class AzurePipelines(IEnvironment environment, ILog log, IFileSystem fileSystem) : BuildAgentBase(environment, log, fileSystem) { public const string EnvironmentVariableName = "TF_BUILD"; diff --git a/src/GitVersion.BuildAgents/Agents/BitBucketPipelines.cs b/src/GitVersion.BuildAgents/Agents/BitBucketPipelines.cs index 61d62465f0..3574271132 100644 --- a/src/GitVersion.BuildAgents/Agents/BitBucketPipelines.cs +++ b/src/GitVersion.BuildAgents/Agents/BitBucketPipelines.cs @@ -12,7 +12,7 @@ internal class BitBucketPipelines : BuildAgentBase private string? propertyFile; private string? ps1File; - public BitBucketPipelines(IEnvironment environment, ILog log) : base(environment, log) + public BitBucketPipelines(IEnvironment environment, ILog log, IFileSystem fileSystem) : base(environment, log, fileSystem) { WithPropertyFile("gitversion.properties"); WithPowershellFile("gitversion.ps1"); diff --git a/src/GitVersion.BuildAgents/Agents/BuildKite.cs b/src/GitVersion.BuildAgents/Agents/BuildKite.cs index 2b5a1bf12d..8fc493c4b5 100644 --- a/src/GitVersion.BuildAgents/Agents/BuildKite.cs +++ b/src/GitVersion.BuildAgents/Agents/BuildKite.cs @@ -3,7 +3,7 @@ namespace GitVersion.Agents; -internal class BuildKite(IEnvironment environment, ILog log) : BuildAgentBase(environment, log) +internal class BuildKite(IEnvironment environment, ILog log, IFileSystem fileSystem) : BuildAgentBase(environment, log, fileSystem) { public const string EnvironmentVariableName = "BUILDKITE"; diff --git a/src/GitVersion.BuildAgents/Agents/CodeBuild.cs b/src/GitVersion.BuildAgents/Agents/CodeBuild.cs index 402c97f055..7bf2d84560 100644 --- a/src/GitVersion.BuildAgents/Agents/CodeBuild.cs +++ b/src/GitVersion.BuildAgents/Agents/CodeBuild.cs @@ -10,7 +10,7 @@ internal sealed class CodeBuild : BuildAgentBase public const string WebHookEnvironmentVariableName = "CODEBUILD_WEBHOOK_HEAD_REF"; public const string SourceVersionEnvironmentVariableName = "CODEBUILD_SOURCE_VERSION"; - public CodeBuild(IEnvironment environment, ILog log) : base(environment, log) => WithPropertyFile("gitversion.properties"); + public CodeBuild(IEnvironment environment, ILog log, IFileSystem fileSystem) : base(environment, log, fileSystem) => WithPropertyFile("gitversion.properties"); public void WithPropertyFile(string propertiesFileName) => this.file = propertiesFileName; diff --git a/src/GitVersion.BuildAgents/Agents/ContinuaCi.cs b/src/GitVersion.BuildAgents/Agents/ContinuaCi.cs index fa96cdc04b..30d650c415 100644 --- a/src/GitVersion.BuildAgents/Agents/ContinuaCi.cs +++ b/src/GitVersion.BuildAgents/Agents/ContinuaCi.cs @@ -3,7 +3,7 @@ namespace GitVersion.Agents; -internal class ContinuaCi(IEnvironment environment, ILog log) : BuildAgentBase(environment, log) +internal class ContinuaCi(IEnvironment environment, ILog log, IFileSystem fileSystem) : BuildAgentBase(environment, log, fileSystem) { public const string EnvironmentVariableName = "ContinuaCI.Version"; diff --git a/src/GitVersion.BuildAgents/Agents/Drone.cs b/src/GitVersion.BuildAgents/Agents/Drone.cs index 2504ea927c..6054e91805 100644 --- a/src/GitVersion.BuildAgents/Agents/Drone.cs +++ b/src/GitVersion.BuildAgents/Agents/Drone.cs @@ -4,7 +4,7 @@ namespace GitVersion.Agents; -internal class Drone(IEnvironment environment, ILog log) : BuildAgentBase(environment, log) +internal class Drone(IEnvironment environment, ILog log, IFileSystem fileSystem) : BuildAgentBase(environment, log, fileSystem) { public const string EnvironmentVariableName = "DRONE"; protected override string EnvironmentVariable => EnvironmentVariableName; diff --git a/src/GitVersion.BuildAgents/Agents/EnvRun.cs b/src/GitVersion.BuildAgents/Agents/EnvRun.cs index 52092c8da1..1c55255757 100644 --- a/src/GitVersion.BuildAgents/Agents/EnvRun.cs +++ b/src/GitVersion.BuildAgents/Agents/EnvRun.cs @@ -4,7 +4,7 @@ namespace GitVersion.Agents; -internal class EnvRun(IEnvironment environment, ILog log) : BuildAgentBase(environment, log) +internal class EnvRun(IEnvironment environment, ILog log, IFileSystem fileSystem) : BuildAgentBase(environment, log, fileSystem) { public const string EnvironmentVariableName = "ENVRUN_DATABASE"; protected override string EnvironmentVariable => EnvironmentVariableName; diff --git a/src/GitVersion.BuildAgents/Agents/GitHubActions.cs b/src/GitVersion.BuildAgents/Agents/GitHubActions.cs index 7d5b8a9122..521ff47d0a 100644 --- a/src/GitVersion.BuildAgents/Agents/GitHubActions.cs +++ b/src/GitVersion.BuildAgents/Agents/GitHubActions.cs @@ -4,7 +4,7 @@ namespace GitVersion.Agents; -internal class GitHubActions(IEnvironment environment, ILog log) : BuildAgentBase(environment, log) +internal class GitHubActions(IEnvironment environment, ILog log, IFileSystem fileSystem) : BuildAgentBase(environment, log, fileSystem) { // https://help.github.com/en/actions/automating-your-workflow-with-github-actions/using-environment-variables#default-environment-variables diff --git a/src/GitVersion.BuildAgents/Agents/GitLabCi.cs b/src/GitVersion.BuildAgents/Agents/GitLabCi.cs index 23c0e912a1..0c29e423a1 100644 --- a/src/GitVersion.BuildAgents/Agents/GitLabCi.cs +++ b/src/GitVersion.BuildAgents/Agents/GitLabCi.cs @@ -8,7 +8,7 @@ internal class GitLabCi : BuildAgentBase public const string EnvironmentVariableName = "GITLAB_CI"; private string? file; - public GitLabCi(IEnvironment environment, ILog log) : base(environment, log) => WithPropertyFile("gitversion.properties"); + public GitLabCi(IEnvironment environment, ILog log, IFileSystem fileSystem) : base(environment, log, fileSystem) => WithPropertyFile("gitversion.properties"); public void WithPropertyFile(string propertiesFileName) => this.file = propertiesFileName; diff --git a/src/GitVersion.BuildAgents/Agents/Jenkins.cs b/src/GitVersion.BuildAgents/Agents/Jenkins.cs index dfd45beb16..6030ba0d93 100644 --- a/src/GitVersion.BuildAgents/Agents/Jenkins.cs +++ b/src/GitVersion.BuildAgents/Agents/Jenkins.cs @@ -10,7 +10,7 @@ internal class Jenkins : BuildAgentBase private string? file; protected override string EnvironmentVariable => EnvironmentVariableName; - public Jenkins(IEnvironment environment, ILog log) : base(environment, log) => WithPropertyFile("gitversion.properties"); + public Jenkins(IEnvironment environment, ILog log, IFileSystem fileSystem) : base(environment, log, fileSystem) => WithPropertyFile("gitversion.properties"); public void WithPropertyFile(string propertiesFileName) => this.file = propertiesFileName; diff --git a/src/GitVersion.BuildAgents/Agents/MyGet.cs b/src/GitVersion.BuildAgents/Agents/MyGet.cs index 42fc06de29..4d488834ea 100644 --- a/src/GitVersion.BuildAgents/Agents/MyGet.cs +++ b/src/GitVersion.BuildAgents/Agents/MyGet.cs @@ -5,7 +5,7 @@ namespace GitVersion.Agents; -internal class MyGet(IEnvironment environment, ILog log) : BuildAgentBase(environment, log) +internal class MyGet(IEnvironment environment, ILog log, IFileSystem fileSystem) : BuildAgentBase(environment, log, fileSystem) { public const string EnvironmentVariableName = "BuildRunner"; protected override string EnvironmentVariable => EnvironmentVariableName; diff --git a/src/GitVersion.BuildAgents/Agents/SpaceAutomation.cs b/src/GitVersion.BuildAgents/Agents/SpaceAutomation.cs index 10882a2fef..41b2b3f941 100644 --- a/src/GitVersion.BuildAgents/Agents/SpaceAutomation.cs +++ b/src/GitVersion.BuildAgents/Agents/SpaceAutomation.cs @@ -3,7 +3,7 @@ namespace GitVersion.Agents; -internal class SpaceAutomation(IEnvironment environment, ILog log) : BuildAgentBase(environment, log) +internal class SpaceAutomation(IEnvironment environment, ILog log, IFileSystem fileSystem) : BuildAgentBase(environment, log, fileSystem) { public const string EnvironmentVariableName = "JB_SPACE_PROJECT_KEY"; diff --git a/src/GitVersion.BuildAgents/Agents/TeamCity.cs b/src/GitVersion.BuildAgents/Agents/TeamCity.cs index 91d1915ba0..84f60b2749 100644 --- a/src/GitVersion.BuildAgents/Agents/TeamCity.cs +++ b/src/GitVersion.BuildAgents/Agents/TeamCity.cs @@ -5,7 +5,7 @@ namespace GitVersion.Agents; -internal class TeamCity(IEnvironment environment, ILog log) : BuildAgentBase(environment, log) +internal class TeamCity(IEnvironment environment, ILog log, IFileSystem fileSystem) : BuildAgentBase(environment, log, fileSystem) { public const string EnvironmentVariableName = "TEAMCITY_VERSION"; diff --git a/src/GitVersion.BuildAgents/Agents/TravisCI.cs b/src/GitVersion.BuildAgents/Agents/TravisCI.cs index 70bef8c2f6..6109006a21 100644 --- a/src/GitVersion.BuildAgents/Agents/TravisCI.cs +++ b/src/GitVersion.BuildAgents/Agents/TravisCI.cs @@ -3,7 +3,7 @@ namespace GitVersion.Agents; -internal class TravisCi(IEnvironment environment, ILog log) : BuildAgentBase(environment, log) +internal class TravisCi(IEnvironment environment, ILog log, IFileSystem fileSystem) : BuildAgentBase(environment, log, fileSystem) { public const string EnvironmentVariableName = "TRAVIS"; protected override string EnvironmentVariable => EnvironmentVariableName; diff --git a/src/GitVersion.Core/Agents/BuildAgentBase.cs b/src/GitVersion.Core/Agents/BuildAgentBase.cs index 29840605bb..1514d42f4e 100644 --- a/src/GitVersion.Core/Agents/BuildAgentBase.cs +++ b/src/GitVersion.Core/Agents/BuildAgentBase.cs @@ -4,10 +4,11 @@ namespace GitVersion.Agents; -internal abstract class BuildAgentBase(IEnvironment environment, ILog log) : ICurrentBuildAgent +internal abstract class BuildAgentBase(IEnvironment environment, ILog log, IFileSystem fileSystem) : ICurrentBuildAgent { protected readonly ILog Log = log.NotNull(); - protected IEnvironment Environment { get; } = environment.NotNull(); + protected readonly IEnvironment Environment = environment.NotNull(); + protected readonly IFileSystem FileSystem = fileSystem.NotNull(); protected abstract string EnvironmentVariable { get; } public virtual bool IsDefault => false; diff --git a/src/GitVersion.Core/Agents/LocalBuild.cs b/src/GitVersion.Core/Agents/LocalBuild.cs index 11a636b352..60a9613e6b 100644 --- a/src/GitVersion.Core/Agents/LocalBuild.cs +++ b/src/GitVersion.Core/Agents/LocalBuild.cs @@ -3,7 +3,7 @@ namespace GitVersion.Agents; -internal class LocalBuild(IEnvironment environment, ILog log) : BuildAgentBase(environment, log) +internal class LocalBuild(IEnvironment environment, ILog log, IFileSystem fileSystem) : BuildAgentBase(environment, log, fileSystem) { public override bool IsDefault => true; From f705ee97f01d412a85b5ccbea69215830eb3603f Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 5 Mar 2025 22:26:44 +0100 Subject: [PATCH 378/544] simplified GitVersionTaskBase --- .../Helpers/MsBuildTaskFixture.cs | 2 +- .../Tasks/TestTaskBase.cs | 11 -------- src/GitVersion.MsBuild/GitVersionTaskBase.cs | 9 +----- src/GitVersion.MsBuild/GitVersionTasks.cs | 28 ++++++++++--------- src/GitVersion.MsBuild/PublicAPI.Shipped.txt | 8 ------ .../Tasks/GenerateGitVersionInformation.cs | 2 -- src/GitVersion.MsBuild/Tasks/GetVersion.cs | 2 -- .../Tasks/UpdateAssemblyInfo.cs | 2 -- .../Tasks/WriteVersionInfoToBuildLog.cs | 5 +--- 9 files changed, 18 insertions(+), 51 deletions(-) diff --git a/src/GitVersion.MsBuild.Tests/Helpers/MsBuildTaskFixture.cs b/src/GitVersion.MsBuild.Tests/Helpers/MsBuildTaskFixture.cs index 2c9ac2b028..0e8eac0e9a 100644 --- a/src/GitVersion.MsBuild.Tests/Helpers/MsBuildTaskFixture.cs +++ b/src/GitVersion.MsBuild.Tests/Helpers/MsBuildTaskFixture.cs @@ -23,7 +23,7 @@ public MsBuildTaskFixtureResult Execute(T task) where T : GitVersionTaskBa task.VersionFile = versionFile; - var result = task.Execute(); + var result = GitVersionTasks.Execute(task); return new MsBuildTaskFixtureResult(fixture) { diff --git a/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs b/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs index 5247f91e14..8c0df2dea9 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs @@ -1,10 +1,8 @@ using GitVersion.Agents; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; -using GitVersion.Extensions; using GitVersion.Helpers; using GitVersion.MsBuild.Tests.Helpers; -using GitVersion.Output; using LibGit2Sharp; using Microsoft.Build.Utilities.ProjectCreation; @@ -22,7 +20,6 @@ protected static MsBuildTaskFixtureResult ExecuteMsBuildTask(T task) where { var fixture = CreateLocalRepositoryFixture(); task.SolutionDirectory = fixture.RepositoryPath; - AddOverrides(task); var msbuildFixture = new MsBuildTaskFixture(fixture); var result = msbuildFixture.Execute(task); if (!result.Success) Console.WriteLine(result.Log); @@ -46,7 +43,6 @@ protected static MsBuildTaskFixtureResult ExecuteMsBuildTaskInAzurePipeline ExecuteMsBuildTaskInGitHubActions("GITHUB_ACTIONS", "true")); var result = msbuildFixture.Execute(task); @@ -92,12 +87,6 @@ protected static MsBuildExeFixtureResult ExecuteMsBuildExeInAzurePipeline(Action if (!result.MsBuild.OverallSuccess) Console.WriteLine(result.Output); return result; } - private static void AddOverrides(GitVersionTaskBase task) => - task.WithOverrides(services => - { - services.AddModule(new GitVersionBuildAgentsModule()); - services.AddModule(new GitVersionOutputModule()); - }); private static EmptyRepositoryFixture CreateLocalRepositoryFixture() { diff --git a/src/GitVersion.MsBuild/GitVersionTaskBase.cs b/src/GitVersion.MsBuild/GitVersionTaskBase.cs index 1be2bafb80..a7fb78a9ac 100644 --- a/src/GitVersion.MsBuild/GitVersionTaskBase.cs +++ b/src/GitVersion.MsBuild/GitVersionTaskBase.cs @@ -1,6 +1,5 @@ using Microsoft.Build.Framework; using Microsoft.Build.Utilities; -using Microsoft.Extensions.DependencyInjection; namespace GitVersion.MsBuild; @@ -18,11 +17,5 @@ public abstract class GitVersionTaskBase : ITask public TaskLoggingHelper Log { get; } - public bool Execute() => OnExecute(); - - protected abstract bool OnExecute(); - - public Action? Overrides { get; set; } - - public void WithOverrides(Action overrides) => Overrides = overrides; + public bool Execute() => GitVersionTasks.Execute(this); } diff --git a/src/GitVersion.MsBuild/GitVersionTasks.cs b/src/GitVersion.MsBuild/GitVersionTasks.cs index c2facf75d9..7a32e88101 100644 --- a/src/GitVersion.MsBuild/GitVersionTasks.cs +++ b/src/GitVersion.MsBuild/GitVersionTasks.cs @@ -11,24 +11,27 @@ namespace GitVersion.MsBuild; internal static class GitVersionTasks { - public static bool GetVersion(GetVersion task) => ExecuteGitVersionTask(task, executor => executor.GetVersion(task)); - - public static bool UpdateAssemblyInfo(UpdateAssemblyInfo task) => ExecuteGitVersionTask(task, executor => executor.UpdateAssemblyInfo(task)); - - public static bool GenerateGitVersionInformation(GenerateGitVersionInformation task) => ExecuteGitVersionTask(task, executor => executor.GenerateGitVersionInformation(task)); - - public static bool WriteVersionInfoToBuildLog(WriteVersionInfoToBuildLog task) => ExecuteGitVersionTask(task, executor => executor.WriteVersionInfoToBuildLog(task)); + public static bool Execute(GitVersionTaskBase task) + { + var serviceProvider = BuildServiceProvider(task); + var executor = serviceProvider.GetRequiredService(); + return task switch + { + GetVersion getVersion => ExecuteGitVersionTask(getVersion, () => executor.GetVersion(getVersion)), + UpdateAssemblyInfo updateAssemblyInfo => ExecuteGitVersionTask(updateAssemblyInfo, () => executor.UpdateAssemblyInfo(updateAssemblyInfo)), + GenerateGitVersionInformation generateGitVersionInformation => ExecuteGitVersionTask(generateGitVersionInformation, () => executor.GenerateGitVersionInformation(generateGitVersionInformation)), + WriteVersionInfoToBuildLog writeVersionInfoToBuildLog => ExecuteGitVersionTask(writeVersionInfoToBuildLog, () => executor.WriteVersionInfoToBuildLog(writeVersionInfoToBuildLog)), + _ => throw new NotSupportedException($"Task type {task.GetType().Name} is not supported") + }; + } - private static bool ExecuteGitVersionTask(T task, Action action) + private static bool ExecuteGitVersionTask(T task, Action action) where T : GitVersionTaskBase { var taskLog = task.Log; try { - var sp = BuildServiceProvider(task); - var gitVersionTaskExecutor = sp.GetRequiredService(); - - action(gitVersionTaskExecutor); + action(); } catch (WarningException errorException) { @@ -75,7 +78,6 @@ private static IServiceProvider BuildServiceProvider(GitVersionTaskBase task) services.AddModule(new GitVersionOutputModule()); services.AddModule(new GitVersionMsBuildModule()); services.AddSingleton(new MsBuildAdapter(task.Log)); - task.Overrides?.Invoke(services); var sp = services.BuildServiceProvider(); Configure(sp, task); diff --git a/src/GitVersion.MsBuild/PublicAPI.Shipped.txt b/src/GitVersion.MsBuild/PublicAPI.Shipped.txt index b395a292de..3325cd24ce 100644 --- a/src/GitVersion.MsBuild/PublicAPI.Shipped.txt +++ b/src/GitVersion.MsBuild/PublicAPI.Shipped.txt @@ -1,5 +1,4 @@ #nullable enable -abstract GitVersion.MsBuild.GitVersionTaskBase.OnExecute() -> bool GitVersion.MsBuild.GitVersionMsBuildModule GitVersion.MsBuild.GitVersionMsBuildModule.GitVersionMsBuildModule() -> void GitVersion.MsBuild.GitVersionMsBuildModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void @@ -11,13 +10,10 @@ GitVersion.MsBuild.GitVersionTaskBase.GitVersionTaskBase() -> void GitVersion.MsBuild.GitVersionTaskBase.HostObject.get -> Microsoft.Build.Framework.ITaskHost! GitVersion.MsBuild.GitVersionTaskBase.HostObject.set -> void GitVersion.MsBuild.GitVersionTaskBase.Log.get -> Microsoft.Build.Utilities.TaskLoggingHelper! -GitVersion.MsBuild.GitVersionTaskBase.Overrides.get -> System.Action? -GitVersion.MsBuild.GitVersionTaskBase.Overrides.set -> void GitVersion.MsBuild.GitVersionTaskBase.SolutionDirectory.get -> string! GitVersion.MsBuild.GitVersionTaskBase.SolutionDirectory.set -> void GitVersion.MsBuild.GitVersionTaskBase.VersionFile.get -> string! GitVersion.MsBuild.GitVersionTaskBase.VersionFile.set -> void -GitVersion.MsBuild.GitVersionTaskBase.WithOverrides(System.Action! overrides) -> void GitVersion.MsBuild.Tasks.GenerateGitVersionInformation GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.GenerateGitVersionInformation() -> void GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.GitVersionInformationFilePath.get -> string! @@ -98,7 +94,3 @@ GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.ProjectFile.set -> void GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.UpdateAssemblyInfo() -> void GitVersion.MsBuild.Tasks.WriteVersionInfoToBuildLog GitVersion.MsBuild.Tasks.WriteVersionInfoToBuildLog.WriteVersionInfoToBuildLog() -> void -override GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.OnExecute() -> bool -override GitVersion.MsBuild.Tasks.GetVersion.OnExecute() -> bool -override GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.OnExecute() -> bool -override GitVersion.MsBuild.Tasks.WriteVersionInfoToBuildLog.OnExecute() -> bool diff --git a/src/GitVersion.MsBuild/Tasks/GenerateGitVersionInformation.cs b/src/GitVersion.MsBuild/Tasks/GenerateGitVersionInformation.cs index 92c0fb95af..b192216a1c 100644 --- a/src/GitVersion.MsBuild/Tasks/GenerateGitVersionInformation.cs +++ b/src/GitVersion.MsBuild/Tasks/GenerateGitVersionInformation.cs @@ -19,6 +19,4 @@ public class GenerateGitVersionInformation : GitVersionTaskBase [Output] public string GitVersionInformationFilePath { get; set; } - - protected override bool OnExecute() => GitVersionTasks.GenerateGitVersionInformation(this); } diff --git a/src/GitVersion.MsBuild/Tasks/GetVersion.cs b/src/GitVersion.MsBuild/Tasks/GetVersion.cs index 3fca217eef..2a3e695a99 100644 --- a/src/GitVersion.MsBuild/Tasks/GetVersion.cs +++ b/src/GitVersion.MsBuild/Tasks/GetVersion.cs @@ -78,6 +78,4 @@ public class GetVersion : GitVersionTaskBase [Output] public string UncommittedChanges { get; set; } - - protected override bool OnExecute() => GitVersionTasks.GetVersion(this); } diff --git a/src/GitVersion.MsBuild/Tasks/UpdateAssemblyInfo.cs b/src/GitVersion.MsBuild/Tasks/UpdateAssemblyInfo.cs index 41fefe580d..b243cfa606 100644 --- a/src/GitVersion.MsBuild/Tasks/UpdateAssemblyInfo.cs +++ b/src/GitVersion.MsBuild/Tasks/UpdateAssemblyInfo.cs @@ -18,6 +18,4 @@ public class UpdateAssemblyInfo : GitVersionTaskBase [Output] public string AssemblyInfoTempFilePath { get; set; } - - protected override bool OnExecute() => GitVersionTasks.UpdateAssemblyInfo(this); } diff --git a/src/GitVersion.MsBuild/Tasks/WriteVersionInfoToBuildLog.cs b/src/GitVersion.MsBuild/Tasks/WriteVersionInfoToBuildLog.cs index b92f7dd187..3ee822c61e 100644 --- a/src/GitVersion.MsBuild/Tasks/WriteVersionInfoToBuildLog.cs +++ b/src/GitVersion.MsBuild/Tasks/WriteVersionInfoToBuildLog.cs @@ -1,6 +1,3 @@ namespace GitVersion.MsBuild.Tasks; -public class WriteVersionInfoToBuildLog : GitVersionTaskBase -{ - protected override bool OnExecute() => GitVersionTasks.WriteVersionInfoToBuildLog(this); -} +public class WriteVersionInfoToBuildLog : GitVersionTaskBase; From 6ce23010a30c7740c992b422fd6094efe16b246f Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 6 Mar 2025 00:48:07 +0100 Subject: [PATCH 379/544] FileHelper => AssemblyInfoFileHelper --- ...ests.cs => AssemblyInfoFileHelperTests.cs} | 10 ++--- .../Helpers/MsBuildExeFixture.cs | 2 +- .../InvalidFileCheckerTests.cs | 38 +++++++++---------- .../GenerateGitVersionInformationTest.cs | 24 ++++++------ .../Tasks/UpdateAssemblyInfoTaskTest.cs | 16 ++++---- .../GitVersionTaskExecutor.cs | 5 +-- ...ileHelper.cs => AssemblyInfoFileHelper.cs} | 2 +- 7 files changed, 48 insertions(+), 49 deletions(-) rename src/GitVersion.MsBuild.Tests/{FileHelperTests.cs => AssemblyInfoFileHelperTests.cs} (69%) rename src/GitVersion.MsBuild/Helpers/{FileHelper.cs => AssemblyInfoFileHelper.cs} (98%) diff --git a/src/GitVersion.MsBuild.Tests/FileHelperTests.cs b/src/GitVersion.MsBuild.Tests/AssemblyInfoFileHelperTests.cs similarity index 69% rename from src/GitVersion.MsBuild.Tests/FileHelperTests.cs rename to src/GitVersion.MsBuild.Tests/AssemblyInfoFileHelperTests.cs index 6056bc5202..ddb4139b33 100644 --- a/src/GitVersion.MsBuild.Tests/FileHelperTests.cs +++ b/src/GitVersion.MsBuild.Tests/AssemblyInfoFileHelperTests.cs @@ -1,7 +1,7 @@ namespace GitVersion.MsBuild.Tests; [TestFixture] -public class FileHelperTests +public class AssemblyInfoFileHelperTests { [Test] [TestCase("C#", "cs")] @@ -12,11 +12,11 @@ public void GetFileExtensionShouldReturnCorrectExtension(string language, string { if (expectedExtension != null) { - Assert.That(FileHelper.GetFileExtension(language), Is.EqualTo(expectedExtension)); + Assert.That(AssemblyInfoFileHelper.GetFileExtension(language), Is.EqualTo(expectedExtension)); } else { - Assert.That((TestDelegate)(() => FileHelper.GetFileExtension(language)), Throws.ArgumentException.With.Message.EqualTo($"Unknown language detected: '{language}'")); + Assert.That((TestDelegate)(() => AssemblyInfoFileHelper.GetFileExtension(language)), Throws.ArgumentException.With.Message.EqualTo($"Unknown language detected: '{language}'")); } } @@ -35,10 +35,10 @@ public void GetFileWriteInfoShouldCreateConstantNamedFileWhenIntermediateOutputP [Test] public void GetFileWriteInfoShouldCreateRandomNamedFileWhenNoIntermediateOutputPath() { - var fileInfo = FileHelper.GetFileWriteInfo(null, "C#", "MyProject.csproj", "GeneratedVersionInformation"); + var fileInfo = AssemblyInfoFileHelper.GetFileWriteInfo(null, "C#", "MyProject.csproj", "GeneratedVersionInformation"); Assert.Multiple(() => { - Assert.That(fileInfo.WorkingDirectory, Is.EqualTo(FileHelper.TempPath)); + Assert.That(fileInfo.WorkingDirectory, Is.EqualTo(AssemblyInfoFileHelper.TempPath)); Assert.That(fileInfo.FileName, Does.StartWith("GeneratedVersionInformation_MyProject_").And.EndsWith(".g.cs")); Assert.That(fileInfo.FileExtension, Is.EqualTo("cs")); }); diff --git a/src/GitVersion.MsBuild.Tests/Helpers/MsBuildExeFixture.cs b/src/GitVersion.MsBuild.Tests/Helpers/MsBuildExeFixture.cs index b05fe01433..c0a0bc82b0 100644 --- a/src/GitVersion.MsBuild.Tests/Helpers/MsBuildExeFixture.cs +++ b/src/GitVersion.MsBuild.Tests/Helpers/MsBuildExeFixture.cs @@ -22,7 +22,7 @@ public class MsBuildExeFixture public MsBuildExeFixture(RepositoryFixtureBase fixture, string workingDirectory = "", string language = "C#") { - var projectExtension = FileHelper.GetProjectExtension(language); + var projectExtension = AssemblyInfoFileHelper.GetProjectExtension(language); this.fixture = fixture; this.ProjectPath = PathHelper.Combine(workingDirectory, $"app.{projectExtension}"); diff --git a/src/GitVersion.MsBuild.Tests/InvalidFileCheckerTests.cs b/src/GitVersion.MsBuild.Tests/InvalidFileCheckerTests.cs index 5eb2c3f2f9..17d2aeae8a 100644 --- a/src/GitVersion.MsBuild.Tests/InvalidFileCheckerTests.cs +++ b/src/GitVersion.MsBuild.Tests/InvalidFileCheckerTests.cs @@ -39,7 +39,7 @@ public void VerifyIgnoreNonAssemblyInfoFile() """); } - FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "SomeOtherFile.cs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "SomeOtherFile.cs" }], this.projectFile); } [Test] @@ -57,7 +57,7 @@ public void VerifyAttributeFoundCSharp([Values("AssemblyVersion", "AssemblyFileV """, attribute); } - var ex = Assert.Throws(() => FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile), attribute); + var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile), attribute); ex.ShouldNotBeNull(); Assert.That(ex.Message, Is.EqualTo("File contains assembly version attributes which conflict with the attributes generated by GitVersion AssemblyInfo.cs")); } @@ -78,7 +78,7 @@ public void VerifyUnformattedAttributeFoundCSharp([Values("AssemblyVersion", "As """, attribute); } - var ex = Assert.Throws(() => FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile), attribute); + var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile), attribute); ex.ShouldNotBeNull(); Assert.That(ex.Message, Is.EqualTo("File contains assembly version attributes which conflict with the attributes generated by GitVersion AssemblyInfo.cs")); } @@ -98,7 +98,7 @@ public void VerifyCommentWorksCSharp([Values("AssemblyVersion", "AssemblyFileVer """, attribute); } - FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile); } [Test] @@ -115,7 +115,7 @@ public void VerifyCommentWithNoNewLineAtEndWorksCSharp([Values("AssemblyVersion" """, attribute); } - FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile); } [Test] @@ -136,7 +136,7 @@ public class Temp """, attribute); } - FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile); } [Test] @@ -156,7 +156,7 @@ public class {0} """, attribute); } - FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile); } [Test] @@ -174,7 +174,7 @@ Imports System.Reflection """, attribute); } - var ex = Assert.Throws(() => FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile), attribute); + var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile), attribute); ex.ShouldNotBeNull(); Assert.That(ex.Message, Is.EqualTo("File contains assembly version attributes which conflict with the attributes generated by GitVersion AssemblyInfo.vb")); } @@ -195,7 +195,7 @@ Imports System.Reflection """, attribute); } - var ex = Assert.Throws(() => FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile), attribute); + var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile), attribute); ex.ShouldNotBeNull(); Assert.That(ex.Message, Is.EqualTo("File contains assembly version attributes which conflict with the attributes generated by GitVersion AssemblyInfo.vb")); } @@ -215,7 +215,7 @@ Imports System.Reflection """, attribute); } - FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile); } [Test] @@ -232,7 +232,7 @@ Imports System.Reflection """, attribute); } - FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile); } [Test] @@ -252,7 +252,7 @@ End Class """, attribute); } - FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile); } [Test] @@ -271,7 +271,7 @@ End Class """, attribute); } - FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile); } [Test] @@ -289,7 +289,7 @@ open System.Reflection """, attribute); } - var ex = Assert.Throws(() => FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile), attribute); + var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile), attribute); ex.ShouldNotBeNull(); Assert.That(ex.Message, Is.EqualTo("File contains assembly version attributes which conflict with the attributes generated by GitVersion AssemblyInfo.fs")); } @@ -310,7 +310,7 @@ open System.Reflection """, attribute); } - var ex = Assert.Throws(() => FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile), attribute); + var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile), attribute); ex.ShouldNotBeNull(); Assert.That(ex.Message, Is.EqualTo("File contains assembly version attributes which conflict with the attributes generated by GitVersion AssemblyInfo.fs")); } @@ -330,7 +330,7 @@ open System.Reflection """, attribute); } - FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile); } [Test] @@ -347,7 +347,7 @@ open System.Reflection """, attribute); } - FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile); } [Test] @@ -366,7 +366,7 @@ type Temp() = """, attribute); } - FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile); } [Test] @@ -384,6 +384,6 @@ open System.Reflection """, attribute); } - FileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile); } } diff --git a/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs b/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs index 9f3f86bfda..6de414702a 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs @@ -21,7 +21,7 @@ public class GenerateGitVersionInformationTest : TestTaskBase [TestCaseSource(nameof(Languages))] public void GenerateGitVersionInformationTaskShouldCreateFile(string language) { - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); var task = new GenerateGitVersionInformation { Language = language }; using var result = ExecuteMsBuildTask(task); @@ -42,7 +42,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFile(string language) [TestCaseSource(nameof(Languages))] public void GenerateGitVersionInformationTaskShouldCreateFileInBuildServer(string language) { - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); var task = new GenerateGitVersionInformation { Language = language }; using var result = ExecuteMsBuildTaskInAzurePipeline(task); @@ -65,7 +65,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuild( { const string taskName = nameof(GenerateGitVersionInformation); const string outputProperty = nameof(GenerateGitVersionInformation.GitVersionInformationFilePath); - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); using var result = ExecuteMsBuildExe(project => AddGenerateGitVersionInformationTask(project, taskName, taskName, outputProperty, language), language); @@ -92,7 +92,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildI { const string taskName = nameof(GenerateGitVersionInformation); const string outputProperty = nameof(GenerateGitVersionInformation.GitVersionInformationFilePath); - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); using var result = ExecuteMsBuildExeInAzurePipeline(project => AddGenerateGitVersionInformationTask(project, taskName, taskName, outputProperty, language), language); @@ -117,7 +117,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildI [TestCaseSource(nameof(Languages))] public void GenerateGitVersionInformationTaskShouldCreateFileWhenIntermediateOutputPathDoesNotExist(string language) { - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); var task = new GenerateGitVersionInformation { Language = language, IntermediateOutputPath = Guid.NewGuid().ToString("N") }; using var result = ExecuteMsBuildTask(task); @@ -139,7 +139,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenIntermediateOut [TestCaseSource(nameof(Languages))] public void GenerateGitVersionInformationTaskShouldCreateFileInBuildServerWhenIntermediateOutputPathDoesNotExist(string language) { - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); var task = new GenerateGitVersionInformation { Language = language, IntermediateOutputPath = Guid.NewGuid().ToString("N") }; using var result = ExecuteMsBuildTaskInAzurePipeline(task); @@ -165,7 +165,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA const string outputProperty = nameof(GenerateGitVersionInformation.GitVersionInformationFilePath); var randDir = Guid.NewGuid().ToString("N"); - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); using var result = ExecuteMsBuildExe(project => { var intermediateOutputPath = PathHelper.Combine("$(MSBuildProjectDirectory)", randDir); @@ -196,7 +196,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA const string outputProperty = nameof(GenerateGitVersionInformation.GitVersionInformationFilePath); var randDir = Guid.NewGuid().ToString("N"); - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); using var result = ExecuteMsBuildExeInAzurePipeline(project => { var intermediateOutputPath = PathHelper.Combine("$(MSBuildProjectDirectory)", randDir); @@ -227,7 +227,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA const string outputProperty = nameof(GenerateGitVersionInformation.GitVersionInformationFilePath); var randDir = Guid.NewGuid().ToString("N"); - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); using var result = ExecuteMsBuildExe(project => { var intermediateOutputPath = PathHelper.Combine("$(MSBuildProjectDirectory)", randDir); @@ -260,7 +260,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA const string outputProperty = nameof(GenerateGitVersionInformation.GitVersionInformationFilePath); var randDir = Guid.NewGuid().ToString("N"); - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); using var result = ExecuteMsBuildExeInAzurePipeline(project => { var intermediateOutputPath = PathHelper.Combine("$(MSBuildProjectDirectory)", randDir); @@ -288,7 +288,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA [TestCaseSource(nameof(Languages))] public void GenerateGitVersionInformationTaskShouldCreateFileWithUseProjectNamespaceSetAndRootNamespaceUnSet(string language) { - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); var task = new GenerateGitVersionInformation { Language = language, @@ -314,7 +314,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWithUseProjectNames [TestCaseSource(nameof(Languages))] public void GenerateGitVersionInformationTaskShouldCreateFileWithUseProjectNamespaceSetAndRootNamespaceIsSet(string language) { - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); var task = new GenerateGitVersionInformation { Language = language, diff --git a/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs b/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs index beaaa8ef94..b353bb6af2 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs @@ -19,7 +19,7 @@ public class UpdateAssemblyInfoTaskTest : TestTaskBase [TestCaseSource(nameof(Languages))] public void UpdateAssemblyInfoTaskShouldCreateFile(string language) { - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); var task = new UpdateAssemblyInfo { Language = language }; using var result = ExecuteMsBuildTask(task); @@ -36,7 +36,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFile(string language) [TestCaseSource(nameof(Languages))] public void UpdateAssemblyInfoTaskShouldCreateFileInBuildServer(string language) { - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); var task = new UpdateAssemblyInfo { Language = language }; using var result = ExecuteMsBuildTaskInAzurePipeline(task); @@ -56,7 +56,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenRunWithMsBuild(string lang const string taskName = nameof(UpdateAssemblyInfo); const string outputProperty = nameof(UpdateAssemblyInfo.AssemblyInfoTempFilePath); - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); using var result = ExecuteMsBuildExe(project => AddUpdateAssemblyInfoTask(project, taskName, taskName, outputProperty, language), language); @@ -79,7 +79,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenRunWithMsBuildInBuildServe const string taskName = nameof(UpdateAssemblyInfo); const string outputProperty = nameof(UpdateAssemblyInfo.AssemblyInfoTempFilePath); - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); using var result = ExecuteMsBuildExeInAzurePipeline(project => AddUpdateAssemblyInfoTask(project, taskName, taskName, outputProperty, language), language); @@ -99,7 +99,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenRunWithMsBuildInBuildServe [TestCaseSource(nameof(Languages))] public void UpdateAssemblyInfoTaskShouldCreateFileWhenIntermediateOutputPathDoesNotExist(string language) { - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); var task = new UpdateAssemblyInfo { Language = language, IntermediateOutputPath = Guid.NewGuid().ToString("N") }; using var result = ExecuteMsBuildTask(task); @@ -117,7 +117,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenIntermediateOutputPathDoes [TestCaseSource(nameof(Languages))] public void UpdateAssemblyInfoTaskShouldCreateFileWhenIntermediateOutputPathDoesNotExistInBuildServer(string language) { - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); var task = new UpdateAssemblyInfo { Language = language, IntermediateOutputPath = Guid.NewGuid().ToString("N") }; using var result = ExecuteMsBuildTaskInAzurePipeline(task); @@ -139,7 +139,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenRunWithMsBuildAndIntermedi const string outputProperty = nameof(UpdateAssemblyInfo.AssemblyInfoTempFilePath); var randDir = Guid.NewGuid().ToString("N"); - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); using var result = ExecuteMsBuildExe(project => { var intermediateOutputPath = PathHelper.Combine("$(MSBuildProjectDirectory)", randDir); @@ -166,7 +166,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenRunWithMsBuildAndIntermedi const string outputProperty = nameof(UpdateAssemblyInfo.AssemblyInfoTempFilePath); var randDir = Guid.NewGuid().ToString("N"); - var extension = FileHelper.GetFileExtension(language); + var extension = AssemblyInfoFileHelper.GetFileExtension(language); using var result = ExecuteMsBuildExeInAzurePipeline(project => { var intermediateOutputPath = PathHelper.Combine("$(MSBuildProjectDirectory)", randDir); diff --git a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs index d51d364d95..2052267982 100644 --- a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs +++ b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs @@ -34,8 +34,7 @@ public void GetVersion(GetVersion task) public void UpdateAssemblyInfo(UpdateAssemblyInfo task) { var versionVariables = GitVersionVariables(task); - DeleteTempFiles(); - FileHelper.CheckForInvalidFiles(task.CompileFiles, task.ProjectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles(task.CompileFiles, task.ProjectFile); if (!string.IsNullOrEmpty(task.IntermediateOutputPath)) { @@ -110,7 +109,7 @@ public void WriteVersionInfoToBuildLog(WriteVersionInfoToBuildLog task) private void DeleteTempFiles() { - var tempPath = FileHelper.TempPath; + var tempPath = AssemblyInfoFileHelper.TempPath; if (!this.fileSystem.DirectoryExists(tempPath)) { return; diff --git a/src/GitVersion.MsBuild/Helpers/FileHelper.cs b/src/GitVersion.MsBuild/Helpers/AssemblyInfoFileHelper.cs similarity index 98% rename from src/GitVersion.MsBuild/Helpers/FileHelper.cs rename to src/GitVersion.MsBuild/Helpers/AssemblyInfoFileHelper.cs index ce3d1e9da7..b9491aa569 100644 --- a/src/GitVersion.MsBuild/Helpers/FileHelper.cs +++ b/src/GitVersion.MsBuild/Helpers/AssemblyInfoFileHelper.cs @@ -6,7 +6,7 @@ namespace GitVersion.MsBuild; -internal static class FileHelper +internal static class AssemblyInfoFileHelper { public static readonly string TempPath = MakeAndGetTempPath(); From 61876fc1f9b5fcd8da46c3407e314eab62b151c3 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 6 Mar 2025 01:05:04 +0100 Subject: [PATCH 380/544] added System.IO.Abstractions package replaced own IFileSystem with the one from the package replaced System.IO.(File|FileInfo|Directory|DirectoryInfo) --- new-cli/Directory.Packages.props | 1 + .../GitVersion.Common.csproj | 1 - new-cli/GitVersion.Core/CoreModule.cs | 1 + .../GitVersion.Core/GitVersion.Core.csproj | 4 +- src/Directory.Packages.props | 1 + .../ArgumentParserTests.cs | 27 +++--- src/GitVersion.App/ArgumentParser.cs | 7 +- src/GitVersion.App/FileAppender.cs | 12 ++- src/GitVersion.App/GitVersionExecutor.cs | 9 +- .../Agents/BitBucketPipelinesTests.cs | 15 +-- .../Agents/BuildServerBaseTests.cs | 1 + .../Agents/CodeBuildTests.cs | 9 +- .../Agents/EnvRunTests.cs | 7 +- .../Agents/GitHubActionsTests.cs | 9 +- .../Agents/GitLabCiTests.cs | 13 ++- .../Agents/JenkinsTests.cs | 9 +- src/GitVersion.BuildAgents/Agents/AppVeyor.cs | 1 + .../Agents/AzurePipelines.cs | 1 + .../Agents/BitBucketPipelines.cs | 5 +- .../Agents/BuildKite.cs | 1 + .../Agents/CodeBuild.cs | 3 +- .../Agents/ContinuaCi.cs | 1 + src/GitVersion.BuildAgents/Agents/Drone.cs | 1 + src/GitVersion.BuildAgents/Agents/EnvRun.cs | 3 +- .../Agents/GitHubActions.cs | 3 +- src/GitVersion.BuildAgents/Agents/GitLabCi.cs | 3 +- src/GitVersion.BuildAgents/Agents/Jenkins.cs | 3 +- src/GitVersion.BuildAgents/Agents/MyGet.cs | 1 + .../Agents/SpaceAutomation.cs | 1 + src/GitVersion.BuildAgents/Agents/TeamCity.cs | 1 + src/GitVersion.BuildAgents/Agents/TravisCI.cs | 1 + .../ConfigurationFileLocatorTests.cs | 1 + .../ConfigurationProviderTests.cs | 1 + .../Configuration/Extensions.cs | 9 +- .../ConfigurationFileLocator.cs | 3 +- .../ConfigurationProvider.cs | 5 +- .../Core/DynamicRepositoryTests.cs | 5 +- .../Core/GitVersionExecutorTests.cs | 27 ++++-- .../Core/GitVersionToolDirectoryTests.cs | 8 +- .../DocumentationTests.cs | 26 +++-- .../GitVersionVariablesExtensions.cs | 1 + .../Helpers/GitVersionCoreTestModule.cs | 1 + .../IntegrationTests/FileSystemTests.cs | 53 ----------- .../IntegrationTests/OtherScenarios.cs | 8 +- .../IntegrationTests/WorktreeScenarios.cs | 6 +- src/GitVersion.Core/Agents/BuildAgentBase.cs | 1 + src/GitVersion.Core/Agents/LocalBuild.cs | 1 + .../Core/Abstractions/IFileSystem.cs | 21 ---- src/GitVersion.Core/Core/FileSystem.cs | 59 ------------ src/GitVersion.Core/Core/GitPreparer.cs | 3 +- .../Extensions/ConfigurationExtensions.cs | 7 +- .../Extensions/FileSystemExtensions.cs | 13 +++ src/GitVersion.Core/GitVersion.Core.csproj | 1 + src/GitVersion.Core/GitVersionCommonModule.cs | 1 + .../Helpers/DirectoryHelper.cs | 31 ------ src/GitVersion.Core/Helpers/EncodingHelper.cs | 95 ------------------- src/GitVersion.Core/PublicAPI.Shipped.txt | 20 ---- src/GitVersion.Core/PublicAPI.Unshipped.txt | 2 + .../Caching/GitVersionCacheKeyFactory.cs | 17 ++-- .../Caching/GitVersionCacheProvider.cs | 7 +- .../Git/GitRepositoryInfo.cs | 18 ++-- .../InvalidFileCheckerTests.cs | 87 +++++++++-------- .../GenerateGitVersionInformationTest.cs | 24 ++--- .../Tasks/TestTaskBase.cs | 11 +++ .../Tasks/UpdateAssemblyInfoTaskTest.cs | 16 ++-- .../Tasks/WriteVersionInfoTest.cs | 10 +- .../GitVersionTaskExecutor.cs | 25 ++--- .../Helpers/AssemblyInfoFileHelper.cs | 17 ++-- .../Output/AssemblyInfoFileUpdaterTests.cs | 54 ++++++----- .../Output/GitVersionInfoGeneratorTests.cs | 13 +-- .../Output/ProjectFileUpdaterTests.cs | 16 ++-- .../Output/WixFileTests.cs | 11 ++- .../AssemblyInfo/AssemblyInfoFileUpdater.cs | 33 +++---- .../AssemblyInfo/ProjectFileUpdater.cs | 25 ++--- .../GitVersionInfo/GitVersionInfoGenerator.cs | 7 +- .../OutputGenerator/OutputGenerator.cs | 3 +- .../Serializer/VersionVariableSerializer.cs | 5 +- .../WixUpdater/WixVersionFileUpdater.cs | 11 ++- 78 files changed, 413 insertions(+), 561 deletions(-) delete mode 100644 src/GitVersion.Core.Tests/IntegrationTests/FileSystemTests.cs delete mode 100644 src/GitVersion.Core/Core/Abstractions/IFileSystem.cs delete mode 100644 src/GitVersion.Core/Core/FileSystem.cs create mode 100644 src/GitVersion.Core/Extensions/FileSystemExtensions.cs delete mode 100644 src/GitVersion.Core/Helpers/EncodingHelper.cs diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index eec8c27572..5a744aa636 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -21,6 +21,7 @@ + \ No newline at end of file diff --git a/new-cli/GitVersion.Common/GitVersion.Common.csproj b/new-cli/GitVersion.Common/GitVersion.Common.csproj index f224f9e121..50d31943ff 100644 --- a/new-cli/GitVersion.Common/GitVersion.Common.csproj +++ b/new-cli/GitVersion.Common/GitVersion.Common.csproj @@ -4,7 +4,6 @@ - diff --git a/new-cli/GitVersion.Core/CoreModule.cs b/new-cli/GitVersion.Core/CoreModule.cs index 4521f28dee..f3312b5dd2 100644 --- a/new-cli/GitVersion.Core/CoreModule.cs +++ b/new-cli/GitVersion.Core/CoreModule.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Infrastructure; namespace GitVersion; diff --git a/new-cli/GitVersion.Core/GitVersion.Core.csproj b/new-cli/GitVersion.Core/GitVersion.Core.csproj index b96d2f9f1a..47fe040631 100644 --- a/new-cli/GitVersion.Core/GitVersion.Core.csproj +++ b/new-cli/GitVersion.Core/GitVersion.Core.csproj @@ -8,13 +8,11 @@ + Infrastructure\Environment.cs - - Infrastructure\FileSystem.cs - diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 206e2aba10..11d3a28cbd 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -37,6 +37,7 @@ + diff --git a/src/GitVersion.App.Tests/ArgumentParserTests.cs b/src/GitVersion.App.Tests/ArgumentParserTests.cs index c9d678043a..a42b4e2c22 100644 --- a/src/GitVersion.App.Tests/ArgumentParserTests.cs +++ b/src/GitVersion.App.Tests/ArgumentParserTests.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; @@ -283,7 +284,7 @@ public void UpdateAssemblyInfoWithFilename() using var repo = new EmptyRepositoryFixture(); var assemblyFile = PathHelper.Combine(repo.RepositoryPath, "CommonAssemblyInfo.cs"); - using var file = File.Create(assemblyFile); + using var file = this.fileSystem.File.Create(assemblyFile); var arguments = this.argumentParser.ParseArguments($"-targetpath {repo.RepositoryPath} -updateAssemblyInfo CommonAssemblyInfo.cs"); arguments.UpdateAssemblyInfo.ShouldBe(true); @@ -297,10 +298,10 @@ public void UpdateAssemblyInfoWithMultipleFilenames() using var repo = new EmptyRepositoryFixture(); var assemblyFile1 = PathHelper.Combine(repo.RepositoryPath, "CommonAssemblyInfo.cs"); - using var file = File.Create(assemblyFile1); + using var file = this.fileSystem.File.Create(assemblyFile1); var assemblyFile2 = PathHelper.Combine(repo.RepositoryPath, "VersionAssemblyInfo.cs"); - using var file2 = File.Create(assemblyFile2); + using var file2 = this.fileSystem.File.Create(assemblyFile2); var arguments = this.argumentParser.ParseArguments($"-targetpath {repo.RepositoryPath} -updateAssemblyInfo CommonAssemblyInfo.cs VersionAssemblyInfo.cs"); arguments.UpdateAssemblyInfo.ShouldBe(true); @@ -315,10 +316,10 @@ public void UpdateProjectFilesWithMultipleFilenames() using var repo = new EmptyRepositoryFixture(); var assemblyFile1 = PathHelper.Combine(repo.RepositoryPath, "CommonAssemblyInfo.csproj"); - using var file = File.Create(assemblyFile1); + using var file = this.fileSystem.File.Create(assemblyFile1); var assemblyFile2 = PathHelper.Combine(repo.RepositoryPath, "VersionAssemblyInfo.csproj"); - using var file2 = File.Create(assemblyFile2); + using var file2 = this.fileSystem.File.Create(assemblyFile2); var arguments = this.argumentParser.ParseArguments($"-targetpath {repo.RepositoryPath} -updateProjectFiles CommonAssemblyInfo.csproj VersionAssemblyInfo.csproj"); arguments.UpdateProjectFiles.ShouldBe(true); @@ -333,16 +334,16 @@ public void UpdateAssemblyInfoWithMultipleFilenamesMatchingGlobbing() using var repo = new EmptyRepositoryFixture(); var assemblyFile1 = PathHelper.Combine(repo.RepositoryPath, "CommonAssemblyInfo.cs"); - using var file = File.Create(assemblyFile1); + using var file = this.fileSystem.File.Create(assemblyFile1); var assemblyFile2 = PathHelper.Combine(repo.RepositoryPath, "VersionAssemblyInfo.cs"); - using var file2 = File.Create(assemblyFile2); + using var file2 = this.fileSystem.File.Create(assemblyFile2); var subdir = PathHelper.Combine(repo.RepositoryPath, "subdir"); - this.fileSystem.CreateDirectory(subdir); + this.fileSystem.Directory.CreateDirectory(subdir); var assemblyFile3 = PathHelper.Combine(subdir, "LocalAssemblyInfo.cs"); - using var file3 = File.Create(assemblyFile3); + using var file3 = this.fileSystem.File.Create(assemblyFile3); var arguments = this.argumentParser.ParseArguments($"-targetpath {repo.RepositoryPath} -updateAssemblyInfo **/*AssemblyInfo.cs"); arguments.UpdateAssemblyInfo.ShouldBe(true); @@ -358,10 +359,10 @@ public void UpdateAssemblyInfoWithRelativeFilename() using var repo = new EmptyRepositoryFixture(); var assemblyFile = PathHelper.Combine(repo.RepositoryPath, "CommonAssemblyInfo.cs"); - using var file = File.Create(assemblyFile); + using var file = this.fileSystem.File.Create(assemblyFile); var targetPath = PathHelper.Combine(repo.RepositoryPath, "subdir1", "subdir2"); - this.fileSystem.CreateDirectory(targetPath); + this.fileSystem.Directory.CreateDirectory(targetPath); var arguments = this.argumentParser.ParseArguments($"-targetpath {targetPath} -updateAssemblyInfo ..\\..\\CommonAssemblyInfo.cs"); arguments.UpdateAssemblyInfo.ShouldBe(true); @@ -765,9 +766,9 @@ public void ThrowIfConfigurationFileDoesNotExist(string configFile) => public void EnsureConfigurationFileIsSet() { var configFile = PathHelper.GetTempPath() + Guid.NewGuid() + ".yaml"; - File.WriteAllText(configFile, "next-version: 1.0.0"); + this.fileSystem.File.WriteAllText(configFile, "next-version: 1.0.0"); var arguments = this.argumentParser.ParseArguments($"-config {configFile}"); arguments.ConfigurationFile.ShouldBe(configFile); - File.Delete(configFile); + this.fileSystem.File.Delete(configFile); } } diff --git a/src/GitVersion.App/ArgumentParser.cs b/src/GitVersion.App/ArgumentParser.cs index 7e273f99da..26fb7af233 100644 --- a/src/GitVersion.App/ArgumentParser.cs +++ b/src/GitVersion.App/ArgumentParser.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Agents; using GitVersion.Extensions; using GitVersion.Helpers; @@ -108,13 +109,13 @@ private void ValidateConfigurationFile(Arguments arguments) if (Path.IsPathRooted(arguments.ConfigurationFile)) { - if (!this.fileSystem.Exists(arguments.ConfigurationFile)) throw new WarningException($"Could not find config file at '{arguments.ConfigurationFile}'"); + if (!this.fileSystem.File.Exists(arguments.ConfigurationFile)) throw new WarningException($"Could not find config file at '{arguments.ConfigurationFile}'"); arguments.ConfigurationFile = Path.GetFullPath(arguments.ConfigurationFile); } else { var configFilePath = Path.GetFullPath(PathHelper.Combine(arguments.TargetPath, arguments.ConfigurationFile)); - if (!this.fileSystem.Exists(configFilePath)) throw new WarningException($"Could not find config file at '{configFilePath}'"); + if (!this.fileSystem.File.Exists(configFilePath)) throw new WarningException($"Could not find config file at '{configFilePath}'"); arguments.ConfigurationFile = configFilePath; } } @@ -166,7 +167,7 @@ private void ParseTargetPath(Arguments arguments, string? name, IReadOnlyList this.log.Info(logMessage)); } - if (!this.fileSystem.DirectoryExists(workingDirectory)) + if (!this.fileSystem.Directory.Exists(workingDirectory)) { this.log.Warning($"The working directory '{workingDirectory}' does not exist."); } @@ -159,7 +160,7 @@ private bool HandleNonMainCommand(GitVersionOptions gitVersionOptions, out int e return false; } - private static void ConfigureLogging(GitVersionOptions gitVersionOptions, ILog log) + private static void ConfigureLogging(GitVersionOptions gitVersionOptions, ILog log, IFileSystem fileSystem) { if (gitVersionOptions.Output.Contains(OutputType.BuildServer) || gitVersionOptions.LogFilePath == "console") { @@ -168,7 +169,7 @@ private static void ConfigureLogging(GitVersionOptions gitVersionOptions, ILog l if (gitVersionOptions.LogFilePath != null && gitVersionOptions.LogFilePath != "console") { - log.AddLogAppender(new FileAppender(gitVersionOptions.LogFilePath)); + log.AddLogAppender(new FileAppender(fileSystem, gitVersionOptions.LogFilePath)); } } } diff --git a/src/GitVersion.BuildAgents.Tests/Agents/BitBucketPipelinesTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/BitBucketPipelinesTests.cs index 3cae60d9ad..21a4bf6c79 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/BitBucketPipelinesTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/BitBucketPipelinesTests.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; @@ -10,6 +11,7 @@ namespace GitVersion.Agents.Tests; public class BitBucketPipelinesTests : TestBase { private IEnvironment environment; + private IFileSystem fileSystem; private BitBucketPipelines buildServer; private IServiceProvider sp; @@ -18,6 +20,7 @@ public void SetEnvironmentVariableForTest() { this.sp = ConfigureServices(services => services.AddSingleton()); this.environment = this.sp.GetRequiredService(); + this.fileSystem = this.sp.GetRequiredService(); this.buildServer = this.sp.GetRequiredService(); this.environment.SetEnvironmentVariable(BitBucketPipelines.EnvironmentVariableName, "MyWorkspace"); @@ -128,8 +131,8 @@ public void WriteAllVariablesToTheTextWriter() } finally { - File.Delete(propertyFile); - File.Delete(ps1File); + this.fileSystem.File.Delete(propertyFile); + this.fileSystem.File.Delete(ps1File); } } @@ -156,18 +159,18 @@ private void AssertVariablesAreWrittenToFile(string propertyFile, string ps1File writes[1].ShouldBe("1.2.3-beta.1+5"); - File.Exists(propertyFile).ShouldBe(true); + this.fileSystem.File.Exists(propertyFile).ShouldBe(true); - var props = File.ReadAllText(propertyFile); + var props = this.fileSystem.File.ReadAllText(propertyFile); props.ShouldContain("export GITVERSION_MAJOR=1"); props.ShouldContain("export GITVERSION_MINOR=2"); props.ShouldContain("export GITVERSION_SHA=f28807e615e9f06aec8a33c87780374e0c1f6fb8"); props.ShouldContain("export GITVERSION_COMMITDATE=2022-04-06"); - File.Exists(ps1File).ShouldBe(true); + this.fileSystem.File.Exists(ps1File).ShouldBe(true); - var psProps = File.ReadAllText(ps1File); + var psProps = this.fileSystem.File.ReadAllText(ps1File); psProps.ShouldContain("$GITVERSION_MAJOR = \"1\""); psProps.ShouldContain("$GITVERSION_MINOR = \"2\""); diff --git a/src/GitVersion.BuildAgents.Tests/Agents/BuildServerBaseTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/BuildServerBaseTests.cs index f1e0166beb..0042b69743 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/BuildServerBaseTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/BuildServerBaseTests.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; using GitVersion.Logging; diff --git a/src/GitVersion.BuildAgents.Tests/Agents/CodeBuildTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/CodeBuildTests.cs index cdc5de2b10..2ca79a443a 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/CodeBuildTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/CodeBuildTests.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; @@ -10,6 +11,7 @@ namespace GitVersion.Agents.Tests; public sealed class CodeBuildTests : TestBase { private IEnvironment environment; + private IFileSystem fileSystem; private IServiceProvider sp; private CodeBuild buildServer; @@ -18,6 +20,7 @@ public void SetUp() { this.sp = ConfigureServices(services => services.AddSingleton()); this.environment = this.sp.GetRequiredService(); + this.fileSystem = this.sp.GetRequiredService(); this.buildServer = this.sp.GetRequiredService(); } @@ -62,7 +65,7 @@ public void WriteAllVariablesToTheTextWriter() } finally { - File.Delete(f); + this.fileSystem.File.Delete(f); } } @@ -92,9 +95,9 @@ private void AssertVariablesAreWrittenToFile(string file) writes[1].ShouldBe("1.2.3-beta.1+5"); - File.Exists(file).ShouldBe(true); + this.fileSystem.File.Exists(file).ShouldBe(true); - var props = File.ReadAllText(file); + var props = this.fileSystem.File.ReadAllText(file); props.ShouldContain("GitVersion_Major=1"); props.ShouldContain("GitVersion_Minor=2"); diff --git a/src/GitVersion.BuildAgents.Tests/Agents/EnvRunTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/EnvRunTests.cs index 34aba8ec1b..f7df7ae10d 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/EnvRunTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/EnvRunTests.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; using Microsoft.Extensions.DependencyInjection; @@ -10,6 +11,7 @@ public class EnvRunTests : TestBase private const string EnvVarName = "ENVRUN_DATABASE"; private string mFilePath; private IEnvironment environment; + private IFileSystem fileSystem; private EnvRun buildServer; [SetUp] @@ -17,19 +19,20 @@ public void SetEnvironmentVariableForTest() { var sp = ConfigureServices(services => services.AddSingleton()); this.environment = sp.GetRequiredService(); + this.fileSystem = sp.GetRequiredService(); this.buildServer = sp.GetRequiredService(); // set environment variable and create an empty envrun file to indicate that EnvRun is running... this.mFilePath = PathHelper.Combine(PathHelper.GetTempPath(), "envrun.db"); this.environment.SetEnvironmentVariable(EnvVarName, this.mFilePath); - File.OpenWrite(this.mFilePath).Dispose(); + this.fileSystem.File.OpenWrite(this.mFilePath).Dispose(); } [TearDown] public void ClearEnvironmentVariableForTest() { this.environment.SetEnvironmentVariable(EnvVarName, null); - File.Delete(this.mFilePath); + this.fileSystem.File.Delete(this.mFilePath); } [Test] diff --git a/src/GitVersion.BuildAgents.Tests/Agents/GitHubActionsTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/GitHubActionsTests.cs index b5fd21fd0f..bae9b0d150 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/GitHubActionsTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/GitHubActionsTests.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; using Microsoft.Extensions.DependencyInjection; @@ -8,6 +9,7 @@ namespace GitVersion.Agents.Tests; public class GitHubActionsTests : TestBase { private IEnvironment environment; + private IFileSystem fileSystem; private GitHubActions buildServer; private string? githubSetEnvironmentTempFilePath; @@ -16,6 +18,7 @@ public void SetUp() { var sp = ConfigureServices(services => services.AddSingleton()); this.environment = sp.GetRequiredService(); + this.fileSystem = sp.GetRequiredService(); this.buildServer = sp.GetRequiredService(); this.environment.SetEnvironmentVariable(GitHubActions.EnvironmentVariableName, "true"); this.environment.SetEnvironmentVariable("GITHUB_REF_TYPE", "branch"); @@ -29,10 +32,10 @@ public void TearDown() { this.environment.SetEnvironmentVariable(GitHubActions.EnvironmentVariableName, null); this.environment.SetEnvironmentVariable(GitHubActions.GitHubSetEnvTempFileEnvironmentVariableName, null); - if (this.githubSetEnvironmentTempFilePath == null || !File.Exists(this.githubSetEnvironmentTempFilePath)) + if (this.githubSetEnvironmentTempFilePath == null || !this.fileSystem.File.Exists(this.githubSetEnvironmentTempFilePath)) return; - File.Delete(this.githubSetEnvironmentTempFilePath); + this.fileSystem.File.Delete(this.githubSetEnvironmentTempFilePath); this.githubSetEnvironmentTempFilePath = null; } @@ -145,7 +148,7 @@ public void ShouldWriteIntegration() var expectedFileContents = new List { "GitVersion_Major=1.0.0" }; this.githubSetEnvironmentTempFilePath.ShouldNotBeNull(); - var actualFileContents = File.ReadAllLines(this.githubSetEnvironmentTempFilePath); + var actualFileContents = this.fileSystem.File.ReadAllLines(this.githubSetEnvironmentTempFilePath); actualFileContents.ShouldBe(expectedFileContents); } diff --git a/src/GitVersion.BuildAgents.Tests/Agents/GitLabCiTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/GitLabCiTests.cs index 2e5eba6ea1..bb809fc409 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/GitLabCiTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/GitLabCiTests.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; @@ -9,16 +10,18 @@ namespace GitVersion.Agents.Tests; [TestFixture] public class GitLabCiTests : TestBase { + private IEnvironment environment; + private IFileSystem fileSystem; private IServiceProvider sp; private GitLabCi buildServer; - private IEnvironment environment; [SetUp] public void SetUp() { this.sp = ConfigureServices(services => services.AddSingleton()); - this.buildServer = this.sp.GetRequiredService(); this.environment = this.sp.GetRequiredService(); + this.fileSystem = this.sp.GetRequiredService(); + this.buildServer = this.sp.GetRequiredService(); this.environment.SetEnvironmentVariable(GitLabCi.EnvironmentVariableName, "true"); } @@ -102,7 +105,7 @@ public void WriteAllVariablesToTheTextWriter() } finally { - File.Delete(f); + this.fileSystem.File.Delete(f); } } @@ -132,9 +135,9 @@ private void AssertVariablesAreWrittenToFile(string file) writes[1].ShouldBe("1.2.3-beta.1+5"); - File.Exists(file).ShouldBe(true); + this.fileSystem.File.Exists(file).ShouldBe(true); - var props = File.ReadAllText(file); + var props = this.fileSystem.File.ReadAllText(file); props.ShouldContain("GitVersion_Major=1"); props.ShouldContain("GitVersion_Minor=2"); diff --git a/src/GitVersion.BuildAgents.Tests/Agents/JenkinsTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/JenkinsTests.cs index 12ab86d632..8e8719761a 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/JenkinsTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/JenkinsTests.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; @@ -14,6 +15,7 @@ public class JenkinsTests : TestBase private const string localBranch = "GIT_LOCAL_BRANCH"; private const string pipelineBranch = "BRANCH_NAME"; private IEnvironment environment; + private IFileSystem fileSystem; private IServiceProvider sp; private Jenkins buildServer; @@ -22,6 +24,7 @@ public void SetUp() { this.sp = ConfigureServices(services => services.AddSingleton()); this.environment = this.sp.GetRequiredService(); + this.fileSystem = this.sp.GetRequiredService(); this.buildServer = this.sp.GetRequiredService(); } @@ -118,7 +121,7 @@ public void WriteAllVariablesToTheTextWriter() } finally { - File.Delete(f); + this.fileSystem.File.Delete(f); } } @@ -144,9 +147,9 @@ private void AssertVariablesAreWrittenToFile(string file) writes[1].ShouldBe("1.2.3-beta.1+5"); - File.Exists(file).ShouldBe(true); + this.fileSystem.File.Exists(file).ShouldBe(true); - var props = File.ReadAllText(file); + var props = this.fileSystem.File.ReadAllText(file); props.ShouldContain("GitVersion_Major=1"); props.ShouldContain("GitVersion_Minor=2"); diff --git a/src/GitVersion.BuildAgents/Agents/AppVeyor.cs b/src/GitVersion.BuildAgents/Agents/AppVeyor.cs index b1b38db2da..c3b73be7f9 100644 --- a/src/GitVersion.BuildAgents/Agents/AppVeyor.cs +++ b/src/GitVersion.BuildAgents/Agents/AppVeyor.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Extensions; using GitVersion.Logging; using GitVersion.OutputVariables; diff --git a/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs b/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs index 8c4e11b372..b6fca6b9ac 100644 --- a/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs +++ b/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Extensions; using GitVersion.Logging; using GitVersion.OutputVariables; diff --git a/src/GitVersion.BuildAgents/Agents/BitBucketPipelines.cs b/src/GitVersion.BuildAgents/Agents/BitBucketPipelines.cs index 3574271132..b2954465f5 100644 --- a/src/GitVersion.BuildAgents/Agents/BitBucketPipelines.cs +++ b/src/GitVersion.BuildAgents/Agents/BitBucketPipelines.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Logging; using GitVersion.OutputVariables; @@ -54,13 +55,13 @@ public override void WriteIntegration(Action writer, GitVersionVariable .Select(variable => $"export GITVERSION_{variable.Key.ToUpperInvariant()}={variable.Value}") .ToList(); - File.WriteAllLines(this.propertyFile, exports); + this.FileSystem.File.WriteAllLines(this.propertyFile, exports); var psExports = variables .Select(variable => $"$GITVERSION_{variable.Key.ToUpperInvariant()} = \"{variable.Value}\"") .ToList(); - File.WriteAllLines(this.ps1File, psExports); + this.FileSystem.File.WriteAllLines(this.ps1File, psExports); } public override string? GetCurrentBranch(bool usingDynamicRepos) diff --git a/src/GitVersion.BuildAgents/Agents/BuildKite.cs b/src/GitVersion.BuildAgents/Agents/BuildKite.cs index 8fc493c4b5..dbd0d58d2a 100644 --- a/src/GitVersion.BuildAgents/Agents/BuildKite.cs +++ b/src/GitVersion.BuildAgents/Agents/BuildKite.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Logging; using GitVersion.OutputVariables; diff --git a/src/GitVersion.BuildAgents/Agents/CodeBuild.cs b/src/GitVersion.BuildAgents/Agents/CodeBuild.cs index 7bf2d84560..791ac37e85 100644 --- a/src/GitVersion.BuildAgents/Agents/CodeBuild.cs +++ b/src/GitVersion.BuildAgents/Agents/CodeBuild.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Extensions; using GitVersion.Logging; using GitVersion.OutputVariables; @@ -37,7 +38,7 @@ public override void WriteIntegration(Action writer, GitVersionVariable base.WriteIntegration(writer, variables, updateBuildNumber); writer($"Outputting variables to '{this.file}' ... "); - File.WriteAllLines(this.file, GenerateBuildLogOutput(variables)); + this.FileSystem.File.WriteAllLines(this.file, GenerateBuildLogOutput(variables)); } public override bool PreventFetch() => true; diff --git a/src/GitVersion.BuildAgents/Agents/ContinuaCi.cs b/src/GitVersion.BuildAgents/Agents/ContinuaCi.cs index 30d650c415..08b90a6e5a 100644 --- a/src/GitVersion.BuildAgents/Agents/ContinuaCi.cs +++ b/src/GitVersion.BuildAgents/Agents/ContinuaCi.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Logging; using GitVersion.OutputVariables; diff --git a/src/GitVersion.BuildAgents/Agents/Drone.cs b/src/GitVersion.BuildAgents/Agents/Drone.cs index 6054e91805..503815e33a 100644 --- a/src/GitVersion.BuildAgents/Agents/Drone.cs +++ b/src/GitVersion.BuildAgents/Agents/Drone.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Extensions; using GitVersion.Logging; using GitVersion.OutputVariables; diff --git a/src/GitVersion.BuildAgents/Agents/EnvRun.cs b/src/GitVersion.BuildAgents/Agents/EnvRun.cs index 1c55255757..171b945dfd 100644 --- a/src/GitVersion.BuildAgents/Agents/EnvRun.cs +++ b/src/GitVersion.BuildAgents/Agents/EnvRun.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Extensions; using GitVersion.Logging; using GitVersion.OutputVariables; @@ -13,7 +14,7 @@ public override bool CanApplyToCurrentContext() var envRunDatabasePath = Environment.GetEnvironmentVariable(EnvironmentVariableName); if (!envRunDatabasePath.IsNullOrEmpty()) { - if (!File.Exists(envRunDatabasePath)) + if (!this.FileSystem.File.Exists(envRunDatabasePath)) { this.Log.Error($"The database file of EnvRun.exe was not found at {envRunDatabasePath}."); return false; diff --git a/src/GitVersion.BuildAgents/Agents/GitHubActions.cs b/src/GitVersion.BuildAgents/Agents/GitHubActions.cs index 521ff47d0a..ff4a16d653 100644 --- a/src/GitVersion.BuildAgents/Agents/GitHubActions.cs +++ b/src/GitVersion.BuildAgents/Agents/GitHubActions.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Extensions; using GitVersion.Logging; using GitVersion.OutputVariables; @@ -31,7 +32,7 @@ public override void WriteIntegration(Action writer, GitVersionVariable if (gitHubSetEnvFilePath != null) { writer($"Writing version variables to $GITHUB_ENV file for '{GetType().Name}'."); - using var streamWriter = File.AppendText(gitHubSetEnvFilePath); + using var streamWriter = this.FileSystem.File.AppendText(gitHubSetEnvFilePath); foreach (var (key, value) in variables) { if (!value.IsNullOrEmpty()) diff --git a/src/GitVersion.BuildAgents/Agents/GitLabCi.cs b/src/GitVersion.BuildAgents/Agents/GitLabCi.cs index 0c29e423a1..350b75d849 100644 --- a/src/GitVersion.BuildAgents/Agents/GitLabCi.cs +++ b/src/GitVersion.BuildAgents/Agents/GitLabCi.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Logging; using GitVersion.OutputVariables; @@ -44,6 +45,6 @@ public override void WriteIntegration(Action writer, GitVersionVariable base.WriteIntegration(writer, variables, updateBuildNumber); writer($"Outputting variables to '{this.file}' ... "); - File.WriteAllLines(this.file, GenerateBuildLogOutput(variables)); + this.FileSystem.File.WriteAllLines(this.file, GenerateBuildLogOutput(variables)); } } diff --git a/src/GitVersion.BuildAgents/Agents/Jenkins.cs b/src/GitVersion.BuildAgents/Agents/Jenkins.cs index 6030ba0d93..e23a8be632 100644 --- a/src/GitVersion.BuildAgents/Agents/Jenkins.cs +++ b/src/GitVersion.BuildAgents/Agents/Jenkins.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Extensions; using GitVersion.Logging; using GitVersion.OutputVariables; @@ -43,6 +44,6 @@ public override void WriteIntegration(Action writer, GitVersionVariable base.WriteIntegration(writer, variables, updateBuildNumber); writer($"Outputting variables to '{this.file}' ... "); - File.WriteAllLines(this.file, GenerateBuildLogOutput(variables)); + this.FileSystem.File.WriteAllLines(this.file, GenerateBuildLogOutput(variables)); } } diff --git a/src/GitVersion.BuildAgents/Agents/MyGet.cs b/src/GitVersion.BuildAgents/Agents/MyGet.cs index 4d488834ea..ea82a27056 100644 --- a/src/GitVersion.BuildAgents/Agents/MyGet.cs +++ b/src/GitVersion.BuildAgents/Agents/MyGet.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Extensions; using GitVersion.Helpers; using GitVersion.Logging; diff --git a/src/GitVersion.BuildAgents/Agents/SpaceAutomation.cs b/src/GitVersion.BuildAgents/Agents/SpaceAutomation.cs index 41b2b3f941..1518eea9a9 100644 --- a/src/GitVersion.BuildAgents/Agents/SpaceAutomation.cs +++ b/src/GitVersion.BuildAgents/Agents/SpaceAutomation.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Logging; using GitVersion.OutputVariables; diff --git a/src/GitVersion.BuildAgents/Agents/TeamCity.cs b/src/GitVersion.BuildAgents/Agents/TeamCity.cs index 84f60b2749..30bce327d3 100644 --- a/src/GitVersion.BuildAgents/Agents/TeamCity.cs +++ b/src/GitVersion.BuildAgents/Agents/TeamCity.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Extensions; using GitVersion.Helpers; using GitVersion.Logging; diff --git a/src/GitVersion.BuildAgents/Agents/TravisCI.cs b/src/GitVersion.BuildAgents/Agents/TravisCI.cs index 6109006a21..ca4e0764a1 100644 --- a/src/GitVersion.BuildAgents/Agents/TravisCI.cs +++ b/src/GitVersion.BuildAgents/Agents/TravisCI.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Logging; using GitVersion.OutputVariables; diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs index e89ac22636..3d83a38e23 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Configuration; using GitVersion.Configuration.Tests.Configuration; using GitVersion.Core.Tests.Helpers; diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs index ca721c3a18..206b1573c6 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationProviderTests.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using System.Runtime.CompilerServices; using GitVersion.Configuration; using GitVersion.Configuration.Tests.Configuration; diff --git a/src/GitVersion.Configuration.Tests/Configuration/Extensions.cs b/src/GitVersion.Configuration.Tests/Configuration/Extensions.cs index 6000db6c6c..e6f9932e03 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/Extensions.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/Extensions.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Extensions; using GitVersion.Helpers; @@ -14,13 +15,13 @@ public static IDisposable SetupConfigFile(this IFileSystem fileSystem, s var fullPath = PathHelper.Combine(path, fileName); var directory = PathHelper.GetDirectoryName(fullPath); - if (!fileSystem.DirectoryExists(directory)) + if (!fileSystem.Directory.Exists(directory)) { - fileSystem.CreateDirectory(directory); + fileSystem.Directory.CreateDirectory(directory); } - fileSystem.WriteAllText(fullPath, text); + fileSystem.File.WriteAllText(fullPath, text); - return Disposable.Create(fullPath, () => fileSystem.Delete(fullPath)); + return Disposable.Create(fullPath, () => fileSystem.File.Delete(fullPath)); } } diff --git a/src/GitVersion.Configuration/ConfigurationFileLocator.cs b/src/GitVersion.Configuration/ConfigurationFileLocator.cs index 0354d9a0c9..efe686af59 100644 --- a/src/GitVersion.Configuration/ConfigurationFileLocator.cs +++ b/src/GitVersion.Configuration/ConfigurationFileLocator.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Extensions; using GitVersion.Helpers; using GitVersion.Logging; @@ -43,7 +44,7 @@ from candidate in candidates foreach (var candidatePath in candidatePaths) { this.log.Debug($"Trying to find configuration file at '{candidatePath}'"); - if (fileSystem.Exists(candidatePath)) + if (fileSystem.File.Exists(candidatePath)) { this.log.Info($"Found configuration file at '{candidatePath}'"); return candidatePath; diff --git a/src/GitVersion.Configuration/ConfigurationProvider.cs b/src/GitVersion.Configuration/ConfigurationProvider.cs index cf1a89a74f..1a506c080a 100644 --- a/src/GitVersion.Configuration/ConfigurationProvider.cs +++ b/src/GitVersion.Configuration/ConfigurationProvider.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Configuration.Workflows; using GitVersion.Extensions; using Microsoft.Extensions.Options; @@ -71,8 +72,8 @@ private IGitVersionConfiguration ProvideConfiguration(string? configFile, private IReadOnlyDictionary? ReadOverrideConfiguration(string? configFilePath) { - if (configFilePath == null || !fileSystem.Exists(configFilePath)) return null; - var content = fileSystem.ReadAllText(configFilePath); + if (configFilePath == null || !fileSystem.File.Exists(configFilePath)) return null; + var content = fileSystem.File.ReadAllText(configFilePath); return configurationSerializer.Deserialize>(content); } diff --git a/src/GitVersion.Core.Tests/Core/DynamicRepositoryTests.cs b/src/GitVersion.Core.Tests/Core/DynamicRepositoryTests.cs index 9fe51feda9..a8b0ca9985 100644 --- a/src/GitVersion.Core.Tests/Core/DynamicRepositoryTests.cs +++ b/src/GitVersion.Core.Tests/Core/DynamicRepositoryTests.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; using Microsoft.Extensions.DependencyInjection; @@ -49,8 +50,8 @@ public void FindsVersionInDynamicRepo(string name, string url, string targetBran gitPreparer.Prepare(); var fileSystem = sp.GetRequiredService(); - fileSystem.CreateDirectory(dynamicDirectory); - fileSystem.CreateDirectory(workingDirectory); + fileSystem.Directory.CreateDirectory(dynamicDirectory); + fileSystem.Directory.CreateDirectory(workingDirectory); var gitVersionCalculator = sp.GetRequiredService(); diff --git a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs index f2dac1d3f8..6bb47da39c 100644 --- a/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs +++ b/src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs @@ -1,6 +1,8 @@ +using System.IO.Abstractions; using GitVersion.Agents; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; +using GitVersion.Extensions; using GitVersion.Git; using GitVersion.Helpers; using GitVersion.Logging; @@ -147,7 +149,7 @@ public void CacheFileExistsOnDisk() var cacheKey = cacheKeyFactory.Create(null); var cacheFileName = this.gitVersionCacheProvider.GetCacheFileName(cacheKey); - this.fileSystem.WriteAllText(cacheFileName, versionCacheFileContent); + this.fileSystem.File.WriteAllText(cacheFileName, versionCacheFileContent); versionVariables = gitVersionCalculator.CalculateVersionVariables(); versionVariables.AssemblySemVer.ShouldBe("4.10.3.0"); @@ -199,7 +201,7 @@ public void CacheFileExistsOnDiskWhenOverrideConfigIsSpecifiedVersionShouldBeDyn var cacheKeyFactory = this.sp.GetRequiredService(); var cacheKey = cacheKeyFactory.Create(null); var cacheFileName = this.gitVersionCacheProvider.GetCacheFileName(cacheKey); - this.fileSystem.WriteAllText(cacheFileName, versionCacheFileContent); + this.fileSystem.File.WriteAllText(cacheFileName, versionCacheFileContent); var cacheDirectory = this.gitVersionCacheProvider.GetCacheDirectory(); @@ -292,13 +294,13 @@ public void ConfigChangeInvalidatesCache(string configFileName) var cacheKey = cacheKeyFactory.Create(null); var cacheFileName = this.gitVersionCacheProvider.GetCacheFileName(cacheKey); - this.fileSystem.WriteAllText(cacheFileName, versionCacheFileContent); + this.fileSystem.File.WriteAllText(cacheFileName, versionCacheFileContent); versionVariables = gitVersionCalculator.CalculateVersionVariables(); versionVariables.AssemblySemVer.ShouldBe("4.10.3.0"); var configPath = PathHelper.Combine(fixture.RepositoryPath, configFileName); - this.fileSystem.WriteAllText(configPath, "next-version: 5.0.0"); + this.fileSystem.File.WriteAllText(configPath, "next-version: 5.0.0"); gitVersionCalculator = GetGitVersionCalculator(gitVersionOptions, fs: this.fileSystem); @@ -354,7 +356,7 @@ public void NoCacheBypassesCache() var cacheKey = cacheKeyFactory.Create(null); var cacheFileName = this.gitVersionCacheProvider.GetCacheFileName(cacheKey); - this.fileSystem.WriteAllText(cacheFileName, versionCacheFileContent); + this.fileSystem.File.WriteAllText(cacheFileName, versionCacheFileContent); versionVariables = gitVersionCalculator.CalculateVersionVariables(); versionVariables.AssemblySemVer.ShouldBe("4.10.3.0"); @@ -478,8 +480,9 @@ public void GetDotGitDirectoryWorktree() public void CalculateVersionFromWorktreeHead() { // Setup + this.fileSystem = new FileSystem(); using var fixture = new EmptyRepositoryFixture(); - var repoDir = new DirectoryInfo(fixture.RepositoryPath); + var repoDir = fileSystem.DirectoryInfo.New(fixture.RepositoryPath); var worktreePath = PathHelper.Combine(repoDir.Parent?.FullName, $"{repoDir.Name}-v1"); fixture.Repository.MakeATaggedCommit("v1.0.0"); @@ -492,7 +495,7 @@ public void CalculateVersionFromWorktreeHead() var gitVersionOptions = new GitVersionOptions { WorkingDirectory = worktreeFixture.RepositoryPath }; - var sut = GetGitVersionCalculator(gitVersionOptions); + var sut = GetGitVersionCalculator(gitVersionOptions, fs: this.fileSystem); // Execute var version = sut.CalculateVersionVariables(); @@ -590,9 +593,9 @@ public void CalculateVersionVariables_ShallowFetch_ThrowException() exception?.Message.ShouldBe("Repository is a shallow clone. Git repositories must contain the full history. See https://gitversion.net/docs/reference/requirements#unshallow for more info."); } - private static string GetWorktreePath(EmptyRepositoryFixture fixture) + private string GetWorktreePath(EmptyRepositoryFixture fixture) { - var worktreePath = PathHelper.Combine(Directory.GetParent(fixture.RepositoryPath)?.FullName, Guid.NewGuid().ToString()); + var worktreePath = PathHelper.Combine(this.fileSystem.Directory.GetParent(fixture.RepositoryPath)?.FullName, Guid.NewGuid().ToString()); return worktreePath; } @@ -625,6 +628,10 @@ private static IServiceProvider GetServiceProvider(GitVersionOptions gitVersionO if (environment != null) services.AddSingleton(environment); var options = Options.Create(gitVersionOptions); services.AddSingleton(options); - services.AddSingleton(new GitRepositoryInfo(options)); + services.AddSingleton(sp => + { + var fs = sp.GetRequiredService(); + return new GitRepositoryInfo(fs, options); + }); }); } diff --git a/src/GitVersion.Core.Tests/Core/GitVersionToolDirectoryTests.cs b/src/GitVersion.Core.Tests/Core/GitVersionToolDirectoryTests.cs index 35e976bcb6..59fee991b9 100644 --- a/src/GitVersion.Core.Tests/Core/GitVersionToolDirectoryTests.cs +++ b/src/GitVersion.Core.Tests/Core/GitVersionToolDirectoryTests.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; using LibGit2Sharp; @@ -11,17 +12,20 @@ public class GitVersionTaskDirectoryTests : TestBase { private string gitDirectory; private string workDirectory; + private IFileSystem fileSystem; [SetUp] public void SetUp() { + var sp = ConfigureServices(); + this.fileSystem = sp.GetRequiredService(); this.workDirectory = PathHelper.Combine(PathHelper.GetTempPath(), Guid.NewGuid().ToString()); this.gitDirectory = Repository.Init(this.workDirectory).TrimEnd(Path.DirectorySeparatorChar); Assert.That(this.gitDirectory, Is.Not.Null); } [TearDown] - public void Cleanup() => Directory.Delete(this.workDirectory, true); + public void Cleanup() => this.fileSystem.Directory.Delete(this.workDirectory, true); [Test] public void FindsGitDirectory() @@ -43,7 +47,7 @@ public void FindsGitDirectory() public void FindsGitDirectoryInParent() { var childDir = PathHelper.Combine(this.workDirectory, "child"); - Directory.CreateDirectory(childDir); + this.fileSystem.Directory.CreateDirectory(childDir); var exception = Assert.Catch(() => { diff --git a/src/GitVersion.Core.Tests/DocumentationTests.cs b/src/GitVersion.Core.Tests/DocumentationTests.cs index 8ac444b4fd..fe753448a5 100644 --- a/src/GitVersion.Core.Tests/DocumentationTests.cs +++ b/src/GitVersion.Core.Tests/DocumentationTests.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; @@ -8,10 +9,15 @@ namespace GitVersion.Core.Tests; [TestFixture] public class DocumentationTests : TestBase { - private DirectoryInfo docsDirectory; + private IFileSystem fileSystem; + private IDirectoryInfo docsDirectory; [OneTimeSetUp] - public void OneTimeSetUp() => this.docsDirectory = GetDocsDirectory(); + public void OneTimeSetUp() + { + this.fileSystem = new FileSystem(); + this.docsDirectory = GetDocsDirectory(); + } [Test] public void ConfigurationDocumentationIsUpToDate() @@ -56,28 +62,28 @@ private string ReadDocumentationFile(string relativeDocumentationFilePath) { var documentationFilePath = PathHelper.Combine(this.docsDirectory.FullName, relativeDocumentationFilePath); // Normalize path separators and such. - documentationFilePath = new FileInfo(documentationFilePath).FullName; + documentationFilePath = fileSystem.FileInfo.New(documentationFilePath).FullName; - if (!File.Exists(documentationFilePath)) + if (!this.fileSystem.File.Exists(documentationFilePath)) { throw new FileNotFoundException($"The documentation file '{documentationFilePath}' couldn't be found.", documentationFilePath); } - return File.ReadAllText(documentationFilePath); + return this.fileSystem.File.ReadAllText(documentationFilePath); } - private static DirectoryInfo GetDocsDirectory() + private IDirectoryInfo GetDocsDirectory() { - var currentDirectory = new FileInfo(typeof(DocumentationTests).Assembly.Location).Directory; + var currentDirectory = this.fileSystem.FileInfo.New(typeof(DocumentationTests).Assembly.Location).Directory; while (currentDirectory != null) { - var docsDirectory = currentDirectory + var searchedDirectory = currentDirectory .EnumerateDirectories("docs", SearchOption.TopDirectoryOnly) .FirstOrDefault(); - if (docsDirectory != null) + if (searchedDirectory != null) { - currentDirectory = docsDirectory; + currentDirectory = searchedDirectory; break; } diff --git a/src/GitVersion.Core.Tests/Extensions/GitVersionVariablesExtensions.cs b/src/GitVersion.Core.Tests/Extensions/GitVersionVariablesExtensions.cs index 063470e5a3..6d0ae5575e 100644 --- a/src/GitVersion.Core.Tests/Extensions/GitVersionVariablesExtensions.cs +++ b/src/GitVersion.Core.Tests/Extensions/GitVersionVariablesExtensions.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.OutputVariables; namespace GitVersion.Core.Tests; diff --git a/src/GitVersion.Core.Tests/Helpers/GitVersionCoreTestModule.cs b/src/GitVersion.Core.Tests/Helpers/GitVersionCoreTestModule.cs index 755287a94d..e46989145f 100644 --- a/src/GitVersion.Core.Tests/Helpers/GitVersionCoreTestModule.cs +++ b/src/GitVersion.Core.Tests/Helpers/GitVersionCoreTestModule.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Agents; using GitVersion.Configuration; using GitVersion.Extensions; diff --git a/src/GitVersion.Core.Tests/IntegrationTests/FileSystemTests.cs b/src/GitVersion.Core.Tests/IntegrationTests/FileSystemTests.cs deleted file mode 100644 index 5c81294ff3..0000000000 --- a/src/GitVersion.Core.Tests/IntegrationTests/FileSystemTests.cs +++ /dev/null @@ -1,53 +0,0 @@ -using GitVersion.Core.Tests.Helpers; - -namespace GitVersion.Core.Tests.IntegrationTests; - -[TestFixture] -public class FileSystemTests : TestBase -{ - public string TempFilePath { get; set; } - - [SetUp] - public void CreateTempFile() => TempFilePath = Path.GetTempFileName(); - - [TearDown] - public void Cleanup() => File.Delete(TempFilePath); - - [TestCase("utf-32")] - [TestCase("utf-32BE")] - [TestCase("utf-16")] - [TestCase("utf-16BE")] - [TestCase("utf-8")] - public void WhenFileExistsWithEncodingPreambleEncodingIsPreservedAfterWriteAll(string encodingName) - { - var encoding = Encoding.GetEncoding(encodingName); - - File.WriteAllText(TempFilePath, "(-‸ლ)", encoding); - - var fileSystem = new FileSystem(); - fileSystem.WriteAllText(TempFilePath, @"¯\(◉◡◔)/¯"); - - using var stream = File.OpenRead(TempFilePath); - var preamble = encoding.GetPreamble(); - var bytes = new byte[preamble.Length]; - _ = stream.Read(bytes, 0, preamble.Length); - - bytes.ShouldBe(preamble); - } - - [Test] - public void WhenFileDoesNotExistCreateWithUtf8WithPreamble() - { - var encoding = Encoding.UTF8; - - var fileSystem = new FileSystem(); - fileSystem.WriteAllText(TempFilePath, "╚(ಠ_ಠ)=┐"); - - using var stream = File.OpenRead(TempFilePath); - var preamble = encoding.GetPreamble(); - var bytes = new byte[preamble.Length]; - _ = stream.Read(bytes, 0, preamble.Length); - - bytes.ShouldBe(preamble); - } -} diff --git a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs index de62c1008f..d47a10b7cd 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs @@ -1,10 +1,12 @@ using System.Globalization; +using System.IO.Abstractions; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; using GitVersion.Extensions; using GitVersion.Helpers; using GitVersion.VersionCalculation; using LibGit2Sharp; +using Microsoft.Extensions.DependencyInjection; namespace GitVersion.Core.Tests.IntegrationTests; @@ -102,6 +104,8 @@ public void DoNotBlowUpWhenDevelopAndFeatureBranchPointAtSameCommit() [TestCase(false, 5)] public void HasDirtyFlagWhenUncommittedChangesAreInRepository(bool stageFile, int numberOfFiles) { + var sp = ConfigureServices(); + var fileSystem = sp.GetRequiredService(); using var fixture = new EmptyRepositoryFixture(); fixture.MakeACommit(); @@ -109,8 +113,8 @@ public void HasDirtyFlagWhenUncommittedChangesAreInRepository(bool stageFile, in { var tempFile = Path.GetTempFileName(); var repoFile = PathHelper.Combine(fixture.RepositoryPath, Path.GetFileNameWithoutExtension(tempFile) + ".txt"); - File.Move(tempFile, repoFile); - File.WriteAllText(repoFile, $"Hello world / testfile {i}"); + fileSystem.File.Move(tempFile, repoFile); + fileSystem.File.WriteAllText(repoFile, $"Hello world / testfile {i}"); if (stageFile) Commands.Stage(fixture.Repository, repoFile); diff --git a/src/GitVersion.Core.Tests/IntegrationTests/WorktreeScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/WorktreeScenarios.cs index 32a1c2b4f3..8d31541820 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/WorktreeScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/WorktreeScenarios.cs @@ -1,6 +1,8 @@ +using System.IO.Abstractions; using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; using LibGit2Sharp; +using Microsoft.Extensions.DependencyInjection; namespace GitVersion.Core.Tests.IntegrationTests; @@ -10,8 +12,10 @@ public class WorktreeScenarios : TestBase [Test] public void UseWorktreeRepositoryForVersion() { + var sp = ConfigureServices(); + var fileSystem = sp.GetRequiredService(); using var fixture = new EmptyRepositoryFixture(); - var repoDir = new DirectoryInfo(fixture.RepositoryPath); + var repoDir = fileSystem.DirectoryInfo.New(fixture.RepositoryPath); repoDir.Parent.ShouldNotBeNull(); var worktreePath = PathHelper.Combine(repoDir.Parent.FullName, $"{repoDir.Name}-v1"); diff --git a/src/GitVersion.Core/Agents/BuildAgentBase.cs b/src/GitVersion.Core/Agents/BuildAgentBase.cs index 1514d42f4e..c30dd82949 100644 --- a/src/GitVersion.Core/Agents/BuildAgentBase.cs +++ b/src/GitVersion.Core/Agents/BuildAgentBase.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Extensions; using GitVersion.Logging; using GitVersion.OutputVariables; diff --git a/src/GitVersion.Core/Agents/LocalBuild.cs b/src/GitVersion.Core/Agents/LocalBuild.cs index 60a9613e6b..bb14a6d815 100644 --- a/src/GitVersion.Core/Agents/LocalBuild.cs +++ b/src/GitVersion.Core/Agents/LocalBuild.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Logging; using GitVersion.OutputVariables; diff --git a/src/GitVersion.Core/Core/Abstractions/IFileSystem.cs b/src/GitVersion.Core/Core/Abstractions/IFileSystem.cs deleted file mode 100644 index 7678d8c373..0000000000 --- a/src/GitVersion.Core/Core/Abstractions/IFileSystem.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace GitVersion; - -public interface IFileSystem -{ - void Copy(string from, string to, bool overwrite); - void Move(string from, string to); - bool Exists(string file); - void Delete(string path); - string ReadAllText(string path); - void WriteAllText(string? file, string fileContents); - void WriteAllText(string? file, string fileContents, Encoding encoding); - Stream OpenWrite(string path); - Stream OpenRead(string path); - void CreateDirectory(string path); - bool DirectoryExists(string path); - string[] GetFiles(string path); - string[] GetDirectories(string path); - IEnumerable DirectoryEnumerateFiles(string? directory, string searchPattern, SearchOption searchOption); - long GetLastDirectoryWrite(string path); - long GetLastWriteTime(string path); -} diff --git a/src/GitVersion.Core/Core/FileSystem.cs b/src/GitVersion.Core/Core/FileSystem.cs deleted file mode 100644 index 1187b06528..0000000000 --- a/src/GitVersion.Core/Core/FileSystem.cs +++ /dev/null @@ -1,59 +0,0 @@ -using GitVersion.Helpers; - -namespace GitVersion; - -internal class FileSystem : IFileSystem -{ - public void Copy(string from, string to, bool overwrite) => File.Copy(from, to, overwrite); - - public void Move(string from, string to) => File.Move(from, to); - - public bool Exists(string file) => File.Exists(file); - - public void Delete(string path) => File.Delete(path); - - public string ReadAllText(string path) => File.ReadAllText(path); - - public void WriteAllText(string? file, string fileContents) - { - // Opinionated decision to use UTF8 with BOM when creating new files or when the existing - // encoding was not easily detected due to the file not having an encoding preamble. - var encoding = EncodingHelper.DetectEncoding(file) ?? Encoding.UTF8; - WriteAllText(file, fileContents, encoding); - } - - public void WriteAllText(string? file, string fileContents, Encoding encoding) - { - ArgumentException.ThrowIfNullOrWhiteSpace(file); - - File.WriteAllText(file, fileContents, encoding); - } - - public Stream OpenWrite(string path) => File.OpenWrite(path); - - public Stream OpenRead(string path) => File.OpenRead(path); - - public void CreateDirectory(string path) => Directory.CreateDirectory(path); - - public bool DirectoryExists(string path) => Directory.Exists(path); - - public string[] GetFiles(string path) => Directory.GetFiles(path); - - public string[] GetDirectories(string path) => Directory.GetDirectories(path); - - public IEnumerable DirectoryEnumerateFiles(string? directory, string searchPattern, SearchOption searchOption) - { - ArgumentException.ThrowIfNullOrWhiteSpace(directory); - - return Directory.EnumerateFiles(directory, searchPattern, searchOption); - } - - public long GetLastWriteTime(string path) => File.GetLastWriteTime(path).Ticks; - - public long GetLastDirectoryWrite(string path) => new DirectoryInfo(path) - .GetDirectories("*.*", SearchOption.AllDirectories) - .Select(d => d.LastWriteTimeUtc) - .DefaultIfEmpty() - .Max() - .Ticks; -} diff --git a/src/GitVersion.Core/Core/GitPreparer.cs b/src/GitVersion.Core/Core/GitPreparer.cs index f159e05a0d..a1fffa9746 100644 --- a/src/GitVersion.Core/Core/GitPreparer.cs +++ b/src/GitVersion.Core/Core/GitPreparer.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Agents; using GitVersion.Configuration; using GitVersion.Extensions; @@ -118,7 +119,7 @@ private void CreateDynamicRepository(string? targetBranch) { throw new("Dynamic Git repositories should have a path specified"); } - if (!this.fileSystem.DirectoryExists(gitDirectory)) + if (!this.fileSystem.Directory.Exists(gitDirectory)) { CloneRepository(gitVersionOptions.RepositoryInfo.TargetUrl, gitDirectory, authentication); } diff --git a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs index a1e0b4bf7a..82c7b8a47f 100644 --- a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs +++ b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Core; using GitVersion.Extensions; using GitVersion.Git; @@ -122,18 +123,18 @@ public static (string GitDirectory, string WorkingTreeDirectory)? FindGitDir(thi while (startingDir is not null) { var dirOrFilePath = PathHelper.Combine(startingDir, ".git"); - if (fileSystem.DirectoryExists(dirOrFilePath)) + if (fileSystem.Directory.Exists(dirOrFilePath)) { return (dirOrFilePath, Path.GetDirectoryName(dirOrFilePath)!); } - if (fileSystem.Exists(dirOrFilePath)) + if (fileSystem.File.Exists(dirOrFilePath)) { string? relativeGitDirPath = ReadGitDirFromFile(dirOrFilePath); if (!string.IsNullOrWhiteSpace(relativeGitDirPath)) { var fullGitDirPath = Path.GetFullPath(PathHelper.Combine(startingDir, relativeGitDirPath)); - if (fileSystem.DirectoryExists(fullGitDirPath)) + if (fileSystem.Directory.Exists(fullGitDirPath)) { return (fullGitDirPath, Path.GetDirectoryName(dirOrFilePath)!); } diff --git a/src/GitVersion.Core/Extensions/FileSystemExtensions.cs b/src/GitVersion.Core/Extensions/FileSystemExtensions.cs new file mode 100644 index 0000000000..213eea6a76 --- /dev/null +++ b/src/GitVersion.Core/Extensions/FileSystemExtensions.cs @@ -0,0 +1,13 @@ +using System.IO.Abstractions; + +namespace GitVersion.Extensions; + +public static class FileSystemExtensions +{ + public static long GetLastDirectoryWrite(this IFileSystem fileSystem, string path) => fileSystem.DirectoryInfo.New(path) + .GetDirectories("*.*", SearchOption.AllDirectories) + .Select(d => d.LastWriteTimeUtc) + .DefaultIfEmpty() + .Max() + .Ticks; +} diff --git a/src/GitVersion.Core/GitVersion.Core.csproj b/src/GitVersion.Core/GitVersion.Core.csproj index a11a076110..bc311c70f1 100644 --- a/src/GitVersion.Core/GitVersion.Core.csproj +++ b/src/GitVersion.Core/GitVersion.Core.csproj @@ -15,6 +15,7 @@ + diff --git a/src/GitVersion.Core/GitVersionCommonModule.cs b/src/GitVersion.Core/GitVersionCommonModule.cs index a4e0b53642..767b780e52 100644 --- a/src/GitVersion.Core/GitVersionCommonModule.cs +++ b/src/GitVersion.Core/GitVersionCommonModule.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Agents; using GitVersion.Logging; using Microsoft.Extensions.DependencyInjection; diff --git a/src/GitVersion.Core/Helpers/DirectoryHelper.cs b/src/GitVersion.Core/Helpers/DirectoryHelper.cs index 0bf996404e..5acff873bf 100644 --- a/src/GitVersion.Core/Helpers/DirectoryHelper.cs +++ b/src/GitVersion.Core/Helpers/DirectoryHelper.cs @@ -2,37 +2,6 @@ namespace GitVersion.Helpers; internal static class DirectoryHelper { - private static readonly Dictionary ToRename = new() - { - { "gitted", ".git" }, - { "gitmodules", ".gitmodules" } - }; - - public static void CopyFilesRecursively(DirectoryInfo source, DirectoryInfo target) - { - // From http://stackoverflow.com/questions/58744/best-way-to-copy-the-entire-contents-of-a-directory-in-c/58779#58779 - - foreach (var dir in source.GetDirectories()) - { - CopyFilesRecursively(dir, target.CreateSubdirectory(Rename(dir.Name))); - } - foreach (var file in source.GetFiles()) - { - file.CopyTo(PathHelper.Combine(target.FullName, Rename(file.Name))); - } - } - - private static string Rename(string name) => ToRename.GetValueOrDefault(name, name); - - public static void DeleteSubDirectories(string parentPath) - { - var dirs = Directory.GetDirectories(parentPath); - foreach (var dir in dirs) - { - DeleteDirectory(dir); - } - } - public static void DeleteDirectory(string directoryPath) { // From http://stackoverflow.com/questions/329355/cannot-delete-directory-with-directory-deletepath-true/329502#329502 diff --git a/src/GitVersion.Core/Helpers/EncodingHelper.cs b/src/GitVersion.Core/Helpers/EncodingHelper.cs deleted file mode 100644 index 8f0e3af85f..0000000000 --- a/src/GitVersion.Core/Helpers/EncodingHelper.cs +++ /dev/null @@ -1,95 +0,0 @@ -namespace GitVersion.Helpers; - -public static class EncodingHelper -{ - private static IList? encodingsWithPreambles; - - private static int maxPreambleLength; - - /// - /// Detects the encoding of a file if and only if it includes a preamble . - /// - /// The file name to check the encoding of. - /// The encoding of the file if it has a preamble otherwise null. - public static Encoding? DetectEncoding(string? filename) - { - if (string.IsNullOrEmpty(filename) || !File.Exists(filename)) - { - return null; - } - - if (encodingsWithPreambles == null) - { - ScanEncodings(); - } - - using var stream = File.OpenRead(filename); - // No bytes? No encoding! - if (stream.Length == 0) - { - return null; - } - - // Read the minimum amount necessary. - var length = stream.Length > maxPreambleLength ? maxPreambleLength : stream.Length; - - var bytes = new byte[length]; - _ = stream.Read(bytes, 0, (int)length); - return DetectEncoding(bytes); - } - - /// - /// Returns the first encoding where all the preamble bytes match exactly. - /// - /// The bytes to check for a matching preamble. - /// The encoding that has a matching preamble or null if one was not found. - public static Encoding? DetectEncoding(IList bytes) - { - if (bytes.Count == 0) - { - return null; - } - - if (encodingsWithPreambles == null) - { - ScanEncodings(); - } - - return encodingsWithPreambles?.FirstOrDefault(encoding => PreambleMatches(encoding, bytes)); - } - - /// - /// Returns an ordered list of encodings that have preambles ordered by the length of the - /// preamble longest to shortest. This prevents a short preamble masking a longer one - /// later in the list. - /// - /// An ordered list of encodings and corresponding preambles. - private static void ScanEncodings() - { - var encodings = (Encoding.GetEncodings()); - encodingsWithPreambles = (from info in encodings - let encoding = info.GetEncoding() - let preamble = encoding.GetPreamble() - where preamble.Length > 0 - orderby preamble.Length descending - select encoding).ToList(); - - var encodingWithLongestPreamble = encodingsWithPreambles.FirstOrDefault(); - maxPreambleLength = encodingWithLongestPreamble?.GetPreamble().Length ?? 0; - } - - /// - /// Verifies that all bytes of an encoding's preamble are present at the beginning of some sample data. - /// - /// The encoding to check against. - /// The data to test. - /// A boolean indicating if a preamble match was found. - private static bool PreambleMatches(Encoding encoding, IList data) - { - var preamble = encoding.GetPreamble(); - if (preamble.Length > data.Count) - return false; - - return !preamble.Where((preambleByte, index) => data[index] != preambleByte).Any(); - } -} diff --git a/src/GitVersion.Core/PublicAPI.Shipped.txt b/src/GitVersion.Core/PublicAPI.Shipped.txt index e8e7ed46a5..646e2c5952 100644 --- a/src/GitVersion.Core/PublicAPI.Shipped.txt +++ b/src/GitVersion.Core/PublicAPI.Shipped.txt @@ -331,7 +331,6 @@ GitVersion.GitVersionOptions.WixInfo.get -> GitVersion.WixInfo! GitVersion.GitVersionOptions.WorkingDirectory.get -> string! GitVersion.GitVersionOptions.WorkingDirectory.set -> void GitVersion.Helpers.Disposable -GitVersion.Helpers.EncodingHelper GitVersion.Helpers.IDisposable GitVersion.Helpers.IDisposable.Value.get -> T GitVersion.Helpers.LambdaEqualityHelper @@ -352,23 +351,6 @@ GitVersion.IConverterContext.WorkingDirectory.get -> string! GitVersion.IEnvironment GitVersion.IEnvironment.GetEnvironmentVariable(string! variableName) -> string? GitVersion.IEnvironment.SetEnvironmentVariable(string! variableName, string? value) -> void -GitVersion.IFileSystem -GitVersion.IFileSystem.Copy(string! from, string! to, bool overwrite) -> void -GitVersion.IFileSystem.CreateDirectory(string! path) -> void -GitVersion.IFileSystem.Delete(string! path) -> void -GitVersion.IFileSystem.DirectoryEnumerateFiles(string? directory, string! searchPattern, System.IO.SearchOption searchOption) -> System.Collections.Generic.IEnumerable! -GitVersion.IFileSystem.DirectoryExists(string! path) -> bool -GitVersion.IFileSystem.Exists(string! file) -> bool -GitVersion.IFileSystem.GetDirectories(string! path) -> string![]! -GitVersion.IFileSystem.GetFiles(string! path) -> string![]! -GitVersion.IFileSystem.GetLastDirectoryWrite(string! path) -> long -GitVersion.IFileSystem.GetLastWriteTime(string! path) -> long -GitVersion.IFileSystem.Move(string! from, string! to) -> void -GitVersion.IFileSystem.OpenRead(string! path) -> System.IO.Stream! -GitVersion.IFileSystem.OpenWrite(string! path) -> System.IO.Stream! -GitVersion.IFileSystem.ReadAllText(string! path) -> string! -GitVersion.IFileSystem.WriteAllText(string? file, string! fileContents, System.Text.Encoding! encoding) -> void -GitVersion.IFileSystem.WriteAllText(string? file, string! fileContents) -> void GitVersion.IGitPreparer GitVersion.IGitPreparer.EnsureLocalBranchExistsForCurrentBranch(GitVersion.Git.IRemote! remote, string! currentBranch) -> void GitVersion.IGitPreparer.Prepare() -> void @@ -778,8 +760,6 @@ static GitVersion.Git.ReferenceName.operator ==(GitVersion.Git.ReferenceName? le static GitVersion.Git.ReferenceName.Parse(string! canonicalName) -> GitVersion.Git.ReferenceName! static GitVersion.Helpers.Disposable.Create(System.Action! disposer) -> System.IDisposable! static GitVersion.Helpers.Disposable.Create(T value, System.Action! disposer) -> GitVersion.Helpers.IDisposable! -static GitVersion.Helpers.EncodingHelper.DetectEncoding(string? filename) -> System.Text.Encoding? -static GitVersion.Helpers.EncodingHelper.DetectEncoding(System.Collections.Generic.IList! bytes) -> System.Text.Encoding? static GitVersion.Helpers.ServiceMessageEscapeHelper.EscapeValue(string? value) -> string? static GitVersion.Logging.LogExtensions.Debug(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogAction! logAction) -> void static GitVersion.Logging.LogExtensions.Debug(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, GitVersion.Logging.LogAction! logAction) -> void diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 7dc5c58110..57bf801923 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -1 +1,3 @@ #nullable enable +GitVersion.Extensions.FileSystemExtensions +static GitVersion.Extensions.FileSystemExtensions.GetLastDirectoryWrite(this System.IO.Abstractions.IFileSystem! fileSystem, string! path) -> long diff --git a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs index c91350e733..908f1a8124 100644 --- a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs +++ b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using System.Security.Cryptography; using GitVersion.Common; using GitVersion.Configuration; @@ -57,7 +58,7 @@ private List CalculateDirectoryContents(string root) // examined for files. var dirs = new Stack(); - if (!this.fileSystem.DirectoryExists(root)) + if (!this.fileSystem.Directory.Exists(root)) { throw new DirectoryNotFoundException($"Root directory does not exist: {root}"); } @@ -68,13 +69,13 @@ private List CalculateDirectoryContents(string root) { var currentDir = dirs.Pop(); - var di = new DirectoryInfo(currentDir); + var di = this.fileSystem.DirectoryInfo.New(currentDir); result.Add(di.Name); string[] subDirs; try { - subDirs = this.fileSystem.GetDirectories(currentDir); + subDirs = this.fileSystem.Directory.GetDirectories(currentDir); } // An UnauthorizedAccessException exception will be thrown if we do not have // discovery permission on a folder or file. It may or may not be acceptable @@ -99,7 +100,7 @@ private List CalculateDirectoryContents(string root) string[] files; try { - files = this.fileSystem.GetFiles(currentDir); + files = this.fileSystem.Directory.GetFiles(currentDir); } catch (UnauthorizedAccessException e) { @@ -116,9 +117,9 @@ private List CalculateDirectoryContents(string root) { try { - if (!this.fileSystem.Exists(file)) continue; + if (!this.fileSystem.File.Exists(file)) continue; result.Add(Path.GetFileName(file)); - result.Add(this.fileSystem.ReadAllText(file)); + result.Add(this.fileSystem.File.ReadAllText(file)); } catch (IOException e) { @@ -174,9 +175,9 @@ private string GetConfigFileHash() var configFilePath = this.configFileLocator.GetConfigurationFile(workingDirectory) ?? this.configFileLocator.GetConfigurationFile(projectRootDirectory); if (configFilePath == null) return string.Empty; - if (!this.fileSystem.Exists(configFilePath)) return string.Empty; + if (!this.fileSystem.File.Exists(configFilePath)) return string.Empty; - var configFileContent = this.fileSystem.ReadAllText(configFilePath); + var configFileContent = this.fileSystem.File.ReadAllText(configFilePath); return GetHash(configFileContent); } diff --git a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheProvider.cs b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheProvider.cs index 63a67e6afb..59363dc86f 100644 --- a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheProvider.cs +++ b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheProvider.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Extensions; using GitVersion.Git; using GitVersion.Helpers; @@ -46,7 +47,7 @@ public void WriteVariablesToDiskCache(GitVersionVariables versionVariables) var cacheFileName = GetCacheFileName(cacheKey); using (this.log.IndentLog($"Loading version variables from disk cache file {cacheFileName}")) { - if (!this.fileSystem.Exists(cacheFileName)) + if (!this.fileSystem.File.Exists(cacheFileName)) { this.log.Info($"Cache file {cacheFileName} not found."); return null; @@ -63,7 +64,7 @@ public void WriteVariablesToDiskCache(GitVersionVariables versionVariables) this.log.Info(ex.ToString()); try { - this.fileSystem.Delete(cacheFileName); + this.fileSystem.File.Delete(cacheFileName); } catch (Exception deleteEx) { @@ -92,7 +93,7 @@ private string PrepareCacheDirectory() var cacheDir = GetCacheDirectory(); // If the cacheDir already exists, CreateDirectory just won't do anything (it won't fail). @asbjornu - this.fileSystem.CreateDirectory(cacheDir); + this.fileSystem.Directory.CreateDirectory(cacheDir); return cacheDir; } diff --git a/src/GitVersion.LibGit2Sharp/Git/GitRepositoryInfo.cs b/src/GitVersion.LibGit2Sharp/Git/GitRepositoryInfo.cs index c429db97cf..9cbf267f9d 100644 --- a/src/GitVersion.LibGit2Sharp/Git/GitRepositoryInfo.cs +++ b/src/GitVersion.LibGit2Sharp/Git/GitRepositoryInfo.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Extensions; using GitVersion.Helpers; using LibGit2Sharp; @@ -7,17 +8,18 @@ namespace GitVersion.Git; internal class GitRepositoryInfo : IGitRepositoryInfo { - private readonly IOptions options; - private GitVersionOptions gitVersionOptions => this.options.Value; + private readonly IFileSystem fileSystem; + private readonly GitVersionOptions gitVersionOptions; private readonly Lazy dynamicGitRepositoryPath; private readonly Lazy dotGitDirectory; private readonly Lazy gitRootPath; private readonly Lazy projectRootDirectory; - public GitRepositoryInfo(IOptions options) + public GitRepositoryInfo(IFileSystem fileSystem, IOptions options) { - this.options = options.NotNull(); + this.fileSystem = fileSystem.NotNull(); + this.gitVersionOptions = options.NotNull().Value; this.dynamicGitRepositoryPath = new(GetDynamicGitRepositoryPath); this.dotGitDirectory = new(GetDotGitDirectory); @@ -43,7 +45,7 @@ public GitRepositoryInfo(IOptions options) var possiblePath = PathHelper.Combine(userTemp, repositoryName); // Verify that the existing directory is ok for us to use - if (Directory.Exists(possiblePath) && !GitRepoHasMatchingRemote(possiblePath, targetUrl)) + if (this.fileSystem.Directory.Exists(possiblePath) && !GitRepoHasMatchingRemote(possiblePath, targetUrl)) { var i = 1; var originalPath = possiblePath; @@ -51,7 +53,7 @@ public GitRepositoryInfo(IOptions options) do { possiblePath = $"{originalPath}_{i++}"; - possiblePathExists = Directory.Exists(possiblePath); + possiblePathExists = this.fileSystem.Directory.Exists(possiblePath); } while (possiblePathExists && !GitRepoHasMatchingRemote(possiblePath, targetUrl)); } @@ -69,9 +71,9 @@ public GitRepositoryInfo(IOptions options) if (gitDirectory.IsNullOrEmpty()) throw new DirectoryNotFoundException("Cannot find the .git directory"); - var directoryInfo = Directory.GetParent(gitDirectory) ?? throw new DirectoryNotFoundException("Cannot find the .git directory"); + var directoryInfo = this.fileSystem.Directory.GetParent(gitDirectory) ?? throw new DirectoryNotFoundException("Cannot find the .git directory"); return gitDirectory.Contains(PathHelper.Combine(".git", "worktrees")) - ? Directory.GetParent(directoryInfo.FullName)?.FullName + ? this.fileSystem.Directory.GetParent(directoryInfo.FullName)?.FullName : gitDirectory; } diff --git a/src/GitVersion.MsBuild.Tests/InvalidFileCheckerTests.cs b/src/GitVersion.MsBuild.Tests/InvalidFileCheckerTests.cs index 17d2aeae8a..2efca18ee2 100644 --- a/src/GitVersion.MsBuild.Tests/InvalidFileCheckerTests.cs +++ b/src/GitVersion.MsBuild.Tests/InvalidFileCheckerTests.cs @@ -1,6 +1,8 @@ +using System.IO.Abstractions; using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; using GitVersion.MsBuild.Tests.Mocks; +using Microsoft.Extensions.DependencyInjection; namespace GitVersion.MsBuild.Tests; @@ -9,25 +11,28 @@ public class InvalidFileCheckerTests : TestBase { private string projectDirectory; private string projectFile; + private IFileSystem fileSystem; [SetUp] public void CreateTemporaryProject() { + var sp = ConfigureServices(); + this.fileSystem = sp.GetRequiredService(); this.projectDirectory = PathHelper.Combine(PathHelper.GetTempPath(), Guid.NewGuid().ToString()); this.projectFile = PathHelper.Combine(this.projectDirectory, "Fake.csproj"); - Directory.CreateDirectory(this.projectDirectory); + this.fileSystem.Directory.CreateDirectory(this.projectDirectory); - File.Create(this.projectFile).Close(); + this.fileSystem.File.Create(this.projectFile).Close(); } [TearDown] - public void Cleanup() => Directory.Delete(this.projectDirectory, true); + public void Cleanup() => this.fileSystem.Directory.Delete(this.projectDirectory, true); [Test] public void VerifyIgnoreNonAssemblyInfoFile() { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "SomeOtherFile.cs"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "SomeOtherthis.fileSystem.File.cs"))) { writer.Write(""" @@ -39,13 +44,13 @@ public void VerifyIgnoreNonAssemblyInfoFile() """); } - AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "SomeOtherFile.cs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "SomeOtherthis.fileSystem.File.cs" }], this.projectFile); } [Test] public void VerifyAttributeFoundCSharp([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion", "System.Reflection.AssemblyVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.cs"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.cs"))) { writer.Write(""" @@ -57,7 +62,7 @@ public void VerifyAttributeFoundCSharp([Values("AssemblyVersion", "AssemblyFileV """, attribute); } - var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile), attribute); + var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile), attribute); ex.ShouldNotBeNull(); Assert.That(ex.Message, Is.EqualTo("File contains assembly version attributes which conflict with the attributes generated by GitVersion AssemblyInfo.cs")); } @@ -65,7 +70,7 @@ public void VerifyAttributeFoundCSharp([Values("AssemblyVersion", "AssemblyFileV [Test] public void VerifyUnformattedAttributeFoundCSharp([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion", "System . Reflection . AssemblyVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.cs"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.cs"))) { writer.Write(""" @@ -78,7 +83,7 @@ public void VerifyUnformattedAttributeFoundCSharp([Values("AssemblyVersion", "As """, attribute); } - var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile), attribute); + var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile), attribute); ex.ShouldNotBeNull(); Assert.That(ex.Message, Is.EqualTo("File contains assembly version attributes which conflict with the attributes generated by GitVersion AssemblyInfo.cs")); } @@ -86,7 +91,7 @@ public void VerifyUnformattedAttributeFoundCSharp([Values("AssemblyVersion", "As [Test] public void VerifyCommentWorksCSharp([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.cs"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.cs"))) { writer.Write(""" @@ -98,13 +103,13 @@ public void VerifyCommentWorksCSharp([Values("AssemblyVersion", "AssemblyFileVer """, attribute); } - AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile); } [Test] public void VerifyCommentWithNoNewLineAtEndWorksCSharp([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.cs"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.cs"))) { writer.Write(""" @@ -115,13 +120,13 @@ public void VerifyCommentWithNoNewLineAtEndWorksCSharp([Values("AssemblyVersion" """, attribute); } - AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile); } [Test] public void VerifyStringWorksCSharp([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.cs"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.cs"))) { writer.Write(""" @@ -136,13 +141,13 @@ public class Temp """, attribute); } - AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile); } [Test] public void VerifyIdentifierWorksCSharp([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.cs"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.cs"))) { writer.Write(""" @@ -156,13 +161,13 @@ public class {0} """, attribute); } - AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.cs" }], this.projectFile); } [Test] public void VerifyAttributeFoundVisualBasic([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion", "System.Reflection.AssemblyVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.vb"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.vb"))) { writer.Write(""" @@ -174,7 +179,7 @@ Imports System.Reflection """, attribute); } - var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile), attribute); + var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile), attribute); ex.ShouldNotBeNull(); Assert.That(ex.Message, Is.EqualTo("File contains assembly version attributes which conflict with the attributes generated by GitVersion AssemblyInfo.vb")); } @@ -182,7 +187,7 @@ Imports System.Reflection [Test] public void VerifyUnformattedAttributeFoundVisualBasic([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion", "System . Reflection . AssemblyVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.vb"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.vb"))) { writer.Write(""" @@ -195,7 +200,7 @@ Imports System.Reflection """, attribute); } - var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile), attribute); + var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile), attribute); ex.ShouldNotBeNull(); Assert.That(ex.Message, Is.EqualTo("File contains assembly version attributes which conflict with the attributes generated by GitVersion AssemblyInfo.vb")); } @@ -203,7 +208,7 @@ Imports System.Reflection [Test] public void VerifyCommentWorksVisualBasic([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.vb"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.vb"))) { writer.Write(""" @@ -215,13 +220,13 @@ Imports System.Reflection """, attribute); } - AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile); } [Test] public void VerifyCommentWithNoNewLineAtEndWorksVisualBasic([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.vb"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.vb"))) { writer.Write(""" @@ -232,13 +237,13 @@ Imports System.Reflection """, attribute); } - AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile); } [Test] public void VerifyStringWorksVisualBasic([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.vb"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.vb"))) { writer.Write(""" @@ -252,13 +257,13 @@ End Class """, attribute); } - AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile); } [Test] public void VerifyIdentifierWorksVisualBasic([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.vb"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.vb"))) { writer.Write(""" @@ -271,13 +276,13 @@ End Class """, attribute); } - AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.vb" }], this.projectFile); } [Test] public void VerifyAttributeFoundFSharp([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion", "System.Reflection.AssemblyVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.fs"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.fs"))) { writer.Write(""" @@ -289,7 +294,7 @@ open System.Reflection """, attribute); } - var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile), attribute); + var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile), attribute); ex.ShouldNotBeNull(); Assert.That(ex.Message, Is.EqualTo("File contains assembly version attributes which conflict with the attributes generated by GitVersion AssemblyInfo.fs")); } @@ -297,7 +302,7 @@ open System.Reflection [Test] public void VerifyUnformattedAttributeFoundFSharp([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion", "System . Reflection . AssemblyVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.fs"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.fs"))) { writer.Write(""" @@ -310,7 +315,7 @@ open System.Reflection """, attribute); } - var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile), attribute); + var ex = Assert.Throws(() => AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile), attribute); ex.ShouldNotBeNull(); Assert.That(ex.Message, Is.EqualTo("File contains assembly version attributes which conflict with the attributes generated by GitVersion AssemblyInfo.fs")); } @@ -318,7 +323,7 @@ open System.Reflection [Test] public void VerifyCommentWorksFSharp([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.fs"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.fs"))) { writer.Write(""" @@ -330,13 +335,13 @@ open System.Reflection """, attribute); } - AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile); } [Test] public void VerifyCommentWithNoNewLineAtEndWorksFSharp([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.fs"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.fs"))) { writer.Write(""" @@ -347,13 +352,13 @@ open System.Reflection """, attribute); } - AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile); } [Test] public void VerifyStringWorksFSharp([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.fs"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.fs"))) { writer.Write(""" @@ -366,13 +371,13 @@ type Temp() = """, attribute); } - AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile); } [Test] public void VerifyIdentifierWorksFSharp([Values("AssemblyVersion", "AssemblyFileVersion", "AssemblyInformationalVersion")] string attribute) { - using (var writer = File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.fs"))) + using (var writer = this.fileSystem.File.CreateText(PathHelper.Combine(this.projectDirectory, "AssemblyInfo.fs"))) { writer.Write(""" @@ -384,6 +389,6 @@ open System.Reflection """, attribute); } - AssemblyInfoFileHelper.CheckForInvalidFiles([new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, [new MockTaskItem { ItemSpec = "AssemblyInfo.fs" }], this.projectFile); } } diff --git a/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs b/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs index 6de414702a..ec0fb010bd 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs @@ -31,7 +31,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFile(string language) result.Task.GitVersionInformationFilePath.ShouldNotBeNull(); result.Task.GitVersionInformationFilePath.ShouldMatch($@"GitVersionInformation.*\.g\.{extension}"); - var fileContent = File.ReadAllText(result.Task.GitVersionInformationFilePath); + var fileContent = this.FileSystem.File.ReadAllText(result.Task.GitVersionInformationFilePath); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Major), "1")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Minor), "2")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Patch), "4")); @@ -52,7 +52,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileInBuildServer(strin result.Task.GitVersionInformationFilePath.ShouldNotBeNull(); result.Task.GitVersionInformationFilePath.ShouldMatch($@"GitVersionInformation.*\.g\.{extension}"); - var fileContent = File.ReadAllText(result.Task.GitVersionInformationFilePath); + var fileContent = this.FileSystem.File.ReadAllText(result.Task.GitVersionInformationFilePath); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Major), "1")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Minor), "0")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Patch), "1")); @@ -79,7 +79,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuild( var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), $"GitVersionInformation.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); - var fileContent = File.ReadAllText(generatedFilePath); + var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Major), "1")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Minor), "2")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Patch), "4")); @@ -106,7 +106,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildI var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), $"GitVersionInformation.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); - var fileContent = File.ReadAllText(generatedFilePath); + var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Major), "1")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Minor), "0")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Patch), "1")); @@ -127,7 +127,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenIntermediateOut result.Task.GitVersionInformationFilePath.ShouldNotBeNull(); result.Task.GitVersionInformationFilePath.ShouldMatch($@"GitVersionInformation.*\.g\.{extension}"); - var fileContent = File.ReadAllText(result.Task.GitVersionInformationFilePath); + var fileContent = this.FileSystem.File.ReadAllText(result.Task.GitVersionInformationFilePath); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Major), "1")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Minor), "2")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Patch), "4")); @@ -149,7 +149,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileInBuildServerWhenIn result.Task.GitVersionInformationFilePath.ShouldNotBeNull(); result.Task.GitVersionInformationFilePath.ShouldMatch($@"GitVersionInformation.*\.g\.{extension}"); - var fileContent = File.ReadAllText(result.Task.GitVersionInformationFilePath); + var fileContent = this.FileSystem.File.ReadAllText(result.Task.GitVersionInformationFilePath); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Major), "1")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Minor), "0")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Patch), "1")); @@ -181,7 +181,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), randDir, $"GitVersionInformation.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); - var fileContent = File.ReadAllText(generatedFilePath); + var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Major), "1")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Minor), "2")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Patch), "4")); @@ -212,7 +212,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), randDir, $"GitVersionInformation.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); - var fileContent = File.ReadAllText(generatedFilePath); + var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Major), "1")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Minor), "0")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Patch), "1")); @@ -243,7 +243,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), randDir, $"GitVersionInformation.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); - var fileContent = File.ReadAllText(generatedFilePath); + var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); TestContext.Out.WriteLine(fileContent); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Major), "1")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Minor), "2")); @@ -276,7 +276,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), randDir, $"GitVersionInformation.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); - var fileContent = File.ReadAllText(generatedFilePath); + var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Major), "1")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Minor), "0")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Patch), "1")); @@ -302,7 +302,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWithUseProjectNames result.Task.GitVersionInformationFilePath.ShouldNotBeNull(); result.Task.GitVersionInformationFilePath.ShouldMatch($@"GitVersionInformation.*\.g\.{extension}"); - var fileContent = File.ReadAllText(result.Task.GitVersionInformationFilePath); + var fileContent = this.FileSystem.File.ReadAllText(result.Task.GitVersionInformationFilePath); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Major), "1")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Minor), "2")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Patch), "4")); @@ -329,7 +329,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWithUseProjectNames result.Task.GitVersionInformationFilePath.ShouldNotBeNull(); result.Task.GitVersionInformationFilePath.ShouldMatch($@"GitVersionInformation.*\.g\.{extension}"); - var fileContent = File.ReadAllText(result.Task.GitVersionInformationFilePath); + var fileContent = this.FileSystem.File.ReadAllText(result.Task.GitVersionInformationFilePath); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Major), "1")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Minor), "2")); fileContent.ShouldMatch(string.Format(regexPattern, nameof(GitVersionVariables.Patch), "4")); diff --git a/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs b/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs index 8c0df2dea9..fc155e8bb3 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Agents; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; @@ -5,11 +6,21 @@ using GitVersion.MsBuild.Tests.Helpers; using LibGit2Sharp; using Microsoft.Build.Utilities.ProjectCreation; +using Microsoft.Extensions.DependencyInjection; namespace GitVersion.MsBuild.Tests.Tasks; public class TestTaskBase : TestBase { + protected IFileSystem FileSystem; + + [SetUp] + public void SetUp() + { + var sp = ConfigureServices(); + this.FileSystem = sp.GetRequiredService(); + } + private static readonly IDictionary env = new Dictionary { { AzurePipelines.EnvironmentVariableName, "true" }, diff --git a/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs b/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs index b353bb6af2..17c7072665 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs @@ -29,7 +29,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFile(string language) result.Task.AssemblyInfoTempFilePath.ShouldNotBeNull(); result.Task.AssemblyInfoTempFilePath.ShouldMatch($@"AssemblyInfo.*\.g\.{extension}"); - var fileContent = File.ReadAllText(result.Task.AssemblyInfoTempFilePath); + var fileContent = this.FileSystem.File.ReadAllText(result.Task.AssemblyInfoTempFilePath); fileContent.ShouldContain(@"assembly: AssemblyVersion(""1.2.4.0"")"); } @@ -46,7 +46,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileInBuildServer(string language) result.Task.AssemblyInfoTempFilePath.ShouldNotBeNull(); result.Task.AssemblyInfoTempFilePath.ShouldMatch($@"AssemblyInfo.*\.g\.{extension}"); - var fileContent = File.ReadAllText(result.Task.AssemblyInfoTempFilePath); + var fileContent = this.FileSystem.File.ReadAllText(result.Task.AssemblyInfoTempFilePath); fileContent.ShouldContain(@"assembly: AssemblyVersion(""1.0.1.0"")"); } @@ -69,7 +69,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenRunWithMsBuild(string lang var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), $"AssemblyInfo.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); - var fileContent = File.ReadAllText(generatedFilePath); + var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); fileContent.ShouldContain(@"assembly: AssemblyVersion(""1.2.4.0"")"); } @@ -92,7 +92,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenRunWithMsBuildInBuildServe var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), $"AssemblyInfo.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); - var fileContent = File.ReadAllText(generatedFilePath); + var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); fileContent.ShouldContain(@"assembly: AssemblyVersion(""1.0.1.0"")"); } @@ -109,7 +109,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenIntermediateOutputPathDoes result.Task.AssemblyInfoTempFilePath.ShouldNotBeNull(); result.Task.AssemblyInfoTempFilePath.ShouldMatch($@"AssemblyInfo.*\.g\.{extension}"); - var fileContent = File.ReadAllText(result.Task.AssemblyInfoTempFilePath); + var fileContent = this.FileSystem.File.ReadAllText(result.Task.AssemblyInfoTempFilePath); fileContent.ShouldContain(@"assembly: AssemblyVersion(""1.2.4.0"")"); DirectoryHelper.DeleteDirectory(task.IntermediateOutputPath); } @@ -127,7 +127,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenIntermediateOutputPathDoes result.Task.AssemblyInfoTempFilePath.ShouldNotBeNull(); result.Task.AssemblyInfoTempFilePath.ShouldMatch($@"AssemblyInfo.*\.g\.{extension}"); - var fileContent = File.ReadAllText(result.Task.AssemblyInfoTempFilePath); + var fileContent = this.FileSystem.File.ReadAllText(result.Task.AssemblyInfoTempFilePath); fileContent.ShouldContain(@"assembly: AssemblyVersion(""1.0.1.0"")"); DirectoryHelper.DeleteDirectory(task.IntermediateOutputPath); } @@ -155,7 +155,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenRunWithMsBuildAndIntermedi var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), randDir, $"AssemblyInfo.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); - var fileContent = File.ReadAllText(generatedFilePath); + var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); fileContent.ShouldContain(@"assembly: AssemblyVersion(""1.2.4.0"")"); } @@ -182,7 +182,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenRunWithMsBuildAndIntermedi var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), randDir, $"AssemblyInfo.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); - var fileContent = File.ReadAllText(generatedFilePath); + var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); fileContent.ShouldContain(@"assembly: AssemblyVersion(""1.0.1.0"")"); } diff --git a/src/GitVersion.MsBuild.Tests/Tasks/WriteVersionInfoTest.cs b/src/GitVersion.MsBuild.Tests/Tasks/WriteVersionInfoTest.cs index a941917b96..d45eff7758 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/WriteVersionInfoTest.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/WriteVersionInfoTest.cs @@ -74,21 +74,17 @@ public void WriteVersionInfoTaskShouldLogOutputVariablesToBuildOutputInGitHubAct envFilePath = $"{PathHelper.GetTempPath()}/github-env.txt"; SysEnv.SetEnvironmentVariable("GITHUB_ENV", envFilePath); - if (File.Exists(envFilePath)) - { - File.Delete(envFilePath); - } - var task = new WriteVersionInfoToBuildLog(); using var result = ExecuteMsBuildTaskInGitHubActions(task); result.Success.ShouldBe(true); result.Errors.ShouldBe(0); - string content = File.ReadAllText(envFilePath); + + string content = this.FileSystem.File.ReadAllText(envFilePath); content.ShouldContain("GitVersion_SemVer=1.0.1"); - File.Delete(envFilePath); + this.FileSystem.File.Delete(envFilePath); } [Test] diff --git a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs index 2052267982..3686d25e56 100644 --- a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs +++ b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Configuration; using GitVersion.Extensions; using GitVersion.Helpers; @@ -34,20 +35,20 @@ public void GetVersion(GetVersion task) public void UpdateAssemblyInfo(UpdateAssemblyInfo task) { var versionVariables = GitVersionVariables(task); - AssemblyInfoFileHelper.CheckForInvalidFiles(task.CompileFiles, task.ProjectFile); + AssemblyInfoFileHelper.CheckForInvalidFiles(this.fileSystem, task.CompileFiles, task.ProjectFile); if (!string.IsNullOrEmpty(task.IntermediateOutputPath)) { // Ensure provided output path exists first. Fixes issue #2815. - fileSystem.CreateDirectory(task.IntermediateOutputPath); + fileSystem.Directory.CreateDirectory(task.IntermediateOutputPath); } var fileWriteInfo = task.IntermediateOutputPath.GetFileWriteInfo(task.Language, task.ProjectFile, "AssemblyInfo"); task.AssemblyInfoTempFilePath = PathHelper.Combine(fileWriteInfo.WorkingDirectory, fileWriteInfo.FileName); - if (!this.fileSystem.DirectoryExists(fileWriteInfo.WorkingDirectory)) + if (!this.fileSystem.Directory.Exists(fileWriteInfo.WorkingDirectory)) { - this.fileSystem.CreateDirectory(fileWriteInfo.WorkingDirectory); + this.fileSystem.Directory.CreateDirectory(fileWriteInfo.WorkingDirectory); } var gitVersionOptions = this.options.Value; gitVersionOptions.WorkingDirectory = fileWriteInfo.WorkingDirectory; @@ -65,15 +66,15 @@ public void GenerateGitVersionInformation(GenerateGitVersionInformation task) if (!string.IsNullOrEmpty(task.IntermediateOutputPath)) { // Ensure provided output path exists first. Fixes issue #2815. - fileSystem.CreateDirectory(task.IntermediateOutputPath); + fileSystem.Directory.CreateDirectory(task.IntermediateOutputPath); } var fileWriteInfo = task.IntermediateOutputPath.GetFileWriteInfo(task.Language, task.ProjectFile, "GitVersionInformation"); task.GitVersionInformationFilePath = PathHelper.Combine(fileWriteInfo.WorkingDirectory, fileWriteInfo.FileName); - if (!this.fileSystem.DirectoryExists(fileWriteInfo.WorkingDirectory)) + if (!this.fileSystem.Directory.Exists(fileWriteInfo.WorkingDirectory)) { - this.fileSystem.CreateDirectory(fileWriteInfo.WorkingDirectory); + this.fileSystem.Directory.CreateDirectory(fileWriteInfo.WorkingDirectory); } var gitVersionOptions = this.options.Value; gitVersionOptions.WorkingDirectory = fileWriteInfo.WorkingDirectory; @@ -110,18 +111,20 @@ public void WriteVersionInfoToBuildLog(WriteVersionInfoToBuildLog task) private void DeleteTempFiles() { var tempPath = AssemblyInfoFileHelper.TempPath; - if (!this.fileSystem.DirectoryExists(tempPath)) + if (!this.fileSystem.Directory.Exists(tempPath)) { return; } - foreach (var file in this.fileSystem.GetFiles(tempPath)) + foreach (var file in this.fileSystem.Directory.GetFiles(tempPath)) { - if (this.fileSystem.GetLastWriteTime(file) >= DateTime.Now.AddDays(-1).Ticks) + if (this.fileSystem.GetLastDirectoryWrite(file) >= DateTime.Now.AddDays(-1).Ticks) + { continue; + } try { - this.fileSystem.Delete(file); + this.fileSystem.File.Delete(file); } catch (UnauthorizedAccessException) { diff --git a/src/GitVersion.MsBuild/Helpers/AssemblyInfoFileHelper.cs b/src/GitVersion.MsBuild/Helpers/AssemblyInfoFileHelper.cs index b9491aa569..2bbbb2fb37 100644 --- a/src/GitVersion.MsBuild/Helpers/AssemblyInfoFileHelper.cs +++ b/src/GitVersion.MsBuild/Helpers/AssemblyInfoFileHelper.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using System.Text.RegularExpressions; using GitVersion.Helpers; using Microsoft.Build.Framework; @@ -28,16 +29,16 @@ internal static class AssemblyInfoFileHelper _ => throw new ArgumentException($"Unknown language detected: '{language}'") }; - public static void CheckForInvalidFiles(IEnumerable compileFiles, string projectFile) + public static void CheckForInvalidFiles(IFileSystem fileSystem, IEnumerable compileFiles, string projectFile) { - var invalidCompileFile = GetInvalidFiles(compileFiles, projectFile).FirstOrDefault(); + var invalidCompileFile = GetInvalidFiles(fileSystem, compileFiles, projectFile).FirstOrDefault(); if (invalidCompileFile != null) { throw new WarningException("File contains assembly version attributes which conflict with the attributes generated by GitVersion " + invalidCompileFile); } } - private static bool FileContainsVersionAttribute(string compileFile, string projectFile) + private static bool FileContainsVersionAttribute(IFileSystem fileSystem, string compileFile, string projectFile) { var compileFileExtension = Path.GetExtension(compileFile); @@ -49,23 +50,23 @@ private static bool FileContainsVersionAttribute(string compileFile, string proj _ => throw new WarningException("File with name containing AssemblyInfo could not be checked for assembly version attributes which conflict with the attributes generated by GitVersion " + compileFile) }; - return FileContainsVersionAttribute(compileFile, projectFile, attributeRegex, triviaRegex); + return FileContainsVersionAttribute(fileSystem, compileFile, projectFile, attributeRegex, triviaRegex); } - private static bool FileContainsVersionAttribute(string compileFile, string projectFile, Regex attributeRegex, Regex triviaRegex) + private static bool FileContainsVersionAttribute(IFileSystem fileSystem, string compileFile, string projectFile, Regex attributeRegex, Regex triviaRegex) { var combine = PathHelper.Combine(Path.GetDirectoryName(projectFile), compileFile); - var allText = File.ReadAllText(combine); + var allText = fileSystem.File.ReadAllText(combine); allText += PathHelper.NewLine; // Always add a new line, this handles the case for when a file ends with the EOF marker and no new line. var noCommentsOrStrings = triviaRegex.Replace(allText, me => me.Value.StartsWith("//") || me.Value.StartsWith("'") ? PathHelper.NewLine : string.Empty); return attributeRegex.IsMatch(noCommentsOrStrings); } - private static IEnumerable GetInvalidFiles(IEnumerable compileFiles, string projectFile) + private static IEnumerable GetInvalidFiles(IFileSystem fileSystem, IEnumerable compileFiles, string projectFile) => compileFiles.Select(x => x.ItemSpec) .Where(compileFile => compileFile.Contains("AssemblyInfo")) - .Where(s => FileContainsVersionAttribute(s, projectFile)); + .Where(filePath => FileContainsVersionAttribute(fileSystem, filePath, projectFile)); public static FileWriteInfo GetFileWriteInfo(this string? intermediateOutputPath, string language, string projectFile, string outputFileName) { diff --git a/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs b/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs index 557d7d1abd..bf5ea3e1d5 100644 --- a/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs +++ b/src/GitVersion.Output.Tests/Output/AssemblyInfoFileUpdaterTests.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; @@ -50,7 +51,7 @@ public void ShouldCreateAssemblyInfoFileWhenNotExistsAndEnsureAssemblyInfo(strin using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem); assemblyInfoFileUpdater.Execute(variables, new(workingDir, true, assemblyInfoFile)); - this.fileSystem.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved", fileExtension))); + this.fileSystem.File.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved", fileExtension))); } [TestCase("cs")] @@ -67,7 +68,7 @@ public void ShouldCreateAssemblyInfoFileAtPathWhenNotExistsAndEnsureAssemblyInfo using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem); assemblyInfoFileUpdater.Execute(variables, new(workingDir, true, assemblyInfoFile)); - this.fileSystem.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved", fileExtension))); + this.fileSystem.File.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved", fileExtension))); } [TestCase("cs")] @@ -84,7 +85,7 @@ public void ShouldCreateAssemblyInfoFilesAtPathWhenNotExistsAndEnsureAssemblyInf foreach (var item in assemblyInfoFiles) { var fullPath = PathHelper.Combine(workingDir, item); - this.fileSystem.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved", fileExtension))); + this.fileSystem.File.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved", fileExtension))); } } @@ -102,7 +103,7 @@ public void ShouldNotCreateAssemblyInfoFileWhenNotExistsAndNotEnsureAssemblyInfo using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem); assemblyInfoFileUpdater.Execute(variables, new(workingDir, false, assemblyInfoFile)); - this.fileSystem.Exists(fullPath).ShouldBeFalse(); + this.fileSystem.File.Exists(fullPath).ShouldBeFalse(); } [Test] @@ -119,7 +120,7 @@ public void ShouldNotCreateAssemblyInfoFileForUnknownSourceCodeAndEnsureAssembly using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem); assemblyInfoFileUpdater.Execute(variables, new(workingDir, true, assemblyInfoFile)); - this.fileSystem.Received(0).WriteAllText(fullPath, Arg.Any()); + this.fileSystem.Received(1).File.WriteAllText(fullPath, Arg.Any()); } [Test] @@ -135,7 +136,7 @@ public void ShouldStartSearchFromWorkingDirectory() using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem); assemblyInfoFileUpdater.Execute(variables, new(workingDir, false, [.. assemblyInfoFiles])); - this.fileSystem.Received().DirectoryEnumerateFiles(Arg.Is(workingDir), Arg.Any(), Arg.Any()); + this.fileSystem.Received(1).Directory.EnumerateFiles(Arg.Is(workingDir), Arg.Any(), Arg.Any()); } [TestCase("cs", "[assembly: AssemblyVersion(\"1.0.0.0\")]\r\n[assembly: AssemblyInformationalVersion(\"1.0.0.0\")]\r\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]")] @@ -151,7 +152,7 @@ public void ShouldReplaceAssemblyVersion(string fileExtension, string assemblyFi using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, fs); assemblyInfoFileUpdater.Execute(variables, new(workingDir, false, assemblyInfoFile)); - fs.Received().WriteAllText(fileName, Arg.Is(s => + fs.Received().File.WriteAllText(fileName, Arg.Is(s => s.Contains(@"AssemblyVersion(""2.3.0.0"")") && s.Contains(@"AssemblyInformationalVersion(""2.3.1+3.Branch.foo.Sha.hash"")") && s.Contains(@"AssemblyFileVersion(""2.3.1.0"")"))); @@ -171,7 +172,7 @@ public void ShouldNotReplaceAssemblyVersionWhenVersionSchemeIsNone(string fileEx using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, fs); assemblyInfoFileUpdater.Execute(variables, new(workingDir, false, assemblyInfoFile)); - assemblyFileContent = fs.ReadAllText(fileName); + assemblyFileContent = fs.File.ReadAllText(fileName); assemblyFileContent.ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved", fileExtension))); }); } @@ -189,7 +190,7 @@ public void ShouldReplaceAssemblyVersionInRelativePath(string fileExtension, str using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, fs); assemblyInfoFileUpdater.Execute(variables, new(workingDir, false, assemblyInfoFile)); - fs.Received().WriteAllText(fileName, Arg.Is(s => + fs.Received().File.WriteAllText(fileName, Arg.Is(s => s.Contains(@"AssemblyVersion(""2.3.0.0"")") && s.Contains(@"AssemblyInformationalVersion(""2.3.1+3.Branch.foo.Sha.hash"")") && s.Contains(@"AssemblyFileVersion(""2.3.1.0"")"))); @@ -209,7 +210,7 @@ public void ShouldReplaceAssemblyVersionInRelativePathWithWhiteSpace(string file using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, fs); assemblyInfoFileUpdater.Execute(variables, new(workingDir, false, assemblyInfoFile)); - fs.Received().WriteAllText(fileName, Arg.Is(s => + fs.Received().File.WriteAllText(fileName, Arg.Is(s => s.Contains(@"AssemblyVersion(""2.3.0.0"")") && s.Contains(@"AssemblyInformationalVersion(""2.3.1+3.Branch.foo.Sha.hash"")") && s.Contains(@"AssemblyFileVersion(""2.3.1.0"")"))); @@ -229,7 +230,7 @@ public void ShouldReplaceAssemblyVersionWithStar(string fileExtension, string as using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, fs); assemblyInfoFileUpdater.Execute(variables, new(workingDir, false, assemblyInfoFile)); - fs.Received().WriteAllText(fileName, Arg.Is(s => + fs.Received().File.WriteAllText(fileName, Arg.Is(s => s.Contains(@"AssemblyVersion(""2.3.0.0"")") && s.Contains(@"AssemblyInformationalVersion(""2.3.1+3.Branch.foo.Sha.hash"")") && s.Contains(@"AssemblyFileVersion(""2.3.1.0"")"))); @@ -249,7 +250,7 @@ public void ShouldReplaceAssemblyVersionWithAttributeSuffix(string fileExtension using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, fs); assemblyInfoFileUpdater.Execute(variables, new(workingDir, false, assemblyInfoFile)); - fs.Received().WriteAllText(fileName, Arg.Is(s => + fs.Received().File.WriteAllText(fileName, Arg.Is(s => !s.Contains(@"AssemblyVersionAttribute(""1.0.0.0"")") && !s.Contains(@"AssemblyInformationalVersionAttribute(""1.0.0.0"")") && !s.Contains(@"AssemblyFileVersionAttribute(""1.0.0.0"")") && @@ -272,7 +273,7 @@ public void ShouldAddAssemblyVersionIfMissingFromInfoFile(string fileExtension) using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, fs); assemblyInfoFileUpdater.Execute(variables, new(workingDir, false, assemblyInfoFile)); - fs.Received().WriteAllText(fileName, Arg.Is(s => + fs.Received().File.WriteAllText(fileName, Arg.Is(s => s.Contains(@"AssemblyVersion(""2.3.0.0"")") && s.Contains(@"AssemblyInformationalVersion(""2.3.1+3.Branch.foo.Sha.hash"")") && s.Contains(@"AssemblyFileVersion(""2.3.1.0"")"))); @@ -292,7 +293,7 @@ public void ShouldReplaceAlreadySubstitutedValues(string fileExtension, string a using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, fs); assemblyInfoFileUpdater.Execute(variables, new(workingDir, false, assemblyInfoFile)); - fs.Received().WriteAllText(fileName, Arg.Is(s => + fs.Received().File.WriteAllText(fileName, Arg.Is(s => s.Contains(@"AssemblyVersion(""2.3.0.0"")") && s.Contains(@"AssemblyInformationalVersion(""2.3.1+3.Branch.foo.Sha.hash"")") && s.Contains(@"AssemblyFileVersion(""2.3.1.0"")"))); @@ -312,7 +313,7 @@ public void ShouldReplaceAssemblyVersionWhenCreatingAssemblyVersionFileAndEnsure using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, fs); assemblyInfoFileUpdater.Execute(variables, new(workingDir, false, assemblyInfoFile)); - fs.Received().WriteAllText(fileName, Arg.Is(s => + fs.Received().File.WriteAllText(fileName, Arg.Is(s => s.Contains(@"AssemblyVersion(""2.3.1.0"")") && s.Contains(@"AssemblyInformationalVersion(""2.3.1+3.Branch.foo.Sha.hash"")") && s.Contains(@"AssemblyFileVersion(""2.3.1.0"")"))); @@ -332,7 +333,7 @@ public void ShouldReplaceAssemblyVersionInRelativePathWithVariables(string fileE using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, fs); assemblyInfoFileUpdater.Execute(variables, new(workingDir, false, assemblyInfoFile)); - fs.Received().WriteAllText(fileName, Arg.Is(s => + fs.Received().File.WriteAllText(fileName, Arg.Is(s => s.Contains(@"AssemblyVersion(""2.3.0.0"")") && s.Contains(@"AssemblyInformationalVersion(""2.3.1+3.Branch.foo.Sha.hash"")") && s.Contains(@"AssemblyFileVersion(""2.3.1.0"")"))); @@ -352,7 +353,7 @@ public void ShouldReplaceAssemblyVersionInRelativePathWithVariablesAndWhiteSpace using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, fs); assemblyInfoFileUpdater.Execute(variables, new(workingDir, false, assemblyInfoFile)); - fs.Received().WriteAllText(fileName, Arg.Is(s => + fs.Received().File.WriteAllText(fileName, Arg.Is(s => s.Contains(@"AssemblyVersion(""2.3.0.0"")") && s.Contains(@"AssemblyInformationalVersion(""2.3.1+3.Branch.foo.Sha.hash"")") && s.Contains(@"AssemblyFileVersion(""2.3.1.0"")"))); @@ -372,7 +373,7 @@ public void ShouldAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFile using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, fs); assemblyInfoFileUpdater.Execute(variables, new(workingDir, false, assemblyInfoFile)); - assemblyFileContent = fs.ReadAllText(fileName); + assemblyFileContent = fs.File.ReadAllText(fileName); assemblyFileContent.ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved", fileExtension))); }); } @@ -390,7 +391,7 @@ public void Issue1183ShouldAddFSharpAssemblyInformationalVersionBesideOtherAttri using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, fs); assemblyInfoFileUpdater.Execute(variables, new(workingDir, false, assemblyInfoFile)); - assemblyFileContent = fs.ReadAllText(fileName); + assemblyFileContent = fs.File.ReadAllText(fileName); assemblyFileContent.ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved", fileExtension))); }); } @@ -408,7 +409,7 @@ public void ShouldNotAddAssemblyInformationalVersionWhenVersionSchemeIsNone(stri using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, fs); assemblyInfoFileUpdater.Execute(variables, new(workingDir, false, assemblyInfoFile)); - assemblyFileContent = fs.ReadAllText(fileName); + assemblyFileContent = fs.File.ReadAllText(fileName); assemblyFileContent.ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved", fileExtension))); }); } @@ -419,20 +420,23 @@ private void VerifyAssemblyInfoFile( AssemblyVersioningScheme versioningScheme = AssemblyVersioningScheme.MajorMinorPatch, Action? verify = null) { - this.fileSystem = Substitute.For(); + var file = Substitute.For(); var version = new SemanticVersion { BuildMetaData = new("versionSourceHash", 3, "foo", "hash", "shortHash", DateTimeOffset.Now, 0), Major = 2, Minor = 3, Patch = 1 }; - this.fileSystem.Exists(fileName).Returns(true); - this.fileSystem.ReadAllText(fileName).Returns(assemblyFileContent); - this.fileSystem.When(f => f.WriteAllText(fileName, Arg.Any())).Do(c => + file.Exists(fileName).Returns(true); + file.ReadAllText(fileName).Returns(assemblyFileContent); + file.When(f => f.WriteAllText(fileName, Arg.Any())).Do(c => { assemblyFileContent = c.ArgAt(1); - this.fileSystem.ReadAllText(fileName).Returns(assemblyFileContent); + file.ReadAllText(fileName).Returns(assemblyFileContent); }); var configuration = EmptyConfigurationBuilder.New.WithAssemblyVersioningScheme(versioningScheme).Build(); var variables = this.variableProvider.GetVariablesFor(version, configuration, 0); + this.fileSystem = Substitute.For(); + this.fileSystem.File.Returns(file); + this.fileSystem.FileInfo.Returns(new FileSystem().FileInfo); verify?.Invoke(this.fileSystem, variables); } } diff --git a/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs b/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs index 284f3d6b65..0d7fc9f14c 100644 --- a/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs +++ b/src/GitVersion.Output.Tests/Output/GitVersionInfoGeneratorTests.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; @@ -34,8 +35,8 @@ public void ShouldCreateFile(string fileExtension) var fileSystem = sp.GetRequiredService(); var directory = PathHelper.Combine(PathHelper.GetTempPath(), "GitVersionInfoGeneratorTests", Guid.NewGuid().ToString()); - if (!fileSystem.DirectoryExists(directory)) - fileSystem.CreateDirectory(directory); + if (!fileSystem.Directory.Exists(directory)) + fileSystem.Directory.CreateDirectory(directory); var fileName = "GitVersionInformation.g." + fileExtension; var fullPath = PathHelper.Combine(directory, fileName); @@ -45,7 +46,7 @@ public void ShouldCreateFile(string fileExtension) generator.Execute(variables, new(directory, fileName, fileExtension)); - fileSystem.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved", fileExtension))); + fileSystem.File.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved", fileExtension))); DirectoryHelper.DeleteDirectory(directory); } @@ -75,8 +76,8 @@ public void ShouldProperlyOutputNamespaceDeclaration(string fileExtension) var fileSystem = sp.GetRequiredService(); var directory = PathHelper.Combine(PathHelper.GetTempPath(), "GitVersionInfoGeneratorTests", Guid.NewGuid().ToString()); - if (!fileSystem.DirectoryExists(directory)) - fileSystem.CreateDirectory(directory); + if (!fileSystem.Directory.Exists(directory)) + fileSystem.Directory.CreateDirectory(directory); var fileName = "GitVersionInformation.g." + fileExtension; var fullPath = PathHelper.Combine(directory, fileName); @@ -86,7 +87,7 @@ public void ShouldProperlyOutputNamespaceDeclaration(string fileExtension) generator.Execute(variables, new(directory, fileName, fileExtension, targetNamespace)); - fileSystem.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved", fileExtension))); + fileSystem.File.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved", fileExtension))); DirectoryHelper.DeleteDirectory(directory); } diff --git a/src/GitVersion.Output.Tests/Output/ProjectFileUpdaterTests.cs b/src/GitVersion.Output.Tests/Output/ProjectFileUpdaterTests.cs index 4665479e8f..bca5e0cade 100644 --- a/src/GitVersion.Output.Tests/Output/ProjectFileUpdaterTests.cs +++ b/src/GitVersion.Output.Tests/Output/ProjectFileUpdaterTests.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using System.Xml.Linq; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; @@ -293,7 +294,7 @@ public void UpdateProjectFileAddsVersionToFile(string xml) """; - var transformedXml = fs.ReadAllText(fileName); + var transformedXml = fs.File.ReadAllText(fileName); transformedXml.ShouldBe(XElement.Parse(expectedXml).ToString()); }); } @@ -304,20 +305,23 @@ private void VerifyAssemblyInfoFile( AssemblyVersioningScheme versioningScheme = AssemblyVersioningScheme.MajorMinorPatch, Action? verify = null) { - this.fileSystem = Substitute.For(); + var file = Substitute.For(); var version = new SemanticVersion { BuildMetaData = new("versionSourceHash", 3, "foo", "hash", "shortHash", DateTimeOffset.Now, 0), Major = 2, Minor = 3, Patch = 1 }; - this.fileSystem.Exists(fileName).Returns(true); - this.fileSystem.ReadAllText(fileName).Returns(projectFileContent); - this.fileSystem.When(f => f.WriteAllText(fileName, Arg.Any())).Do(c => + file.Exists(fileName).Returns(true); + file.ReadAllText(fileName).Returns(projectFileContent); + file.When(f => f.WriteAllText(fileName, Arg.Any())).Do(c => { projectFileContent = c.ArgAt(1); - this.fileSystem.ReadAllText(fileName).Returns(projectFileContent); + file.ReadAllText(fileName).Returns(projectFileContent); }); var configuration = EmptyConfigurationBuilder.New.WithAssemblyVersioningScheme(versioningScheme).Build(); var variables = this.variableProvider.GetVariablesFor(version, configuration, 0); + this.fileSystem = Substitute.For(); + this.fileSystem.File.Returns(file); + this.fileSystem.FileInfo.Returns(new FileSystem().FileInfo); verify?.Invoke(this.fileSystem, variables); } } diff --git a/src/GitVersion.Output.Tests/Output/WixFileTests.cs b/src/GitVersion.Output.Tests/Output/WixFileTests.cs index ebd91284f2..cda4d0c1a4 100644 --- a/src/GitVersion.Output.Tests/Output/WixFileTests.cs +++ b/src/GitVersion.Output.Tests/Output/WixFileTests.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Configuration; using GitVersion.Core.Tests.Helpers; using GitVersion.Helpers; @@ -58,7 +59,7 @@ public void UpdateWixVersionFile() var file = PathHelper.Combine(workingDir, WixVersionFileUpdater.WixVersionFileName); fileSystem - .ReadAllText(file) + .File.ReadAllText(file) .ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved"))); } @@ -95,16 +96,16 @@ public void UpdateWixVersionFileWhenFileAlreadyExists() // fake an already existing file var file = PathHelper.Combine(workingDir, WixVersionFileUpdater.WixVersionFileName); - if (!fileSystem.DirectoryExists(workingDir)) + if (!fileSystem.Directory.Exists(workingDir)) { - fileSystem.CreateDirectory(workingDir); + fileSystem.Directory.CreateDirectory(workingDir); } - fileSystem.WriteAllText(file, new('x', 1024 * 1024)); + fileSystem.File.WriteAllText(file, new('x', 1024 * 1024)); wixVersionFileUpdater.Execute(versionVariables, new(workingDir)); fileSystem - .ReadAllText(file) + .File.ReadAllText(file) .ShouldMatchApproved(c => c.SubFolder(PathHelper.Combine("Approved"))); } } diff --git a/src/GitVersion.Output/AssemblyInfo/AssemblyInfoFileUpdater.cs b/src/GitVersion.Output/AssemblyInfo/AssemblyInfoFileUpdater.cs index e445500585..7510d8d8bd 100644 --- a/src/GitVersion.Output/AssemblyInfo/AssemblyInfoFileUpdater.cs +++ b/src/GitVersion.Output/AssemblyInfo/AssemblyInfoFileUpdater.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using System.Text.RegularExpressions; using GitVersion.Core; using GitVersion.Extensions; @@ -44,21 +45,21 @@ public void Execute(GitVersionVariables variables, AssemblyInfoContext context) { var localAssemblyInfo = assemblyInfoFile.FullName; var backupAssemblyInfo = localAssemblyInfo + ".bak"; - fileSystem.Copy(localAssemblyInfo, backupAssemblyInfo, true); + fileSystem.File.Copy(localAssemblyInfo, backupAssemblyInfo, true); this.restoreBackupTasks.Add(() => { - if (fileSystem.Exists(localAssemblyInfo)) + if (fileSystem.File.Exists(localAssemblyInfo)) { - fileSystem.Delete(localAssemblyInfo); + fileSystem.File.Delete(localAssemblyInfo); } - fileSystem.Move(backupAssemblyInfo, localAssemblyInfo); + fileSystem.File.Move(backupAssemblyInfo, localAssemblyInfo); }); - this.cleanupBackupTasks.Add(() => fileSystem.Delete(backupAssemblyInfo)); + this.cleanupBackupTasks.Add(() => fileSystem.File.Delete(backupAssemblyInfo)); - var originalFileContents = fileSystem.ReadAllText(localAssemblyInfo); + var originalFileContents = fileSystem.File.ReadAllText(localAssemblyInfo); var fileContents = originalFileContents; var appendedAttributes = false; @@ -85,7 +86,7 @@ public void Execute(GitVersionVariables variables, AssemblyInfoContext context) if (originalFileContents != fileContents) { - fileSystem.WriteAllText(localAssemblyInfo, fileContents); + fileSystem.File.WriteAllText(localAssemblyInfo, fileContents); } } CommitChanges(); @@ -143,7 +144,7 @@ private string ReplaceOrInsertAfterLastAssemblyAttributeOrAppend(Regex replaceRe return inputString; } - private IEnumerable GetAssemblyInfoFiles(AssemblyInfoContext context) + private IEnumerable GetAssemblyInfoFiles(AssemblyInfoContext context) { var workingDirectory = context.WorkingDirectory; var ensureAssemblyInfo = context.EnsureAssemblyInfo; @@ -157,15 +158,15 @@ private IEnumerable GetAssemblyInfoFiles(AssemblyInfoContext context) if (EnsureVersionAssemblyInfoFile(fullPath, ensureAssemblyInfo)) { - yield return new FileInfo(fullPath); + yield return fileSystem.FileInfo.New(fullPath); } } } else { - foreach (var item in fileSystem.DirectoryEnumerateFiles(workingDirectory, "AssemblyInfo.*", SearchOption.AllDirectories)) + foreach (var item in fileSystem.Directory.EnumerateFiles(workingDirectory, "AssemblyInfo.*", SearchOption.AllDirectories)) { - var assemblyInfoFile = new FileInfo(item); + var assemblyInfoFile = fileSystem.FileInfo.New(item); if (this.templateManager.IsSupported(assemblyInfoFile.Extension)) { @@ -178,7 +179,7 @@ private IEnumerable GetAssemblyInfoFiles(AssemblyInfoContext context) private bool EnsureVersionAssemblyInfoFile(string fullPath, bool ensureAssemblyInfo) { fullPath = fullPath.NotNull(); - if (fileSystem.Exists(fullPath)) + if (fileSystem.File.Exists(fullPath)) { return true; } @@ -192,14 +193,14 @@ private bool EnsureVersionAssemblyInfoFile(string fullPath, bool ensureAssemblyI if (!assemblyInfoSource.IsNullOrWhiteSpace()) { - var fileInfo = new FileInfo(fullPath); + var fileInfo = fileSystem.FileInfo.New(fullPath); - if (fileInfo.Directory != null && !fileSystem.DirectoryExists(fileInfo.Directory.FullName)) + if (fileInfo.Directory != null && !fileSystem.Directory.Exists(fileInfo.Directory.FullName)) { - fileSystem.CreateDirectory(fileInfo.Directory.FullName); + fileSystem.Directory.CreateDirectory(fileInfo.Directory.FullName); } - fileSystem.WriteAllText(fullPath, assemblyInfoSource); + fileSystem.File.WriteAllText(fullPath, assemblyInfoSource); return true; } diff --git a/src/GitVersion.Output/AssemblyInfo/ProjectFileUpdater.cs b/src/GitVersion.Output/AssemblyInfo/ProjectFileUpdater.cs index 8588f27153..163b0592a3 100644 --- a/src/GitVersion.Output/AssemblyInfo/ProjectFileUpdater.cs +++ b/src/GitVersion.Output/AssemblyInfo/ProjectFileUpdater.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using System.Xml.Linq; using GitVersion.Extensions; using GitVersion.Helpers; @@ -37,7 +38,7 @@ public void Execute(GitVersionVariables variables, AssemblyInfoContext context) { var localProjectFile = projectFile.FullName; - var originalFileContents = fileSystem.ReadAllText(localProjectFile); + var originalFileContents = fileSystem.File.ReadAllText(localProjectFile); XElement fileXml; try { @@ -57,19 +58,19 @@ public void Execute(GitVersionVariables variables, AssemblyInfoContext context) log.Debug($"Update file: {localProjectFile}"); var backupProjectFile = localProjectFile + ".bak"; - fileSystem.Copy(localProjectFile, backupProjectFile, true); + fileSystem.File.Copy(localProjectFile, backupProjectFile, true); this.restoreBackupTasks.Add(() => { - if (fileSystem.Exists(localProjectFile)) + if (fileSystem.File.Exists(localProjectFile)) { - fileSystem.Delete(localProjectFile); + fileSystem.File.Delete(localProjectFile); } - fileSystem.Move(backupProjectFile, localProjectFile); + fileSystem.File.Move(backupProjectFile, localProjectFile); }); - this.cleanupBackupTasks.Add(() => fileSystem.Delete(backupProjectFile)); + this.cleanupBackupTasks.Add(() => fileSystem.File.Delete(backupProjectFile)); if (!assemblyVersion.IsNullOrWhiteSpace()) { @@ -94,7 +95,7 @@ public void Execute(GitVersionVariables variables, AssemblyInfoContext context) var outputXmlString = fileXml.ToString(); if (originalFileContents != outputXmlString) { - fileSystem.WriteAllText(localProjectFile, outputXmlString); + fileSystem.File.WriteAllText(localProjectFile, outputXmlString); } } @@ -173,7 +174,7 @@ private void CommitChanges() this.restoreBackupTasks.Clear(); } - private IEnumerable GetProjectFiles(AssemblyInfoContext context) + private IEnumerable GetProjectFiles(AssemblyInfoContext context) { var workingDirectory = context.WorkingDirectory; var assemblyInfoFileNames = new HashSet(context.AssemblyInfoFiles); @@ -184,9 +185,9 @@ private IEnumerable GetProjectFiles(AssemblyInfoContext context) { var fullPath = PathHelper.Combine(workingDirectory, item); - if (fileSystem.Exists(fullPath)) + if (fileSystem.File.Exists(fullPath)) { - yield return new FileInfo(fullPath); + yield return fileSystem.FileInfo.New(fullPath); } else { @@ -196,9 +197,9 @@ private IEnumerable GetProjectFiles(AssemblyInfoContext context) } else { - foreach (var item in fileSystem.DirectoryEnumerateFiles(workingDirectory, "*", SearchOption.AllDirectories).Where(IsSupportedProjectFile)) + foreach (var item in fileSystem.Directory.EnumerateFiles(workingDirectory, "*", SearchOption.AllDirectories).Where(IsSupportedProjectFile)) { - var assemblyInfoFile = new FileInfo(item); + var assemblyInfoFile = fileSystem.FileInfo.New(item); yield return assemblyInfoFile; } diff --git a/src/GitVersion.Output/GitVersionInfo/GitVersionInfoGenerator.cs b/src/GitVersion.Output/GitVersionInfo/GitVersionInfoGenerator.cs index 683ede16e3..4ef2bf25b8 100644 --- a/src/GitVersion.Output/GitVersionInfo/GitVersionInfoGenerator.cs +++ b/src/GitVersion.Output/GitVersionInfo/GitVersionInfoGenerator.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Extensions; using GitVersion.Helpers; using GitVersion.OutputVariables; @@ -20,9 +21,9 @@ public void Execute(GitVersionVariables variables, GitVersionInfoContext context string? originalFileContents = null; - if (File.Exists(filePath)) + if (this.fileSystem.File.Exists(filePath)) { - originalFileContents = this.fileSystem.ReadAllText(filePath); + originalFileContents = this.fileSystem.File.ReadAllText(filePath); } var fileExtension = Path.GetExtension(filePath); @@ -53,7 +54,7 @@ public void Execute(GitVersionVariables variables, GitVersionInfoContext context if (fileContents != originalFileContents) { - this.fileSystem.WriteAllText(filePath, fileContents); + this.fileSystem.File.WriteAllText(filePath, fileContents); } return; diff --git a/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs b/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs index 24a715e95d..1da7fe356e 100644 --- a/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs +++ b/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Agents; using GitVersion.Extensions; using GitVersion.Helpers; @@ -38,7 +39,7 @@ public void Execute(GitVersionVariables variables, OutputContext context) var retryOperation = new RetryAction(); retryOperation.Execute(() => { - if (context.OutputFile != null) this.fileSystem.WriteAllText(context.OutputFile, json); + if (context.OutputFile != null) this.fileSystem.File.WriteAllText(context.OutputFile, json); }); } diff --git a/src/GitVersion.Output/Serializer/VersionVariableSerializer.cs b/src/GitVersion.Output/Serializer/VersionVariableSerializer.cs index b6243ea2aa..7941b971c2 100644 --- a/src/GitVersion.Output/Serializer/VersionVariableSerializer.cs +++ b/src/GitVersion.Output/Serializer/VersionVariableSerializer.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using System.Text.Encodings.Web; using GitVersion.Extensions; using GitVersion.Helpers; @@ -83,14 +84,14 @@ private static GitVersionVariables FromDictionary(IEnumerable new() { WriteIndented = true, Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, Converters = { new VersionVariablesJsonStringConverter() } }; diff --git a/src/GitVersion.Output/WixUpdater/WixVersionFileUpdater.cs b/src/GitVersion.Output/WixUpdater/WixVersionFileUpdater.cs index 4f76e347ac..a6d1b708fc 100644 --- a/src/GitVersion.Output/WixUpdater/WixVersionFileUpdater.cs +++ b/src/GitVersion.Output/WixUpdater/WixVersionFileUpdater.cs @@ -1,3 +1,4 @@ +using System.IO.Abstractions; using GitVersion.Extensions; using GitVersion.Helpers; using GitVersion.Logging; @@ -25,16 +26,16 @@ public void Execute(GitVersionVariables variables, WixVersionContext context) var root = doc.DocumentElement; doc.InsertBefore(xmlDecl, root); - if (this.fileSystem.Exists(this.wixVersionFile)) + if (this.fileSystem.File.Exists(this.wixVersionFile)) { - this.fileSystem.Delete(this.wixVersionFile); + this.fileSystem.File.Delete(this.wixVersionFile); } - if (!this.fileSystem.DirectoryExists(context.WorkingDirectory)) + if (!this.fileSystem.Directory.Exists(context.WorkingDirectory)) { - this.fileSystem.CreateDirectory(context.WorkingDirectory); + this.fileSystem.Directory.CreateDirectory(context.WorkingDirectory); } - using var fs = this.fileSystem.OpenWrite(this.wixVersionFile); + using var fs = this.fileSystem.File.OpenWrite(this.wixVersionFile); doc.Save(fs); } From 0ddfbf45b5d102b62aeb99c389c28060eddb001d Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 6 Mar 2025 00:51:58 +0100 Subject: [PATCH 381/544] fix nuget warnings --- src/Directory.Packages.props | 2 ++ src/GitVersion.App.Tests/GitVersion.App.Tests.csproj | 1 + src/GitVersion.MsBuild/GitVersion.MsBuild.csproj | 1 + src/GitVersion.Testing/GitVersion.Testing.csproj | 1 + 4 files changed, 5 insertions(+) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 11d3a28cbd..eea058c3a0 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -36,8 +36,10 @@ + + diff --git a/src/GitVersion.App.Tests/GitVersion.App.Tests.csproj b/src/GitVersion.App.Tests/GitVersion.App.Tests.csproj index fbddfbedb5..b5afc842c8 100644 --- a/src/GitVersion.App.Tests/GitVersion.App.Tests.csproj +++ b/src/GitVersion.App.Tests/GitVersion.App.Tests.csproj @@ -2,6 +2,7 @@ + diff --git a/src/GitVersion.MsBuild/GitVersion.MsBuild.csproj b/src/GitVersion.MsBuild/GitVersion.MsBuild.csproj index 033f10f2b4..a2d4f5176a 100644 --- a/src/GitVersion.MsBuild/GitVersion.MsBuild.csproj +++ b/src/GitVersion.MsBuild/GitVersion.MsBuild.csproj @@ -19,6 +19,7 @@ + diff --git a/src/GitVersion.Testing/GitVersion.Testing.csproj b/src/GitVersion.Testing/GitVersion.Testing.csproj index c17ce24c9c..f79daa6f8a 100644 --- a/src/GitVersion.Testing/GitVersion.Testing.csproj +++ b/src/GitVersion.Testing/GitVersion.Testing.csproj @@ -4,6 +4,7 @@ + From 5ab63363ef1d18f5eb82fd76e0d7a137d9ec4461 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 6 Mar 2025 01:13:22 +0100 Subject: [PATCH 382/544] cleanup --- .../GitVersionTaskExecutor.cs | 25 ------------------- 1 file changed, 25 deletions(-) diff --git a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs index 3686d25e56..b70c843847 100644 --- a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs +++ b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs @@ -108,30 +108,5 @@ public void WriteVersionInfoToBuildLog(WriteVersionInfoToBuildLog task) gitVersionOutputTool.OutputVariables(versionVariables, configuration.UpdateBuildNumber); } - private void DeleteTempFiles() - { - var tempPath = AssemblyInfoFileHelper.TempPath; - if (!this.fileSystem.Directory.Exists(tempPath)) - { - return; - } - - foreach (var file in this.fileSystem.Directory.GetFiles(tempPath)) - { - if (this.fileSystem.GetLastDirectoryWrite(file) >= DateTime.Now.AddDays(-1).Ticks) - { - continue; - } - try - { - this.fileSystem.File.Delete(file); - } - catch (UnauthorizedAccessException) - { - //ignore contention - } - } - } - private GitVersionVariables GitVersionVariables(GitVersionTaskBase task) => serializer.FromFile(task.VersionFile); } From 79f13a3420b8749b1fa7f33762d2da9fbbc765cc Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 6 Mar 2025 09:13:17 +0100 Subject: [PATCH 383/544] replace Path.* usage with PathHelper.* --- .../ArgumentParserTests.cs | 18 +++++++++--------- src/GitVersion.App/ArgumentParser.cs | 10 +++++----- src/GitVersion.App/ArgumentParserExtensions.cs | 2 +- src/GitVersion.App/FileAppender.cs | 2 +- src/GitVersion.App/GitVersionExecutor.cs | 2 +- .../Agents/BitBucketPipelinesTests.cs | 2 +- .../Agents/CodeBuildTests.cs | 2 +- .../Agents/GitHubActionsTests.cs | 2 +- .../Agents/GitLabCiTests.cs | 2 +- .../Agents/JenkinsTests.cs | 2 +- .../ConfigurationFileLocator.cs | 2 +- .../Core/GitVersionToolDirectoryTests.cs | 2 +- .../IntegrationTests/OtherScenarios.cs | 4 ++-- .../Extensions/ConfigurationExtensions.cs | 14 +++++++------- src/GitVersion.Core/Helpers/DirectoryHelper.cs | 2 +- src/GitVersion.Core/Helpers/PathHelper.cs | 17 +++++++++++++++-- .../Caching/GitVersionCacheKeyFactory.cs | 2 +- .../Git/GitRepositoryInfo.cs | 2 +- .../Tasks/GenerateGitVersionInformationTest.cs | 12 ++++++------ .../Tasks/UpdateAssemblyInfoTaskTest.cs | 8 ++++---- .../GitVersionTaskExecutor.cs | 2 +- .../Helpers/AssemblyInfoFileHelper.cs | 8 ++++---- .../AssemblyInfo/AssemblyInfoFileUpdater.cs | 2 +- .../GitVersionInfo/GitVersionInfoGenerator.cs | 6 ++++-- src/GitVersion.Output/TemplateManager.cs | 12 +++++++++--- .../Fixtures/RepositoryFixtureBase.cs | 2 +- 26 files changed, 81 insertions(+), 60 deletions(-) diff --git a/src/GitVersion.App.Tests/ArgumentParserTests.cs b/src/GitVersion.App.Tests/ArgumentParserTests.cs index a42b4e2c22..9120204927 100644 --- a/src/GitVersion.App.Tests/ArgumentParserTests.cs +++ b/src/GitVersion.App.Tests/ArgumentParserTests.cs @@ -289,7 +289,7 @@ public void UpdateAssemblyInfoWithFilename() var arguments = this.argumentParser.ParseArguments($"-targetpath {repo.RepositoryPath} -updateAssemblyInfo CommonAssemblyInfo.cs"); arguments.UpdateAssemblyInfo.ShouldBe(true); arguments.UpdateAssemblyInfoFileName.Count.ShouldBe(1); - arguments.UpdateAssemblyInfoFileName.ShouldContain(x => Path.GetFileName(x).Equals("CommonAssemblyInfo.cs")); + arguments.UpdateAssemblyInfoFileName.ShouldContain(x => PathHelper.GetFileName(x).Equals("CommonAssemblyInfo.cs")); } [Test] @@ -306,8 +306,8 @@ public void UpdateAssemblyInfoWithMultipleFilenames() var arguments = this.argumentParser.ParseArguments($"-targetpath {repo.RepositoryPath} -updateAssemblyInfo CommonAssemblyInfo.cs VersionAssemblyInfo.cs"); arguments.UpdateAssemblyInfo.ShouldBe(true); arguments.UpdateAssemblyInfoFileName.Count.ShouldBe(2); - arguments.UpdateAssemblyInfoFileName.ShouldContain(x => Path.GetFileName(x).Equals("CommonAssemblyInfo.cs")); - arguments.UpdateAssemblyInfoFileName.ShouldContain(x => Path.GetFileName(x).Equals("VersionAssemblyInfo.cs")); + arguments.UpdateAssemblyInfoFileName.ShouldContain(x => PathHelper.GetFileName(x).Equals("CommonAssemblyInfo.cs")); + arguments.UpdateAssemblyInfoFileName.ShouldContain(x => PathHelper.GetFileName(x).Equals("VersionAssemblyInfo.cs")); } [Test] @@ -324,8 +324,8 @@ public void UpdateProjectFilesWithMultipleFilenames() var arguments = this.argumentParser.ParseArguments($"-targetpath {repo.RepositoryPath} -updateProjectFiles CommonAssemblyInfo.csproj VersionAssemblyInfo.csproj"); arguments.UpdateProjectFiles.ShouldBe(true); arguments.UpdateAssemblyInfoFileName.Count.ShouldBe(2); - arguments.UpdateAssemblyInfoFileName.ShouldContain(x => Path.GetFileName(x).Equals("CommonAssemblyInfo.csproj")); - arguments.UpdateAssemblyInfoFileName.ShouldContain(x => Path.GetFileName(x).Equals("VersionAssemblyInfo.csproj")); + arguments.UpdateAssemblyInfoFileName.ShouldContain(x => PathHelper.GetFileName(x).Equals("CommonAssemblyInfo.csproj")); + arguments.UpdateAssemblyInfoFileName.ShouldContain(x => PathHelper.GetFileName(x).Equals("VersionAssemblyInfo.csproj")); } [Test] @@ -348,9 +348,9 @@ public void UpdateAssemblyInfoWithMultipleFilenamesMatchingGlobbing() var arguments = this.argumentParser.ParseArguments($"-targetpath {repo.RepositoryPath} -updateAssemblyInfo **/*AssemblyInfo.cs"); arguments.UpdateAssemblyInfo.ShouldBe(true); arguments.UpdateAssemblyInfoFileName.Count.ShouldBe(3); - arguments.UpdateAssemblyInfoFileName.ShouldContain(x => Path.GetFileName(x).Equals("CommonAssemblyInfo.cs")); - arguments.UpdateAssemblyInfoFileName.ShouldContain(x => Path.GetFileName(x).Equals("VersionAssemblyInfo.cs")); - arguments.UpdateAssemblyInfoFileName.ShouldContain(x => Path.GetFileName(x).Equals("LocalAssemblyInfo.cs")); + arguments.UpdateAssemblyInfoFileName.ShouldContain(x => PathHelper.GetFileName(x).Equals("CommonAssemblyInfo.cs")); + arguments.UpdateAssemblyInfoFileName.ShouldContain(x => PathHelper.GetFileName(x).Equals("VersionAssemblyInfo.cs")); + arguments.UpdateAssemblyInfoFileName.ShouldContain(x => PathHelper.GetFileName(x).Equals("LocalAssemblyInfo.cs")); } [Test] @@ -367,7 +367,7 @@ public void UpdateAssemblyInfoWithRelativeFilename() var arguments = this.argumentParser.ParseArguments($"-targetpath {targetPath} -updateAssemblyInfo ..\\..\\CommonAssemblyInfo.cs"); arguments.UpdateAssemblyInfo.ShouldBe(true); arguments.UpdateAssemblyInfoFileName.Count.ShouldBe(1); - arguments.UpdateAssemblyInfoFileName.ShouldContain(x => Path.GetFileName(x).Equals("CommonAssemblyInfo.cs")); + arguments.UpdateAssemblyInfoFileName.ShouldContain(x => PathHelper.GetFileName(x).Equals("CommonAssemblyInfo.cs")); } [Test] diff --git a/src/GitVersion.App/ArgumentParser.cs b/src/GitVersion.App/ArgumentParser.cs index 26fb7af233..7686b77231 100644 --- a/src/GitVersion.App/ArgumentParser.cs +++ b/src/GitVersion.App/ArgumentParser.cs @@ -107,14 +107,14 @@ private void ValidateConfigurationFile(Arguments arguments) { if (arguments.ConfigurationFile.IsNullOrWhiteSpace()) return; - if (Path.IsPathRooted(arguments.ConfigurationFile)) + if (PathHelper.IsPathRooted(arguments.ConfigurationFile)) { if (!this.fileSystem.File.Exists(arguments.ConfigurationFile)) throw new WarningException($"Could not find config file at '{arguments.ConfigurationFile}'"); - arguments.ConfigurationFile = Path.GetFullPath(arguments.ConfigurationFile); + arguments.ConfigurationFile = PathHelper.GetFullPath(arguments.ConfigurationFile); } else { - var configFilePath = Path.GetFullPath(PathHelper.Combine(arguments.TargetPath, arguments.ConfigurationFile)); + var configFilePath = PathHelper.GetFullPath(PathHelper.Combine(arguments.TargetPath, arguments.ConfigurationFile)); if (!this.fileSystem.File.Exists(configFilePath)) throw new WarningException($"Could not find config file at '{configFilePath}'"); arguments.ConfigurationFile = configFilePath; } @@ -156,7 +156,7 @@ private IEnumerable ResolveFiles(string workingDirectory, ISet? foreach (var path in paths) { - yield return Path.GetFullPath(PathHelper.Combine(workingDirectory, path)); + yield return PathHelper.GetFullPath(PathHelper.Combine(workingDirectory, path)); } } } @@ -182,7 +182,7 @@ private void ParseTargetPath(Arguments arguments, string? name, IReadOnlyList(); this.workDirectory = PathHelper.Combine(PathHelper.GetTempPath(), Guid.NewGuid().ToString()); - this.gitDirectory = Repository.Init(this.workDirectory).TrimEnd(Path.DirectorySeparatorChar); + this.gitDirectory = Repository.Init(this.workDirectory).TrimEnd(PathHelper.DirectorySeparatorChar); Assert.That(this.gitDirectory, Is.Not.Null); } diff --git a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs index d47a10b7cd..17d9946478 100644 --- a/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs +++ b/src/GitVersion.Core.Tests/IntegrationTests/OtherScenarios.cs @@ -111,8 +111,8 @@ public void HasDirtyFlagWhenUncommittedChangesAreInRepository(bool stageFile, in for (int i = 0; i < numberOfFiles; i++) { - var tempFile = Path.GetTempFileName(); - var repoFile = PathHelper.Combine(fixture.RepositoryPath, Path.GetFileNameWithoutExtension(tempFile) + ".txt"); + var tempFile = PathHelper.GetTempFileName(); + var repoFile = PathHelper.Combine(fixture.RepositoryPath, PathHelper.GetFileNameWithoutExtension(tempFile) + ".txt"); fileSystem.File.Move(tempFile, repoFile); fileSystem.File.WriteAllText(repoFile, $"Hello world / testfile {i}"); diff --git a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs index 82c7b8a47f..65b6d0cb67 100644 --- a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs +++ b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs @@ -100,7 +100,7 @@ public static bool IsReleaseBranch(this IGitVersionConfiguration configuration, foreach (var groupName in regex.GetGroupNames()) { var groupValue = match.Groups[groupName].Value; - Lazy escapedGroupValueLazy = new(() => EscapeInvalidCharaters(groupValue)); + Lazy escapedGroupValueLazy = new(() => EscapeInvalidCharacters(groupValue)); var placeholder = $"{{{groupName}}}"; int index, startIndex = 0; while ((index = label.IndexOf(placeholder, startIndex, StringComparison.InvariantCulture)) >= 0) @@ -115,9 +115,9 @@ public static bool IsReleaseBranch(this IGitVersionConfiguration configuration, return label; } - private static string EscapeInvalidCharaters(string groupValue) => groupValue.RegexReplace(@"[^a-zA-Z0-9-]", "-"); + private static string EscapeInvalidCharacters(string groupValue) => groupValue.RegexReplace("[^a-zA-Z0-9-]", "-"); - public static (string GitDirectory, string WorkingTreeDirectory)? FindGitDir(this IFileSystem fileSystem, string path) + public static (string GitDirectory, string WorkingTreeDirectory)? FindGitDir(this IFileSystem fileSystem, string? path) { string? startingDir = path; while (startingDir is not null) @@ -125,7 +125,7 @@ public static (string GitDirectory, string WorkingTreeDirectory)? FindGitDir(thi var dirOrFilePath = PathHelper.Combine(startingDir, ".git"); if (fileSystem.Directory.Exists(dirOrFilePath)) { - return (dirOrFilePath, Path.GetDirectoryName(dirOrFilePath)!); + return (dirOrFilePath, PathHelper.GetDirectoryName(dirOrFilePath)); } if (fileSystem.File.Exists(dirOrFilePath)) @@ -133,15 +133,15 @@ public static (string GitDirectory, string WorkingTreeDirectory)? FindGitDir(thi string? relativeGitDirPath = ReadGitDirFromFile(dirOrFilePath); if (!string.IsNullOrWhiteSpace(relativeGitDirPath)) { - var fullGitDirPath = Path.GetFullPath(PathHelper.Combine(startingDir, relativeGitDirPath)); + var fullGitDirPath = PathHelper.GetFullPath(PathHelper.Combine(startingDir, relativeGitDirPath)); if (fileSystem.Directory.Exists(fullGitDirPath)) { - return (fullGitDirPath, Path.GetDirectoryName(dirOrFilePath)!); + return (fullGitDirPath, PathHelper.GetDirectoryName(dirOrFilePath)); } } } - startingDir = Path.GetDirectoryName(startingDir); + startingDir = PathHelper.GetDirectoryName(startingDir); } return null; diff --git a/src/GitVersion.Core/Helpers/DirectoryHelper.cs b/src/GitVersion.Core/Helpers/DirectoryHelper.cs index 5acff873bf..357815c5e1 100644 --- a/src/GitVersion.Core/Helpers/DirectoryHelper.cs +++ b/src/GitVersion.Core/Helpers/DirectoryHelper.cs @@ -40,7 +40,7 @@ public static void DeleteDirectory(string directoryPath) "{0}Known and common causes include:" + "{0}- Windows Search Indexer (go to the Indexing Options, in the Windows Control Panel, and exclude the bin folder of LibGit2Sharp.Tests)" + "{0}- Antivirus (exclude the bin folder of LibGit2Sharp.Tests from the paths scanned by your real-time antivirus){0}", - PathHelper.NewLine, Path.GetFullPath(directoryPath))); + PathHelper.NewLine, PathHelper.GetFullPath(directoryPath))); } } } diff --git a/src/GitVersion.Core/Helpers/PathHelper.cs b/src/GitVersion.Core/Helpers/PathHelper.cs index 3c9d853a1d..42c69c0f41 100644 --- a/src/GitVersion.Core/Helpers/PathHelper.cs +++ b/src/GitVersion.Core/Helpers/PathHelper.cs @@ -5,6 +5,7 @@ namespace GitVersion.Helpers; internal static class PathHelper { public static string NewLine => SysEnv.NewLine; + public static char DirectorySeparatorChar => Path.DirectorySeparatorChar; private static readonly StringComparison OsDependentComparison = RuntimeInformation.IsOSPlatform(OSPlatform.Linux) @@ -33,13 +34,19 @@ public static string GetDirectoryName(string? path) return Path.GetDirectoryName(path)!; } - public static string GetFullPath(string? path) + public static string GetFileName(string? path) { ArgumentNullException.ThrowIfNull(path, nameof(path)); - return Path.GetFullPath(path); + return Path.GetFileName(path); } + public static string? GetFileNameWithoutExtension(string? path) => Path.GetFileNameWithoutExtension(path); + + public static string? GetExtension(string? path) => Path.GetExtension(path); + + public static string GetFullPath(string? path) => Path.GetFullPath(path!); + public static string Combine(string? path1, string? path2) { ArgumentException.ThrowIfNullOrWhiteSpace(path1); @@ -79,4 +86,10 @@ public static bool Equal(string? path, string? otherPath) => GetFullPath(path).TrimEnd('\\').TrimEnd('/'), GetFullPath(otherPath).TrimEnd('\\').TrimEnd('/'), OsDependentComparison); + + public static string GetRandomFileName() => Path.GetRandomFileName(); + + public static string GetTempFileName() => Path.GetTempFileName(); + + public static bool IsPathRooted(string? path) => Path.IsPathRooted(path); } diff --git a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs index 908f1a8124..b024a27a22 100644 --- a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs +++ b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCacheKeyFactory.cs @@ -118,7 +118,7 @@ private List CalculateDirectoryContents(string root) try { if (!this.fileSystem.File.Exists(file)) continue; - result.Add(Path.GetFileName(file)); + result.Add(PathHelper.GetFileName(file)); result.Add(this.fileSystem.File.ReadAllText(file)); } catch (IOException e) diff --git a/src/GitVersion.LibGit2Sharp/Git/GitRepositoryInfo.cs b/src/GitVersion.LibGit2Sharp/Git/GitRepositoryInfo.cs index 9cbf267f9d..d5df195240 100644 --- a/src/GitVersion.LibGit2Sharp/Git/GitRepositoryInfo.cs +++ b/src/GitVersion.LibGit2Sharp/Git/GitRepositoryInfo.cs @@ -40,7 +40,7 @@ public GitRepositoryInfo(IFileSystem fileSystem, IOptions opt var targetUrl = repositoryInfo.TargetUrl; var clonePath = repositoryInfo.ClonePath; - var userTemp = clonePath ?? Path.GetTempPath(); + var userTemp = clonePath ?? PathHelper.GetTempPath(); var repositoryName = targetUrl.Split('/', '\\').Last().Replace(".git", string.Empty); var possiblePath = PathHelper.Combine(userTemp, repositoryName); diff --git a/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs b/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs index ec0fb010bd..9a2892572b 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/GenerateGitVersionInformationTest.cs @@ -76,7 +76,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuild( result.MsBuild.ShouldAllBe(x => x.Succeeded); result.Output.ShouldNotBeNullOrWhiteSpace(); - var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), $"GitVersionInformation.g.{extension}"); + var generatedFilePath = PathHelper.Combine(PathHelper.GetDirectoryName(result.ProjectPath), $"GitVersionInformation.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); @@ -103,7 +103,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildI result.MsBuild.ShouldAllBe(x => x.Succeeded); result.Output.ShouldNotBeNullOrWhiteSpace(); - var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), $"GitVersionInformation.g.{extension}"); + var generatedFilePath = PathHelper.Combine(PathHelper.GetDirectoryName(result.ProjectPath), $"GitVersionInformation.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); @@ -178,7 +178,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA result.MsBuild.ShouldAllBe(x => x.Succeeded); result.Output.ShouldNotBeNullOrWhiteSpace(); - var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), randDir, $"GitVersionInformation.g.{extension}"); + var generatedFilePath = PathHelper.Combine(PathHelper.GetDirectoryName(result.ProjectPath), randDir, $"GitVersionInformation.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); @@ -209,7 +209,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA result.MsBuild.ShouldAllBe(x => x.Succeeded); result.Output.ShouldNotBeNullOrWhiteSpace(); - var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), randDir, $"GitVersionInformation.g.{extension}"); + var generatedFilePath = PathHelper.Combine(PathHelper.GetDirectoryName(result.ProjectPath), randDir, $"GitVersionInformation.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); @@ -240,7 +240,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA result.MsBuild.ShouldAllBe(x => x.Succeeded); result.Output.ShouldNotBeNullOrWhiteSpace(); - var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), randDir, $"GitVersionInformation.g.{extension}"); + var generatedFilePath = PathHelper.Combine(PathHelper.GetDirectoryName(result.ProjectPath), randDir, $"GitVersionInformation.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); @@ -273,7 +273,7 @@ public void GenerateGitVersionInformationTaskShouldCreateFileWhenRunWithMsBuildA result.MsBuild.ShouldAllBe(x => x.Succeeded); result.Output.ShouldNotBeNullOrWhiteSpace(); - var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), randDir, $"GitVersionInformation.g.{extension}"); + var generatedFilePath = PathHelper.Combine(PathHelper.GetDirectoryName(result.ProjectPath), randDir, $"GitVersionInformation.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); diff --git a/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs b/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs index 17c7072665..71cf8d8b7a 100644 --- a/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs +++ b/src/GitVersion.MsBuild.Tests/Tasks/UpdateAssemblyInfoTaskTest.cs @@ -66,7 +66,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenRunWithMsBuild(string lang result.MsBuild.ShouldAllBe(x => x.Succeeded); result.Output.ShouldNotBeNullOrWhiteSpace(); - var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), $"AssemblyInfo.g.{extension}"); + var generatedFilePath = PathHelper.Combine(PathHelper.GetDirectoryName(result.ProjectPath), $"AssemblyInfo.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); @@ -89,7 +89,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenRunWithMsBuildInBuildServe result.MsBuild.ShouldAllBe(x => x.Succeeded); result.Output.ShouldNotBeNullOrWhiteSpace(); - var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), $"AssemblyInfo.g.{extension}"); + var generatedFilePath = PathHelper.Combine(PathHelper.GetDirectoryName(result.ProjectPath), $"AssemblyInfo.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); @@ -152,7 +152,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenRunWithMsBuildAndIntermedi result.MsBuild.ShouldAllBe(x => x.Succeeded); result.Output.ShouldNotBeNullOrWhiteSpace(); - var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), randDir, $"AssemblyInfo.g.{extension}"); + var generatedFilePath = PathHelper.Combine(PathHelper.GetDirectoryName(result.ProjectPath), randDir, $"AssemblyInfo.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); @@ -179,7 +179,7 @@ public void UpdateAssemblyInfoTaskShouldCreateFileWhenRunWithMsBuildAndIntermedi result.MsBuild.ShouldAllBe(x => x.Succeeded); result.Output.ShouldNotBeNullOrWhiteSpace(); - var generatedFilePath = PathHelper.Combine(Path.GetDirectoryName(result.ProjectPath), randDir, $"AssemblyInfo.g.{extension}"); + var generatedFilePath = PathHelper.Combine(PathHelper.GetDirectoryName(result.ProjectPath), randDir, $"AssemblyInfo.g.{extension}"); result.Output.ShouldContain($"{outputProperty}: {generatedFilePath}"); var fileContent = this.FileSystem.File.ReadAllText(generatedFilePath); diff --git a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs index b70c843847..a5c7ed5e25 100644 --- a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs +++ b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs @@ -90,7 +90,7 @@ public void GenerateGitVersionInformation(GenerateGitVersionInformation task) targetNamespace = task.RootNamespace; if (string.IsNullOrWhiteSpace(targetNamespace)) { - targetNamespace = Path.GetFileNameWithoutExtension(task.ProjectFile); + targetNamespace = PathHelper.GetFileNameWithoutExtension(task.ProjectFile); } } diff --git a/src/GitVersion.MsBuild/Helpers/AssemblyInfoFileHelper.cs b/src/GitVersion.MsBuild/Helpers/AssemblyInfoFileHelper.cs index 2bbbb2fb37..ae730660e5 100644 --- a/src/GitVersion.MsBuild/Helpers/AssemblyInfoFileHelper.cs +++ b/src/GitVersion.MsBuild/Helpers/AssemblyInfoFileHelper.cs @@ -11,7 +11,7 @@ internal static class AssemblyInfoFileHelper { public static readonly string TempPath = MakeAndGetTempPath(); - private static string MakeAndGetTempPath() => PathHelper.Combine(Path.GetTempPath(), "GitVersionTask"); + private static string MakeAndGetTempPath() => PathHelper.Combine(PathHelper.GetTempPath(), "GitVersionTask"); public static string GetFileExtension(string language) => language switch { @@ -40,7 +40,7 @@ public static void CheckForInvalidFiles(IFileSystem fileSystem, IEnumerable extension switch + string getTargetNamespace(string? extension) => extension switch { ".vb" => context.TargetNamespace ?? "Global", ".cs" => context.TargetNamespace != null ? $"{PathHelper.NewLine}namespace {context.TargetNamespace}" : "", diff --git a/src/GitVersion.Output/TemplateManager.cs b/src/GitVersion.Output/TemplateManager.cs index 7eb60d3d54..da90e205aa 100644 --- a/src/GitVersion.Output/TemplateManager.cs +++ b/src/GitVersion.Output/TemplateManager.cs @@ -1,4 +1,5 @@ using GitVersion.Extensions; +using GitVersion.Helpers; namespace GitVersion.Output; @@ -13,7 +14,7 @@ internal class TemplateManager(TemplateType templateType) private readonly Dictionary templates = GetEmbeddedTemplates(templateType, "Templates").ToDictionary(tuple => tuple.ext, tuple => tuple.name, StringComparer.OrdinalIgnoreCase); private readonly Dictionary addFormats = GetEmbeddedTemplates(templateType, "AddFormats").ToDictionary(tuple => tuple.ext, tuple => tuple.name, StringComparer.OrdinalIgnoreCase); - public string? GetTemplateFor(string fileExtension) + public string? GetTemplateFor(string? fileExtension) { ArgumentNullException.ThrowIfNull(fileExtension); @@ -27,7 +28,7 @@ internal class TemplateManager(TemplateType templateType) return result; } - public string? GetAddFormatFor(string fileExtension) + public string? GetAddFormatFor(string? fileExtension) { ArgumentNullException.ThrowIfNull(fileExtension); @@ -56,7 +57,12 @@ public bool IsSupported(string fileExtension) { if (name.Contains(templateType.ToString()) && name.Contains(templateCategory)) { - yield return (ext: Path.GetExtension(name), name); + var extension = PathHelper.GetExtension(name); + if (string.IsNullOrWhiteSpace(extension)) + { + continue; + } + yield return (ext: extension, name); } } } diff --git a/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs b/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs index aed81489f4..4817162321 100644 --- a/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs +++ b/src/GitVersion.Testing/Fixtures/RepositoryFixtureBase.cs @@ -45,7 +45,7 @@ protected virtual void Dispose(bool disposing) } Repository.Dispose(); - var directoryPath = Path.GetFileName(RepositoryPath); + var directoryPath = PathHelper.GetFileName(RepositoryPath); try { From 66658c12fce8448c82a1413ceb1f4dbce303203a Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 6 Mar 2025 14:42:05 +0100 Subject: [PATCH 384/544] fix new-cli solution --- .gitignore | 2 ++ new-cli/.idea/.idea.GitVersion/.idea/icon.svg | 1 + new-cli/.idea/.idea.GitVersion/.idea/indexLayout.xml | 10 ++++++++++ new-cli/docs/calculate.rsp | 2 +- new-cli/docs/output-project.rsp | 2 +- new-cli/docs/output-wix.rsp | 2 +- 6 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 new-cli/.idea/.idea.GitVersion/.idea/icon.svg create mode 100644 new-cli/.idea/.idea.GitVersion/.idea/indexLayout.xml diff --git a/.gitignore b/.gitignore index e5775f626a..6625c880d9 100644 --- a/.gitignore +++ b/.gitignore @@ -136,3 +136,5 @@ node_modules dogfood/ new-cli/log.txt + +new-cli/logs/ diff --git a/new-cli/.idea/.idea.GitVersion/.idea/icon.svg b/new-cli/.idea/.idea.GitVersion/.idea/icon.svg new file mode 100644 index 0000000000..f8bfb01f26 --- /dev/null +++ b/new-cli/.idea/.idea.GitVersion/.idea/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/new-cli/.idea/.idea.GitVersion/.idea/indexLayout.xml b/new-cli/.idea/.idea.GitVersion/.idea/indexLayout.xml new file mode 100644 index 0000000000..db942041e6 --- /dev/null +++ b/new-cli/.idea/.idea.GitVersion/.idea/indexLayout.xml @@ -0,0 +1,10 @@ + + + + + docs + + + + + \ No newline at end of file diff --git a/new-cli/docs/calculate.rsp b/new-cli/docs/calculate.rsp index 7e0362931d..a8a006be0c 100644 --- a/new-cli/docs/calculate.rsp +++ b/new-cli/docs/calculate.rsp @@ -1 +1 @@ -calculate -l c:\logs\log.txt --work-dir C:\Projects\OSS\GitTools\GitVersion --verbosity verbose +calculate -l ./logs/log.txt --work-dir . --verbosity verbose diff --git a/new-cli/docs/output-project.rsp b/new-cli/docs/output-project.rsp index 8619d5df10..734d7e3736 100644 --- a/new-cli/docs/output-project.rsp +++ b/new-cli/docs/output-project.rsp @@ -1 +1 @@ -output --output-dir C:\Projects\OSS\GitTools\GitVersion --input-file version.json project --project-file project.csproj +output --output-dir ./output --input-file version.json project --project-file project.csproj diff --git a/new-cli/docs/output-wix.rsp b/new-cli/docs/output-wix.rsp index 25f543d648..91992af5b6 100644 --- a/new-cli/docs/output-wix.rsp +++ b/new-cli/docs/output-wix.rsp @@ -1 +1 @@ -output --output-dir C:\Projects\OSS\GitTools\GitVersion --input-file version.json wix --wix-file project.wix +output --output-dir ./output --input-file version.json wix --wix-file project.wix From 0988072ad086a524ebb07cd213b008aa70a829f2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Mar 2025 15:42:56 +0000 Subject: [PATCH 385/544] (deps): Bump Microsoft.CSharp and Scriban in /new-cli Bumps Microsoft.CSharp and [Scriban](https://github.com/scriban/scriban). These dependencies needed to be updated together. Updates `Microsoft.CSharp` from 4.7.0 to 4.5.0 Updates `Scriban` from 5.12.0 to 6.0.0 - [Release notes](https://github.com/scriban/scriban/releases) - [Changelog](https://github.com/scriban/scriban/blob/master/changelog.md) - [Commits](https://github.com/scriban/scriban/compare/5.12.0...6.0.0) --- updated-dependencies: - dependency-name: Microsoft.CSharp dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: Scriban dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 5a744aa636..b7b8ff709a 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -15,7 +15,7 @@ - + From 8d772a7ec76098338e6aba30f0688fc034b988d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 16:22:49 +0000 Subject: [PATCH 386/544] (deps): Bump gitreleasemanager.tool from 0.18.0 to 0.19.0 in /build Bumps [gitreleasemanager.tool](https://github.com/GitTools/GitReleaseManager) from 0.18.0 to 0.19.0. - [Release notes](https://github.com/GitTools/GitReleaseManager/releases) - [Changelog](https://github.com/GitTools/GitReleaseManager/blob/develop/GitReleaseManager.yaml) - [Commits](https://github.com/GitTools/GitReleaseManager/compare/0.18.0...0.19.0) --- updated-dependencies: - dependency-name: gitreleasemanager.tool dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .config/dotnet-tools.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 50a3e3e038..d9737dcf19 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "gitreleasemanager.tool": { - "version": "0.18.0", + "version": "0.19.0", "commands": [ "dotnet-gitreleasemanager" ] From 70f554ef6ad7bf7e3c867cb918ae5dcdfe2740ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Mar 2025 19:38:49 +0000 Subject: [PATCH 387/544] (deps): Bump dotnet-sdk from 9.0.200 to 9.0.201 Bumps [dotnet-sdk](https://github.com/dotnet/sdk) from 9.0.200 to 9.0.201. - [Release notes](https://github.com/dotnet/sdk/releases) - [Commits](https://github.com/dotnet/sdk/compare/v9.0.200...v9.0.201) --- updated-dependencies: - dependency-name: dotnet-sdk dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index d5acb9d0bc..de8635bb7c 100644 --- a/global.json +++ b/global.json @@ -5,6 +5,6 @@ "src" ], "sdk": { - "version": "9.0.200" + "version": "9.0.201" } } From bafb3a6a57dde10279f24df865416114bc84cde5 Mon Sep 17 00:00:00 2001 From: Bi0T1N Date: Sat, 8 Feb 2025 14:18:06 +0100 Subject: [PATCH 388/544] Support for dotenv output format closes #4174 --- docs/input/docs/usage/cli/arguments.md | 2 +- docs/input/docs/usage/cli/output.md | 7 + new-cli/command.md | 12 ++ .../ArgumentParserTests.cs | 2 +- src/GitVersion.App/ArgumentParser.cs | 2 +- src/GitVersion.Core/Options/OutputType.cs | 3 +- src/GitVersion.Core/PublicAPI.Shipped.txt | 1 + .../Output/FormatArgumentTests.cs | 127 ++++++++++++++++++ .../OutputGenerator/OutputGenerator.cs | 23 ++++ 9 files changed, 175 insertions(+), 4 deletions(-) diff --git a/docs/input/docs/usage/cli/arguments.md b/docs/input/docs/usage/cli/arguments.md index 01d773c752..8b1b8ea5ea 100644 --- a/docs/input/docs/usage/cli/arguments.md +++ b/docs/input/docs/usage/cli/arguments.md @@ -30,7 +30,7 @@ GitVersion [path] /targetpath Same as 'path', but not positional /output Determines the output to the console. Can be either 'json', - 'file' or 'buildserver', will default to 'json'. + 'file', 'buildserver' or 'dotenv', will default to 'json'. /outputfile Path to output file. It is used in combination with /output 'file'. /showvariable Used in conjunction with /output json, will output just a diff --git a/docs/input/docs/usage/cli/output.md b/docs/input/docs/usage/cli/output.md index 52a03daba1..d26bf5a84d 100644 --- a/docs/input/docs/usage/cli/output.md +++ b/docs/input/docs/usage/cli/output.md @@ -14,3 +14,10 @@ out the variables to whatever build server it is running in. You can then use those variables in your build scripts or run different tools to create versioned NuGet packages or whatever you would like to do. See [build servers](/docs/reference/build-servers) for more information about this. + +You can even store the [variables](/docs/reference/variables) in a Dotenv file +and load it to have the variables available in your environment. +For that you have to run `GitVersion.exe /output dotenv` and store the output +into e.g. a `gitversion.env` file. These files can also be passed around in CI environments +like [GitHub](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables#passing-values-between-steps-and-jobs-in-a-workflow) +or [GitLab](https://docs.gitlab.com/ee/ci/variables/#pass-an-environment-variable-to-another-job). diff --git a/new-cli/command.md b/new-cli/command.md index c137381b07..7e6d2aec3b 100644 --- a/new-cli/command.md +++ b/new-cli/command.md @@ -53,6 +53,18 @@ cat gitversion.json | gitversion output buildserver # Read version variables from stdin and write to Jenkins. cat gitversion.json | gitversion output buildserver --buildserver Jenkins +# Output version variables in Dotenv format +gitversion /output dotenv + +# Show only a subset of the version variables in Dotenv format (Unix syntax) +gitversion /output dotenv | grep -i "prerelease" + +# Show only a subset of the version variables that match the regex in Dotenv format (Unix syntax) +gitversion /output dotenv | grep -iE "major|sha=|_prerelease" + +# Write version variables in Dotenv format into a file +gitversion /output dotenv > gitversion.env + # Read version variables from stdin and write to globbed .wxi files. cat gitversion.json | gitversion output wix --path ./**/*.wxi diff --git a/src/GitVersion.App.Tests/ArgumentParserTests.cs b/src/GitVersion.App.Tests/ArgumentParserTests.cs index 9120204927..abdcd6c2a5 100644 --- a/src/GitVersion.App.Tests/ArgumentParserTests.cs +++ b/src/GitVersion.App.Tests/ArgumentParserTests.cs @@ -103,7 +103,7 @@ public void UnknownOutputShouldThrow() { var exception = Assert.Throws(() => this.argumentParser.ParseArguments("targetDirectoryPath -output invalid_value")); exception.ShouldNotBeNull(); - exception.Message.ShouldBe("Value 'invalid_value' cannot be parsed as output type, please use 'json', 'file' or 'buildserver'"); + exception.Message.ShouldBe("Value 'invalid_value' cannot be parsed as output type, please use 'json', 'file', 'buildserver' or 'dotenv'"); } [Test] diff --git a/src/GitVersion.App/ArgumentParser.cs b/src/GitVersion.App/ArgumentParser.cs index 7686b77231..bccbc96d36 100644 --- a/src/GitVersion.App/ArgumentParser.cs +++ b/src/GitVersion.App/ArgumentParser.cs @@ -432,7 +432,7 @@ private static void ParseOutput(Arguments arguments, IEnumerable? values { if (!Enum.TryParse(v, true, out OutputType outputType)) { - throw new WarningException($"Value '{v}' cannot be parsed as output type, please use 'json', 'file' or 'buildserver'"); + throw new WarningException($"Value '{v}' cannot be parsed as output type, please use 'json', 'file', 'buildserver' or 'dotenv'"); } arguments.Output.Add(outputType); diff --git a/src/GitVersion.Core/Options/OutputType.cs b/src/GitVersion.Core/Options/OutputType.cs index bb72800fc7..3ad1b04d94 100644 --- a/src/GitVersion.Core/Options/OutputType.cs +++ b/src/GitVersion.Core/Options/OutputType.cs @@ -4,5 +4,6 @@ public enum OutputType { BuildServer, Json, - File + File, + DotEnv } diff --git a/src/GitVersion.Core/PublicAPI.Shipped.txt b/src/GitVersion.Core/PublicAPI.Shipped.txt index 646e2c5952..8feb99e5cc 100644 --- a/src/GitVersion.Core/PublicAPI.Shipped.txt +++ b/src/GitVersion.Core/PublicAPI.Shipped.txt @@ -417,6 +417,7 @@ GitVersion.OutputType GitVersion.OutputType.BuildServer = 0 -> GitVersion.OutputType GitVersion.OutputType.File = 2 -> GitVersion.OutputType GitVersion.OutputType.Json = 1 -> GitVersion.OutputType +GitVersion.OutputType.DotEnv = 3 -> GitVersion.OutputType GitVersion.OutputVariables.GitVersionVariables GitVersion.OutputVariables.GitVersionVariables.AssemblySemFileVer.get -> string? GitVersion.OutputVariables.GitVersionVariables.AssemblySemFileVer.init -> void diff --git a/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs b/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs index d116855c6f..f85ac29366 100644 --- a/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs +++ b/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs @@ -68,6 +68,126 @@ public void ShouldOutputFormatWithEnvironmentVariablesTests(string format, strin output.ShouldBeEquivalentTo(expectedValue); } + [TestCase("Major", "1")] + [TestCase("MajorMinorPatch", "1.1.0")] + [TestCase("SemVer", "1.1.0-foo.1")] + [TestCase("PreReleaseTagWithDash", "-foo.1")] + [TestCase("AssemblySemFileVer", "1.1.0.0")] + [TestCase("BranchName", "feature/foo")] + [TestCase("FullSemVer", "1.1.0-foo.1+1")] + public void ShouldOutputDotEnvEntries(string variableName, string expectedValue) + { + var fixture = CreateTestRepository(); + + var consoleBuilder = new StringBuilder(); + IConsole consoleAdapter = new TestConsoleAdapter(consoleBuilder); + + var sp = ConfigureServices(services => + { + var options = Options.Create(new GitVersionOptions { WorkingDirectory = fixture.RepositoryPath, RepositoryInfo = { TargetBranch = fixture.Repository.Head.CanonicalName }, Output = { OutputType.DotEnv } }); + var repository = fixture.Repository.ToGitRepository(); + + services.AddSingleton(options); + services.AddSingleton(repository); + services.AddSingleton(consoleAdapter); + }); + + var versionVariables = sp.GetRequiredService().CalculateVersionVariables(); + var outputGenerator = sp.GetRequiredService(); + + outputGenerator.Execute(versionVariables, new()); + var output = consoleBuilder.ToString(); + output.ShouldContain("GitVersion_" + variableName + "=" + expectedValue + "\n"); + } + + [TestCase] + public void ShouldOutputAllCalculatedVariablesAsDotEnvEntries() + { + var fixture = CreateTestRepository(); + + var consoleBuilder = new StringBuilder(); + IConsole consoleAdapter = new TestConsoleAdapter(consoleBuilder); + + var sp = ConfigureServices(services => + { + var options = Options.Create(new GitVersionOptions { WorkingDirectory = fixture.RepositoryPath, RepositoryInfo = { TargetBranch = fixture.Repository.Head.CanonicalName }, Output = { OutputType.DotEnv } }); + var repository = fixture.Repository.ToGitRepository(); + + services.AddSingleton(options); + services.AddSingleton(repository); + services.AddSingleton(consoleAdapter); + }); + + var versionVariables = sp.GetRequiredService().CalculateVersionVariables(); + var outputGenerator = sp.GetRequiredService(); + + outputGenerator.Execute(versionVariables, new()); + var output = consoleBuilder.ToString(); + var totalOutputLines = output.Split("\n").Length - 1; // ignore last item that also ends with \n + Assert.That(totalOutputLines, Is.EqualTo(versionVariables.Count())); + } + + [TestCase("Major", "0")] + [TestCase("MajorMinorPatch", "0.0.1")] + [TestCase("SemVer", "0.0.1-1")] + [TestCase("BuildMetaData", "''")] + [TestCase("AssemblySemVer", "0.0.1.0")] + [TestCase("PreReleaseTagWithDash", "-1")] + [TestCase("BranchName", "main")] + [TestCase("PreReleaseLabel", "''")] + [TestCase("PreReleaseLabelWithDash", "''")] + public void ShouldOutputAllDotEnvEntriesEvenForMinimalRepositories(string variableName, string expectedValue) + { + var fixture = CreateMinimalTestRepository(); + + var consoleBuilder = new StringBuilder(); + IConsole consoleAdapter = new TestConsoleAdapter(consoleBuilder); + + var sp = ConfigureServices(services => + { + var options = Options.Create(new GitVersionOptions { WorkingDirectory = fixture.RepositoryPath, RepositoryInfo = { TargetBranch = fixture.Repository.Head.CanonicalName }, Output = { OutputType.DotEnv } }); + var repository = fixture.Repository.ToGitRepository(); + + services.AddSingleton(options); + services.AddSingleton(repository); + services.AddSingleton(consoleAdapter); + }); + + var versionVariables = sp.GetRequiredService().CalculateVersionVariables(); + var outputGenerator = sp.GetRequiredService(); + + outputGenerator.Execute(versionVariables, new()); + var output = consoleBuilder.ToString(); + output.ShouldContain("GitVersion_" + variableName + "=" + expectedValue + "\n"); + } + + [TestCase] + public void ShouldOutputAllCalculatedVariablesAsDotEnvEntriesEvenForMinimalRepositories() + { + var fixture = CreateMinimalTestRepository(); + + var consoleBuilder = new StringBuilder(); + IConsole consoleAdapter = new TestConsoleAdapter(consoleBuilder); + + var sp = ConfigureServices(services => + { + var options = Options.Create(new GitVersionOptions { WorkingDirectory = fixture.RepositoryPath, RepositoryInfo = { TargetBranch = fixture.Repository.Head.CanonicalName }, Output = { OutputType.DotEnv } }); + var repository = fixture.Repository.ToGitRepository(); + + services.AddSingleton(options); + services.AddSingleton(repository); + services.AddSingleton(consoleAdapter); + }); + + var versionVariables = sp.GetRequiredService().CalculateVersionVariables(); + var outputGenerator = sp.GetRequiredService(); + + outputGenerator.Execute(versionVariables, new()); + var output = consoleBuilder.ToString(); + var totalOutputLines = output.Split("\n").Length - 1; // ignore last item that also ends with \n + Assert.That(totalOutputLines, Is.EqualTo(versionVariables.Count())); + } + private static EmptyRepositoryFixture CreateTestRepository() { var fixture = new EmptyRepositoryFixture(); @@ -80,4 +200,11 @@ private static EmptyRepositoryFixture CreateTestRepository() _ = fixture.Repository.MakeACommit(); return fixture; } + + private static EmptyRepositoryFixture CreateMinimalTestRepository() + { + var fixture = new EmptyRepositoryFixture(); + _ = fixture.Repository.MakeACommit(); + return fixture; + } } diff --git a/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs b/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs index 1da7fe356e..71eeedcbd0 100644 --- a/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs +++ b/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs @@ -28,11 +28,34 @@ internal sealed class OutputGenerator( public void Execute(GitVersionVariables variables, OutputContext context) { var gitVersionOptions = this.options.Value; + if (gitVersionOptions.Output.Contains(OutputType.BuildServer)) { this.buildAgent.WriteIntegration(this.console.WriteLine, variables, context.UpdateBuildNumber ?? true); } + if (gitVersionOptions.Output.Contains(OutputType.DotEnv)) + { + List dotEnvEntries = []; + foreach (var (key, value) in variables.OrderBy(x => x.Key)) + { + string prefixedKey = "GitVersion_" + key; + string environmentValue = "''"; + if (!value.IsNullOrEmpty()) + { + environmentValue = value; + } + dotEnvEntries.Add(prefixedKey + "=" + environmentValue); + } + + foreach(var dotEnvEntry in dotEnvEntries) + { + this.console.WriteLine(dotEnvEntry); + } + + return; + } + var json = this.serializer.ToJson(variables); if (gitVersionOptions.Output.Contains(OutputType.File)) { From 482a8bcd7e801932d685c8ecdbf2db3de5dd2c5c Mon Sep 17 00:00:00 2001 From: Bi0T1N Date: Wed, 12 Feb 2025 16:47:55 +0100 Subject: [PATCH 389/544] Move usage examples into docs section --- docs/input/docs/usage/cli/output.md | 14 ++++++++++++++ new-cli/command.md | 12 ------------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/docs/input/docs/usage/cli/output.md b/docs/input/docs/usage/cli/output.md index d26bf5a84d..e8cdaf051d 100644 --- a/docs/input/docs/usage/cli/output.md +++ b/docs/input/docs/usage/cli/output.md @@ -21,3 +21,17 @@ For that you have to run `GitVersion.exe /output dotenv` and store the output into e.g. a `gitversion.env` file. These files can also be passed around in CI environments like [GitHub](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables#passing-values-between-steps-and-jobs-in-a-workflow) or [GitLab](https://docs.gitlab.com/ee/ci/variables/#pass-an-environment-variable-to-another-job). +Below are some examples of using the Dotenv format in the Unix command line: +```bash +# Output version variables in Dotenv format +gitversion /output dotenv + +# Show only a subset of the version variables in Dotenv format +gitversion /output dotenv | grep -i "prerelease" + +# Show only a subset of the version variables that match the regex in Dotenv format +gitversion /output dotenv | grep -iE "major|sha=|_prerelease" + +# Write version variables in Dotenv format into a file +gitversion /output dotenv > gitversion.env +``` diff --git a/new-cli/command.md b/new-cli/command.md index 7e6d2aec3b..c137381b07 100644 --- a/new-cli/command.md +++ b/new-cli/command.md @@ -53,18 +53,6 @@ cat gitversion.json | gitversion output buildserver # Read version variables from stdin and write to Jenkins. cat gitversion.json | gitversion output buildserver --buildserver Jenkins -# Output version variables in Dotenv format -gitversion /output dotenv - -# Show only a subset of the version variables in Dotenv format (Unix syntax) -gitversion /output dotenv | grep -i "prerelease" - -# Show only a subset of the version variables that match the regex in Dotenv format (Unix syntax) -gitversion /output dotenv | grep -iE "major|sha=|_prerelease" - -# Write version variables in Dotenv format into a file -gitversion /output dotenv > gitversion.env - # Read version variables from stdin and write to globbed .wxi files. cat gitversion.json | gitversion output wix --path ./**/*.wxi From 7d301093fb4aad4e27cd3965b027b19a2c0fdc75 Mon Sep 17 00:00:00 2001 From: Bi0T1N Date: Thu, 13 Feb 2025 17:09:04 +0100 Subject: [PATCH 390/544] Make tests cross-platform compatible --- src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs b/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs index f85ac29366..b034ff8e1e 100644 --- a/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs +++ b/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs @@ -97,7 +97,7 @@ public void ShouldOutputDotEnvEntries(string variableName, string expectedValue) outputGenerator.Execute(versionVariables, new()); var output = consoleBuilder.ToString(); - output.ShouldContain("GitVersion_" + variableName + "=" + expectedValue + "\n"); + output.ShouldContain($"GitVersion_{variableName}={expectedValue}{SysEnv.NewLine}"); } [TestCase] @@ -123,7 +123,7 @@ public void ShouldOutputAllCalculatedVariablesAsDotEnvEntries() outputGenerator.Execute(versionVariables, new()); var output = consoleBuilder.ToString(); - var totalOutputLines = output.Split("\n").Length - 1; // ignore last item that also ends with \n + var totalOutputLines = output.Split(SysEnv.NewLine).Length - 1; // ignore last item that also ends with the newline string Assert.That(totalOutputLines, Is.EqualTo(versionVariables.Count())); } @@ -158,7 +158,7 @@ public void ShouldOutputAllDotEnvEntriesEvenForMinimalRepositories(string variab outputGenerator.Execute(versionVariables, new()); var output = consoleBuilder.ToString(); - output.ShouldContain("GitVersion_" + variableName + "=" + expectedValue + "\n"); + output.ShouldContain($"GitVersion_{variableName}={expectedValue}{SysEnv.NewLine}"); } [TestCase] @@ -184,7 +184,7 @@ public void ShouldOutputAllCalculatedVariablesAsDotEnvEntriesEvenForMinimalRepos outputGenerator.Execute(versionVariables, new()); var output = consoleBuilder.ToString(); - var totalOutputLines = output.Split("\n").Length - 1; // ignore last item that also ends with \n + var totalOutputLines = output.Split(SysEnv.NewLine).Length - 1; // ignore last item that also ends with the newline string Assert.That(totalOutputLines, Is.EqualTo(versionVariables.Count())); } From 7eabdfd199f12dec29006c0f2f0ae1f16ca237a5 Mon Sep 17 00:00:00 2001 From: Bi0T1N Date: Wed, 26 Feb 2025 22:13:28 +0100 Subject: [PATCH 391/544] Add missing whitespace after foreach --- src/GitVersion.Output/OutputGenerator/OutputGenerator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs b/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs index 71eeedcbd0..ea9a1b06fe 100644 --- a/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs +++ b/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs @@ -48,7 +48,7 @@ public void Execute(GitVersionVariables variables, OutputContext context) dotEnvEntries.Add(prefixedKey + "=" + environmentValue); } - foreach(var dotEnvEntry in dotEnvEntries) + foreach (var dotEnvEntry in dotEnvEntries) { this.console.WriteLine(dotEnvEntry); } From 2602d51f55cd5b7e627b3a3723d88cd69c5e1fed Mon Sep 17 00:00:00 2001 From: Bi0T1N Date: Fri, 7 Mar 2025 20:30:57 +0100 Subject: [PATCH 392/544] Encapsulate all values into single quotes will be more future proof as it might not break on values that contain whitespaces etc --- .../Output/FormatArgumentTests.cs | 26 +++++++++---------- .../OutputGenerator/OutputGenerator.cs | 4 +-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs b/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs index b034ff8e1e..3bcec4b95c 100644 --- a/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs +++ b/src/GitVersion.Output.Tests/Output/FormatArgumentTests.cs @@ -68,13 +68,13 @@ public void ShouldOutputFormatWithEnvironmentVariablesTests(string format, strin output.ShouldBeEquivalentTo(expectedValue); } - [TestCase("Major", "1")] - [TestCase("MajorMinorPatch", "1.1.0")] - [TestCase("SemVer", "1.1.0-foo.1")] - [TestCase("PreReleaseTagWithDash", "-foo.1")] - [TestCase("AssemblySemFileVer", "1.1.0.0")] - [TestCase("BranchName", "feature/foo")] - [TestCase("FullSemVer", "1.1.0-foo.1+1")] + [TestCase("Major", "'1'")] + [TestCase("MajorMinorPatch", "'1.1.0'")] + [TestCase("SemVer", "'1.1.0-foo.1'")] + [TestCase("PreReleaseTagWithDash", "'-foo.1'")] + [TestCase("AssemblySemFileVer", "'1.1.0.0'")] + [TestCase("BranchName", "'feature/foo'")] + [TestCase("FullSemVer", "'1.1.0-foo.1+1'")] public void ShouldOutputDotEnvEntries(string variableName, string expectedValue) { var fixture = CreateTestRepository(); @@ -127,13 +127,13 @@ public void ShouldOutputAllCalculatedVariablesAsDotEnvEntries() Assert.That(totalOutputLines, Is.EqualTo(versionVariables.Count())); } - [TestCase("Major", "0")] - [TestCase("MajorMinorPatch", "0.0.1")] - [TestCase("SemVer", "0.0.1-1")] + [TestCase("Major", "'0'")] + [TestCase("MajorMinorPatch", "'0.0.1'")] + [TestCase("SemVer", "'0.0.1-1'")] [TestCase("BuildMetaData", "''")] - [TestCase("AssemblySemVer", "0.0.1.0")] - [TestCase("PreReleaseTagWithDash", "-1")] - [TestCase("BranchName", "main")] + [TestCase("AssemblySemVer", "'0.0.1.0'")] + [TestCase("PreReleaseTagWithDash", "'-1'")] + [TestCase("BranchName", "'main'")] [TestCase("PreReleaseLabel", "''")] [TestCase("PreReleaseLabelWithDash", "''")] public void ShouldOutputAllDotEnvEntriesEvenForMinimalRepositories(string variableName, string expectedValue) diff --git a/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs b/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs index ea9a1b06fe..8e53f306f8 100644 --- a/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs +++ b/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs @@ -40,12 +40,12 @@ public void Execute(GitVersionVariables variables, OutputContext context) foreach (var (key, value) in variables.OrderBy(x => x.Key)) { string prefixedKey = "GitVersion_" + key; - string environmentValue = "''"; + string environmentValue = ""; if (!value.IsNullOrEmpty()) { environmentValue = value; } - dotEnvEntries.Add(prefixedKey + "=" + environmentValue); + dotEnvEntries.Add($"{prefixedKey}='{environmentValue}'"); } foreach (var dotEnvEntry in dotEnvEntries) From 74c9868a13345556748c317dd039ffd8a2e56ede Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 11 Mar 2025 07:18:02 +0100 Subject: [PATCH 393/544] include contributors in release notes --- GitReleaseManager.yml | 1 + src/GitVersion.sln | 1 + 2 files changed, 2 insertions(+) diff --git a/GitReleaseManager.yml b/GitReleaseManager.yml index 5a85f67383..8e0b3fb546 100644 --- a/GitReleaseManager.yml +++ b/GitReleaseManager.yml @@ -31,6 +31,7 @@ create: sha-section-heading: "SHA256 Hashes of the release artifacts" sha-section-line-format: "- `{1}\t- {0}`" allow-update-to-published: true + include-contributors: true close: use-issue-comments: true issue-comment: |- diff --git a/src/GitVersion.sln b/src/GitVersion.sln index cf4704cb70..64df2b6e40 100644 --- a/src/GitVersion.sln +++ b/src/GitVersion.sln @@ -56,6 +56,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "root", "root", "{7D3A83B4-9 ..\.gitignore = ..\.gitignore ..\GitVersion.yml = ..\GitVersion.yml ..\global.json = ..\global.json + ..\GitReleaseManager.yml = ..\GitReleaseManager.yml EndProjectSection EndProject Global From 3886a51ff5bf2d9c96c42f47c4770186b845cd88 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 12 Mar 2025 07:09:00 +0100 Subject: [PATCH 394/544] fix configuration file name casing un linux --- .../ConfigurationFileLocatorTests.cs | 16 ++++++ .../ConfigurationFileLocator.cs | 56 +++++++++++-------- 2 files changed, 49 insertions(+), 23 deletions(-) diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs index 3d83a38e23..1074bc07d7 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs @@ -153,6 +153,22 @@ public void DoNotThrowWhenWorkingAndRepoPathsAreSame_WithDifferentCasing() Should.NotThrow(() => this.configFileLocator.Verify(this.workingPath, this.repoPath)); } + [Test] + public void DoNotThrowWhenFileNameAreSame_WithDifferentCasing() + { + this.workingPath = this.repoPath; + + this.gitVersionOptions = new() { ConfigurationInfo = { ConfigurationFile = "MyConfig.yaml" } }; + var sp = GetServiceProvider(this.gitVersionOptions); + this.configFileLocator = sp.GetRequiredService(); + this.fileSystem = sp.GetRequiredService(); + + using var _ = this.fileSystem.SetupConfigFile(path: this.workingPath, fileName: ConfigFile.ToLower()); + + var config = Should.NotThrow(() => this.configFileLocator.GetConfigurationFile(this.workingPath)); + config.ShouldNotBe(null); + } + [Test] public void DoNotThrowWhenConfigFileIsInSubDirectoryOfRepoPath() { diff --git a/src/GitVersion.Configuration/ConfigurationFileLocator.cs b/src/GitVersion.Configuration/ConfigurationFileLocator.cs index 752a7b6af7..c2a3ecbafa 100644 --- a/src/GitVersion.Configuration/ConfigurationFileLocator.cs +++ b/src/GitVersion.Configuration/ConfigurationFileLocator.cs @@ -16,7 +16,14 @@ internal class ConfigurationFileLocator( public const string DefaultAlternativeFileName = "GitVersion.yaml"; public const string DefaultFileNameDotted = $".{DefaultFileName}"; public const string DefaultAlternativeFileNameDotted = $".{DefaultAlternativeFileName}"; - public List SupportedConfigFileNames = [DefaultFileName, DefaultAlternativeFileName, DefaultFileNameDotted, DefaultAlternativeFileNameDotted]; + + private readonly string[] SupportedConfigFileNames = + [ + DefaultFileName, + DefaultAlternativeFileName, + DefaultFileNameDotted, + DefaultAlternativeFileNameDotted + ]; private readonly IFileSystem fileSystem = fileSystem.NotNull(); private readonly ILog log = log.NotNull(); @@ -35,21 +42,28 @@ public void Verify(string? workingDirectory, string? projectRootDirectory) { if (directory is null) return null; - string?[] candidates = [this.ConfigurationFile, .. SupportedConfigFileNames]; - var candidatePaths = - from candidate in candidates - where !candidate.IsNullOrWhiteSpace() - select PathHelper.Combine(directory, candidate); + string[] candidates = !string.IsNullOrWhiteSpace(this.ConfigurationFile) + ? [this.ConfigurationFile, .. this.SupportedConfigFileNames] + : this.SupportedConfigFileNames; - foreach (var candidatePath in candidatePaths) + foreach (var fileName in candidates) { - this.log.Debug($"Trying to find configuration file at '{candidatePath}'"); - if (fileSystem.File.Exists(candidatePath)) + this.log.Debug($"Trying to find configuration file {fileName} at '{directory}'"); + if (directory != null && fileSystem.Directory.Exists(directory)) { - this.log.Info($"Found configuration file at '{candidatePath}'"); - return candidatePath; + var files = fileSystem.Directory.GetFiles(directory); + + var matchingFile = files.FirstOrDefault(file => + string.Equals(fileSystem.Path.GetFileName(file), fileName, StringComparison.OrdinalIgnoreCase)); + + if (matchingFile != null) + { + this.log.Info($"Found configuration file at '{matchingFile}'"); + return matchingFile; + } } - this.log.Debug($"Configuration file not found at '{candidatePath}'"); + + this.log.Debug($"Configuration file {fileName} not found at '{directory}'"); } return null; @@ -60,22 +74,18 @@ private void WarnAboutAmbiguousConfigFileSelection(string? workingDirectory, str var workingConfigFile = GetConfigurationFile(workingDirectory); var projectRootConfigFile = GetConfigurationFile(projectRootDirectory); - var hasConfigInWorkingDirectory = workingConfigFile != null; - var hasConfigInProjectRootDirectory = projectRootConfigFile != null; + var hasConfigInWorkingDirectory = workingConfigFile is not null; + var hasConfigInProjectRootDirectory = projectRootConfigFile is not null; if (hasConfigInProjectRootDirectory && hasConfigInWorkingDirectory) { throw new WarningException($"Ambiguous configuration file selection from '{workingConfigFile}' and '{projectRootConfigFile}'"); } - if (!hasConfigInProjectRootDirectory && !hasConfigInWorkingDirectory) - { - if (!SupportedConfigFileNames.Any(entry => entry.Equals(this.ConfigurationFile, StringComparison.OrdinalIgnoreCase))) - { - workingConfigFile = PathHelper.Combine(workingDirectory, this.ConfigurationFile); - projectRootConfigFile = PathHelper.Combine(projectRootDirectory, this.ConfigurationFile); - throw new WarningException($"The configuration file was not found at '{workingConfigFile}' or '{projectRootConfigFile}'"); - } - } + if (hasConfigInProjectRootDirectory || hasConfigInWorkingDirectory || this.SupportedConfigFileNames.Any(entry => entry.Equals(this.ConfigurationFile, StringComparison.OrdinalIgnoreCase))) return; + + workingConfigFile = PathHelper.Combine(workingDirectory, this.ConfigurationFile); + projectRootConfigFile = PathHelper.Combine(projectRootDirectory, this.ConfigurationFile); + throw new WarningException($"The configuration file was not found at '{workingConfigFile}' or '{projectRootConfigFile}'"); } } From 0388b70c84d3b2eabf72988ecee5fc9450c73b7f Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Wed, 12 Mar 2025 08:54:16 +0100 Subject: [PATCH 395/544] fix UTF8 files with BOM --- .editorconfig | 2 +- build/.run/Build.run.xml | 2 +- build/.run/Clean.run.xml | 2 +- build/.run/Package.run.xml | 2 +- build/.run/PublishCoverage.run.xml | 2 +- build/.run/Test.run.xml | 2 +- build/CI.sln | 2 +- build/CI.sln.DotSettings | 2 +- build/Directory.Build.props | 2 +- build/build/Build.csproj.DotSettings | 2 +- new-cli/.run/Tester.run.xml | 2 +- new-cli/GitVersion.Calculation/GitVersion.Calculation.csproj | 2 +- new-cli/GitVersion.sln | 2 +- new-cli/GitVersion.sln.DotSettings | 2 +- new-cli/nuget.config | 2 +- src/.run/schema.run.xml | 2 +- src/GitVersion.App.Tests/TestBuildFile.proj | 2 +- ...rTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt | 2 +- ...rTests.ShouldProperlyOutputNamespaceDeclaration.approved.txt | 2 +- .../AssemblyInfo/AddFormats/VersionAssemblyInfo.fs | 2 +- .../AssemblyInfo/Templates/VersionAssemblyInfo.cs | 2 +- .../AssemblyInfo/Templates/VersionAssemblyInfo.fs | 2 +- .../AssemblyInfo/Templates/VersionAssemblyInfo.vb | 2 +- src/GitVersion.sln.DotSettings | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.editorconfig b/.editorconfig index cd66ed516f..317101a73a 100644 --- a/.editorconfig +++ b/.editorconfig @@ -2,12 +2,12 @@ # top-most EditorConfig file root = true +charset = utf-8 [*] indent_style = space indent_size = 4 end_of_line = lf -charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true diff --git a/build/.run/Build.run.xml b/build/.run/Build.run.xml index 00d2bc0df3..e178484aae 100644 --- a/build/.run/Build.run.xml +++ b/build/.run/Build.run.xml @@ -1,4 +1,4 @@ - + From 8985ccd7e4743fd3d001f0aeafff159612fc7c5d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Mar 2025 15:53:25 +0000 Subject: [PATCH 397/544] (deps): Bump the microsoft group across 2 directories with 1 update Bumps the microsoft group with 1 update in the /new-cli directory: [System.IO.Abstractions](https://github.com/TestableIO/System.IO.Abstractions). Bumps the microsoft group with 1 update in the /src directory: [System.IO.Abstractions](https://github.com/TestableIO/System.IO.Abstractions). Updates `System.IO.Abstractions` from 22.0.11 to 22.0.12 - [Release notes](https://github.com/TestableIO/System.IO.Abstractions/releases) - [Commits](https://github.com/TestableIO/System.IO.Abstractions/compare/v22.0.11...v22.0.12) Updates `System.IO.Abstractions` from 22.0.11 to 22.0.12 - [Release notes](https://github.com/TestableIO/System.IO.Abstractions/releases) - [Commits](https://github.com/TestableIO/System.IO.Abstractions/compare/v22.0.11...v22.0.12) --- updated-dependencies: - dependency-name: System.IO.Abstractions dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: System.IO.Abstractions dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- src/Directory.Packages.props | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index d6293e8afc..d7b98fe599 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -21,7 +21,7 @@ - + \ No newline at end of file diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 6f3a3e8b36..fce833a52d 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -38,7 +38,7 @@ - + From 08e8550abdceec97d11fefd0d743ee50970ea5ef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Mar 2025 08:44:21 +0000 Subject: [PATCH 398/544] (deps): Bump System.CommandLine Bumps the microsoft group with 1 update in the /new-cli directory: [System.CommandLine](https://github.com/dotnet/command-line-api). Updates `System.CommandLine` from 2.0.0-beta4.25153.1 to 2.0.0-beta4.25167.1 - [Release notes](https://github.com/dotnet/command-line-api/releases) - [Changelog](https://github.com/dotnet/command-line-api/blob/main/docs/History.md) - [Commits](https://github.com/dotnet/command-line-api/commits) --- updated-dependencies: - dependency-name: System.CommandLine dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index d7b98fe599..a4334032ec 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -20,7 +20,7 @@ - + From 6daf779cddae5d008d055ed7d59d0bf512f1981d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Mar 2025 09:16:04 +0000 Subject: [PATCH 399/544] (deps): Bump JunitXml.TestLogger from 6.0.0 to 6.1.0 in /src Bumps [JunitXml.TestLogger](https://github.com/spekt/testlogger) from 6.0.0 to 6.1.0. - [Release notes](https://github.com/spekt/testlogger/releases) - [Changelog](https://github.com/spekt/testlogger/blob/master/CHANGELOG.md) - [Commits](https://github.com/spekt/testlogger/compare/v6.0.0...v6.1.0) --- updated-dependencies: - dependency-name: JunitXml.TestLogger dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index fce833a52d..929249a14b 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -20,7 +20,7 @@ - + From 57ccd84cd82e3e8d81b6bded8929edb0e272181a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Mar 2025 15:42:25 +0000 Subject: [PATCH 400/544] (deps): Bump System.CommandLine Bumps the microsoft group with 1 update in the /new-cli directory: [System.CommandLine](https://github.com/dotnet/command-line-api). Updates `System.CommandLine` from 2.0.0-beta4.25167.1 to 2.0.0-beta4.25168.1 - [Release notes](https://github.com/dotnet/command-line-api/releases) - [Changelog](https://github.com/dotnet/command-line-api/blob/main/docs/History.md) - [Commits](https://github.com/dotnet/command-line-api/commits) --- updated-dependencies: - dependency-name: System.CommandLine dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index a4334032ec..c7b3f26f27 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -20,7 +20,7 @@ - + From ea67ff80743c651d39c3b0e1ef8f6cbdaf074072 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Mar 2025 16:32:50 +0000 Subject: [PATCH 401/544] (deps): Bump dotnet-sdk from 9.0.201 to 9.0.202 Bumps [dotnet-sdk](https://github.com/dotnet/sdk) from 9.0.201 to 9.0.202. - [Release notes](https://github.com/dotnet/sdk/releases) - [Commits](https://github.com/dotnet/sdk/compare/v9.0.201...v9.0.202) --- updated-dependencies: - dependency-name: dotnet-sdk dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index de8635bb7c..983865216b 100644 --- a/global.json +++ b/global.json @@ -5,6 +5,6 @@ "src" ], "sdk": { - "version": "9.0.201" + "version": "9.0.202" } } From e63923ba25c42f8cdf9e9938eb57b8dd77878446 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Mar 2025 15:26:02 +0000 Subject: [PATCH 402/544] (deps): Bump System.CommandLine Bumps the microsoft group with 1 update in the /new-cli directory: [System.CommandLine](https://github.com/dotnet/command-line-api). Updates `System.CommandLine` from 2.0.0-beta4.25168.1 to 2.0.0-beta5.25170.1 - [Release notes](https://github.com/dotnet/command-line-api/releases) - [Changelog](https://github.com/dotnet/command-line-api/blob/main/docs/History.md) - [Commits](https://github.com/dotnet/command-line-api/commits) --- updated-dependencies: - dependency-name: System.CommandLine dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index c7b3f26f27..f60736cd7a 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -20,7 +20,7 @@ - + From 122bdd1ad857a8389f239a44f64c8ff75037ed2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Mar 2025 16:59:04 +0000 Subject: [PATCH 403/544] (deps): Bump the serilog group across 1 directory with 2 updates Bumps the serilog group with 2 updates in the /new-cli directory: [Microsoft.Extensions.DependencyInjection.Abstractions](https://github.com/dotnet/runtime) and [Serilog.Extensions.Logging](https://github.com/serilog/serilog-extensions-logging). Updates `Microsoft.Extensions.DependencyInjection.Abstractions` from 9.0.3 to 9.0.0 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.3...v9.0.0) Updates `Serilog.Extensions.Logging` from 9.0.0 to 9.0.1 - [Release notes](https://github.com/serilog/serilog-extensions-logging/releases) - [Commits](https://github.com/serilog/serilog-extensions-logging/compare/v9.0.0...v9.0.1) --- updated-dependencies: - dependency-name: Microsoft.Extensions.DependencyInjection.Abstractions dependency-type: direct:production update-type: version-update:semver-patch dependency-group: serilog - dependency-name: Serilog.Extensions.Logging dependency-type: direct:production update-type: version-update:semver-patch dependency-group: serilog ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index f60736cd7a..97eddeaa42 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -16,7 +16,7 @@ - + From 70eff5cfafb74cc2fe14f8fdcb14590e14e8b650 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Mar 2025 17:28:53 +0000 Subject: [PATCH 404/544] (deps): Bump System.CommandLine Bumps the microsoft group with 1 update in the /new-cli directory: [System.CommandLine](https://github.com/dotnet/command-line-api). Updates `System.CommandLine` from 2.0.0-beta5.25170.1 to 2.0.0-beta5.25174.1 - [Release notes](https://github.com/dotnet/command-line-api/releases) - [Changelog](https://github.com/dotnet/command-line-api/blob/main/docs/History.md) - [Commits](https://github.com/dotnet/command-line-api/commits) --- updated-dependencies: - dependency-name: System.CommandLine dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 97eddeaa42..f652cba978 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -20,7 +20,7 @@ - + From 67b3bfe982ce89631607804bc714724cf42b1b0b Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 1 Apr 2025 07:53:17 +0200 Subject: [PATCH 405/544] Renamed build agent methods for consistency Renamed `GenerateSetVersionMessage` to `SetBuildNumber` and `GenerateSetParameterMessage` to `SetOutputVariables` across all build agents. Updated tests and integrations to reflect these changes for clearer method purpose alignment. --- .../Agents/AzurePipelinesTests.cs | 14 +++++++------- .../Agents/BitBucketPipelinesTests.cs | 6 +++--- .../Agents/BuildKiteTests.cs | 8 ++++---- .../Agents/BuildServerBaseTests.cs | 6 +++--- .../Agents/ContinuaCiTests.cs | 4 ++-- .../Agents/EnvRunTests.cs | 8 ++++---- .../Agents/GitHubActionsTests.cs | 16 ++++++++-------- .../Agents/GitLabCiTests.cs | 12 ++++++------ .../Agents/JenkinsTests.cs | 12 ++++++------ .../Agents/MyGetTests.cs | 17 +++++------------ .../Agents/SpaceAutomationTests.cs | 4 ++-- .../Agents/TeamCityTests.cs | 8 ++++---- src/GitVersion.BuildAgents/Agents/AppVeyor.cs | 4 ++-- .../Agents/AzurePipelines.cs | 4 ++-- .../Agents/BitBucketPipelines.cs | 4 ++-- .../Agents/BuildKite.cs | 4 ++-- .../Agents/CodeBuild.cs | 6 +++--- .../Agents/ContinuaCi.cs | 4 ++-- src/GitVersion.BuildAgents/Agents/Drone.cs | 4 ++-- src/GitVersion.BuildAgents/Agents/EnvRun.cs | 4 ++-- .../Agents/GitHubActions.cs | 4 ++-- src/GitVersion.BuildAgents/Agents/GitLabCi.cs | 6 +++--- src/GitVersion.BuildAgents/Agents/Jenkins.cs | 6 +++--- src/GitVersion.BuildAgents/Agents/MyGet.cs | 10 +++------- .../Agents/SpaceAutomation.cs | 4 ++-- src/GitVersion.BuildAgents/Agents/TeamCity.cs | 4 ++-- src/GitVersion.BuildAgents/Agents/TravisCI.cs | 4 ++-- src/GitVersion.Core/Agents/BuildAgentBase.cs | 19 ++++++++++--------- src/GitVersion.Core/Agents/LocalBuild.cs | 4 ++-- 29 files changed, 100 insertions(+), 110 deletions(-) diff --git a/src/GitVersion.BuildAgents.Tests/Agents/AzurePipelinesTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/AzurePipelinesTests.cs index 025cbb5c5f..e647086ad3 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/AzurePipelinesTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/AzurePipelinesTests.cs @@ -26,18 +26,18 @@ public void SetEnvironmentVariableForTest() public void ClearEnvironmentVariableForTest() => this.environment.SetEnvironmentVariable(key, null); [Test] - public void DevelopBranch() + public void ShouldSetBuildNumber() { var vars = new TestableGitVersionVariables { FullSemVer = "0.0.0-Unstable4" }; - var vsVersion = this.buildServer.GenerateSetVersionMessage(vars); + var vsVersion = this.buildServer.SetBuildNumber(vars); vsVersion.ShouldBe("##vso[build.updatebuildnumber]Some Build_Value 0.0.0-Unstable4 20151310.3 $(UnknownVar) Release"); } [Test] - public void EscapeValues() + public void ShouldSetOutputVariables() { - var vsVersion = this.buildServer.GenerateSetParameterMessage("Foo", "0.8.0-unstable568 Branch:'develop' Sha:'ee69bff1087ebc95c6b43aa2124bd58f5722e0cb'"); + var vsVersion = this.buildServer.SetOutputVariables("Foo", "0.8.0-unstable568 Branch:'develop' Sha:'ee69bff1087ebc95c6b43aa2124bd58f5722e0cb'"); vsVersion.ShouldContain("##vso[task.setvariable variable=GitVersion.Foo]0.8.0-unstable568 Branch:'develop' Sha:'ee69bff1087ebc95c6b43aa2124bd58f5722e0cb'"); vsVersion.ShouldContain("##vso[task.setvariable variable=GitVersion.Foo;isOutput=true]0.8.0-unstable568 Branch:'develop' Sha:'ee69bff1087ebc95c6b43aa2124bd58f5722e0cb'"); @@ -50,7 +50,7 @@ public void MissingEnvShouldNotBlowUp() const string semver = "0.0.0-Unstable4"; var vars = new TestableGitVersionVariables { FullSemVer = semver }; - var vsVersion = this.buildServer.GenerateSetVersionMessage(vars); + var vsVersion = this.buildServer.SetBuildNumber(vars); vsVersion.ShouldBe(semver); } @@ -62,7 +62,7 @@ public void AzurePipelinesBuildNumberWithFullSemVer(string buildNumberFormat, st { this.environment.SetEnvironmentVariable(key, buildNumberFormat); var vars = new TestableGitVersionVariables { FullSemVer = myFullSemVer }; - var logMessage = this.buildServer.GenerateSetVersionMessage(vars); + var logMessage = this.buildServer.SetBuildNumber(vars); logMessage.ShouldBe(logPrefix + expectedBuildNumber); } @@ -74,7 +74,7 @@ public void AzurePipelinesBuildNumberWithSemVer(string buildNumberFormat, string { this.environment.SetEnvironmentVariable(key, buildNumberFormat); var vars = new TestableGitVersionVariables { SemVer = mySemVer }; - var logMessage = this.buildServer.GenerateSetVersionMessage(vars); + var logMessage = this.buildServer.SetBuildNumber(vars); logMessage.ShouldBe(logPrefix + expectedBuildNumber); } } diff --git a/src/GitVersion.BuildAgents.Tests/Agents/BitBucketPipelinesTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/BitBucketPipelinesTests.cs index dbaef24ea1..a8a39cbca0 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/BitBucketPipelinesTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/BitBucketPipelinesTests.cs @@ -46,7 +46,7 @@ public void CalculateVersionOnMainBranch() this.environment.SetEnvironmentVariable(BitBucketPipelines.BranchEnvironmentVariableName, "refs/heads/main"); var vars = new TestableGitVersionVariables { FullSemVer = "1.2.3" }; - var vsVersion = this.buildServer.GenerateSetVersionMessage(vars); + var vsVersion = this.buildServer.SetBuildNumber(vars); vsVersion.ShouldBe("1.2.3"); } @@ -58,7 +58,7 @@ public void CalculateVersionOnDevelopBranch() this.environment.SetEnvironmentVariable(BitBucketPipelines.BranchEnvironmentVariableName, "refs/heads/develop"); var vars = new TestableGitVersionVariables { FullSemVer = "1.2.3-unstable.4" }; - var vsVersion = this.buildServer.GenerateSetVersionMessage(vars); + var vsVersion = this.buildServer.SetBuildNumber(vars); vsVersion.ShouldBe("1.2.3-unstable.4"); } @@ -70,7 +70,7 @@ public void CalculateVersionOnFeatureBranch() this.environment.SetEnvironmentVariable(BitBucketPipelines.BranchEnvironmentVariableName, "refs/heads/feature/my-work"); var vars = new TestableGitVersionVariables { FullSemVer = "1.2.3-beta.4" }; - var vsVersion = this.buildServer.GenerateSetVersionMessage(vars); + var vsVersion = this.buildServer.SetBuildNumber(vars); vsVersion.ShouldBe("1.2.3-beta.4"); } diff --git a/src/GitVersion.BuildAgents.Tests/Agents/BuildKiteTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/BuildKiteTests.cs index 3cb40d44ec..516bf2da94 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/BuildKiteTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/BuildKiteTests.cs @@ -73,23 +73,23 @@ public void GetCurrentBranchShouldHandlePullRequests() } [Test] - public void GetSetParameterMessageShouldReturnEmptyArray() + public void ShouldSetOutputVariables() { // Act - var result = this.buildServer.GenerateSetParameterMessage("Foo", "Bar"); + var result = this.buildServer.SetOutputVariables("Foo", "Bar"); // Assert result.ShouldBeEmpty(); } [Test] - public void GetEmptyGenerateSetVersionMessage() + public void ShouldSetBuildNumber() { // Arrange var vars = new TestableGitVersionVariables { FullSemVer = "1.0.0" }; // Act - var message = this.buildServer.GenerateSetVersionMessage(vars); + var message = this.buildServer.SetBuildNumber(vars); // Assert message.ShouldBeEmpty(); diff --git a/src/GitVersion.BuildAgents.Tests/Agents/BuildServerBaseTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/BuildServerBaseTests.cs index 0042b69743..44200014a9 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/BuildServerBaseTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/BuildServerBaseTests.cs @@ -46,7 +46,7 @@ public void BuildNumberIsFullSemVer() writes = []; buildAgent.WriteIntegration(writes.Add, variables, false); - writes.ShouldNotContain(x => x != null && x.StartsWith("Executing GenerateSetVersionMessage for ")); + writes.ShouldNotContain(x => x != null && x.StartsWith("Set Build Number for ")); } private class BuildAgent(IEnvironment environment, ILog log, IFileSystem fileSystem) : BuildAgentBase(environment, log, fileSystem) @@ -55,8 +55,8 @@ private class BuildAgent(IEnvironment environment, ILog log, IFileSystem fileSys public override bool CanApplyToCurrentContext() => throw new NotImplementedException(); - public override string GenerateSetVersionMessage(GitVersionVariables variables) => variables.FullSemVer; + public override string SetBuildNumber(GitVersionVariables variables) => variables.FullSemVer; - public override string[] GenerateSetParameterMessage(string name, string? value) => []; + public override string[] SetOutputVariables(string name, string? value) => []; } } diff --git a/src/GitVersion.BuildAgents.Tests/Agents/ContinuaCiTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/ContinuaCiTests.cs index 45f4882ea6..6ed2ff100e 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/ContinuaCiTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/ContinuaCiTests.cs @@ -12,11 +12,11 @@ public class ContinuaCiTests : TestBase public void SetUp() => this.sp = ConfigureServices(services => services.AddSingleton()); [Test] - public void GenerateBuildVersion() + public void ShouldSetBuildNumber() { var buildServer = this.sp.GetRequiredService(); var vars = new TestableGitVersionVariables { FullSemVer = "0.0.0-Beta4.7" }; - var continuaCiVersion = buildServer.GenerateSetVersionMessage(vars); + var continuaCiVersion = buildServer.SetBuildNumber(vars); Assert.That(continuaCiVersion, Is.EqualTo("@@continua[setBuildVersion value='0.0.0-Beta4.7']")); } } diff --git a/src/GitVersion.BuildAgents.Tests/Agents/EnvRunTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/EnvRunTests.cs index f7df7ae10d..bff6125322 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/EnvRunTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/EnvRunTests.cs @@ -52,18 +52,18 @@ public void CanApplyToCurrentContextEnvironmentVariableNotSet() [TestCase("1.2.3")] [TestCase("1.2.3-rc4")] - public void GenerateSetVersionMessage(string fullSemVer) + public void ShouldSetBuildNumber(string fullSemVer) { var vars = new TestableGitVersionVariables { FullSemVer = fullSemVer }; - var version = this.buildServer.GenerateSetVersionMessage(vars); + var version = this.buildServer.SetBuildNumber(vars); version.ShouldBe(fullSemVer); } [TestCase("Version", "1.2.3", "@@envrun[set name='GitVersion_Version' value='1.2.3']")] [TestCase("Version", "1.2.3-rc4", "@@envrun[set name='GitVersion_Version' value='1.2.3-rc4']")] - public void GenerateSetParameterMessage(string name, string? value, string expected) + public void ShouldSetOutputVariables(string name, string? value, string expected) { - var output = this.buildServer.GenerateSetParameterMessage(name, value); + var output = this.buildServer.SetOutputVariables(name, value); output.ShouldHaveSingleItem(); output[0].ShouldBe(expected); } diff --git a/src/GitVersion.BuildAgents.Tests/Agents/GitHubActionsTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/GitHubActionsTests.cs index 83c40c5d0f..34f7c43140 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/GitHubActionsTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/GitHubActionsTests.cs @@ -103,23 +103,23 @@ public void GetCurrentBranchShouldHandlePullRequests() } [Test] - public void GetSetParameterMessage() + public void ShouldSetOutputVariables() { // Assert this.environment.GetEnvironmentVariable("GitVersion_Something").ShouldBeNullOrWhiteSpace(); // Act - var result = this.buildServer.GenerateSetParameterMessage("GitVersion_Something", "1.0.0"); + var result = this.buildServer.SetOutputVariables("GitVersion_Something", "1.0.0"); // Assert result.ShouldContain(_ => true, 0); } [Test] - public void SkipEmptySetParameterMessage() + public void SkipEmptyOutputVariables() { // Act - var result = this.buildServer.GenerateSetParameterMessage("Hello", string.Empty); + var result = this.buildServer.SetOutputVariables("Hello", string.Empty); // Assert result.ShouldBeEquivalentTo(Array.Empty()); @@ -140,7 +140,7 @@ public void ShouldWriteIntegration() this.buildServer.WriteIntegration(s => list.Add(s), vars); // Assert - var expected = new List { "Executing GenerateSetVersionMessage for 'GitHubActions'.", "", "Executing GenerateBuildLogOutput for 'GitHubActions'.", "Writing version variables to $GITHUB_ENV file for 'GitHubActions'." }; + var expected = new List { "Set Build Number for 'GitHubActions'.", "", "Set Output Variables for 'GitHubActions'.", "Writing version variables to $GITHUB_ENV file for 'GitHubActions'." }; string.Join(PathHelper.NewLine, list) .ShouldBe(string.Join(PathHelper.NewLine, expected)); @@ -167,17 +167,17 @@ public void ShouldNotWriteIntegration() // Act this.buildServer.WriteIntegration(s => list.Add(s), vars, false); - list.ShouldNotContain(x => x != null && x.StartsWith("Executing GenerateSetVersionMessage for ")); + list.ShouldNotContain(x => x != null && x.StartsWith("Set Build Number for ")); } [Test] - public void GetEmptyGenerateSetVersionMessage() + public void ShouldSetBuildNumber() { // Arrange var vars = new TestableGitVersionVariables { FullSemVer = "1.0.0" }; // Act - var message = this.buildServer.GenerateSetVersionMessage(vars); + var message = this.buildServer.SetBuildNumber(vars); // Assert message.ShouldBeEmpty(); diff --git a/src/GitVersion.BuildAgents.Tests/Agents/GitLabCiTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/GitLabCiTests.cs index 06f05ac711..9f78e800a7 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/GitLabCiTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/GitLabCiTests.cs @@ -29,18 +29,18 @@ public void SetUp() public void TearDown() => this.environment.SetEnvironmentVariable(GitLabCi.EnvironmentVariableName, null); [Test] - public void GenerateSetVersionMessageReturnsVersionAsIsAlthoughThisIsNotUsedByJenkins() + public void ShouldSetBuildNumber() { var vars = new TestableGitVersionVariables { FullSemVer = "0.0.0-Beta4.7" }; - this.buildServer.GenerateSetVersionMessage(vars).ShouldBe("0.0.0-Beta4.7"); + this.buildServer.SetBuildNumber(vars).ShouldBe("0.0.0-Beta4.7"); } [Test] - public void GenerateMessageTest() + public void ShouldSetOutputVariables() { - var generatedParameterMessages = this.buildServer.GenerateSetParameterMessage("name", "value"); - generatedParameterMessages.Length.ShouldBe(1); - generatedParameterMessages[0].ShouldBe("GitVersion_name=value"); + var result = this.buildServer.SetOutputVariables("name", "value"); + result.Length.ShouldBe(1); + result[0].ShouldBe("GitVersion_name=value"); } [TestCase("main", "main")] diff --git a/src/GitVersion.BuildAgents.Tests/Agents/JenkinsTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/JenkinsTests.cs index 451a1b4dd9..0899cd8c31 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/JenkinsTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/JenkinsTests.cs @@ -94,18 +94,18 @@ public void JenkinsTakesBranchNameInPipelineAsCode() } [Test] - public void GenerateSetVersionMessageReturnsVersionAsIsAlthoughThisIsNotUsedByJenkins() + public void ShouldSetBuildNumber() { var vars = new TestableGitVersionVariables { FullSemVer = "0.0.0-Beta4.7" }; - this.buildServer.GenerateSetVersionMessage(vars).ShouldBe("0.0.0-Beta4.7"); + this.buildServer.SetBuildNumber(vars).ShouldBe("0.0.0-Beta4.7"); } [Test] - public void GenerateMessageTest() + public void ShouldSetOutputVariables() { - var generatedParameterMessages = this.buildServer.GenerateSetParameterMessage("name", "value"); - generatedParameterMessages.Length.ShouldBe(1); - generatedParameterMessages[0].ShouldBe("GitVersion_name=value"); + var result = this.buildServer.SetOutputVariables("name", "value"); + result.Length.ShouldBe(1); + result[0].ShouldBe("GitVersion_name=value"); } [Test] diff --git a/src/GitVersion.BuildAgents.Tests/Agents/MyGetTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/MyGetTests.cs index 73eb8fb787..9894f777ef 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/MyGetTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/MyGetTests.cs @@ -16,24 +16,17 @@ public void SetUp() } [Test] - public void DevelopBranch() + public void ShouldSetBuildNumber() { var vars = new TestableGitVersionVariables { FullSemVer = "0.0.0-Unstable4" }; - var message = this.buildServer.GenerateSetVersionMessage(vars); - Assert.That(message, Is.EqualTo(null)); + var message = this.buildServer.SetBuildNumber(vars); + Assert.That(message, Is.EqualTo("##myget[buildNumber '0.0.0-Unstable4']")); } [Test] - public void EscapeValues() + public void ShouldSetOutputVariables() { - var message = this.buildServer.GenerateSetParameterMessage("Foo", "0.8.0-unstable568 Branch:'develop' Sha:'ee69bff1087ebc95c6b43aa2124bd58f5722e0cb'"); + var message = this.buildServer.SetOutputVariables("Foo", "0.8.0-unstable568 Branch:'develop' Sha:'ee69bff1087ebc95c6b43aa2124bd58f5722e0cb'"); Assert.That(message[0], Is.EqualTo("##myget[setParameter name='GitVersion.Foo' value='0.8.0-unstable568 Branch:|'develop|' Sha:|'ee69bff1087ebc95c6b43aa2124bd58f5722e0cb|'']")); } - - [Test] - public void BuildNumber() - { - var message = this.buildServer.GenerateSetParameterMessage("SemVer", "0.8.0-unstable568"); - Assert.That(message[1], Is.EqualTo("##myget[buildNumber '0.8.0-unstable568']")); - } } diff --git a/src/GitVersion.BuildAgents.Tests/Agents/SpaceAutomationTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/SpaceAutomationTests.cs index 9afdb28362..c330ab2ea7 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/SpaceAutomationTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/SpaceAutomationTests.cs @@ -84,13 +84,13 @@ public void GetCurrentBranchShouldHandlePullRequests() } [Test] - public void GetEmptyGenerateSetVersionMessage() + public void ShouldSetBuildNumber() { // Arrange var vars = new TestableGitVersionVariables { FullSemVer = "1.0.0" }; // Act - var message = this.buildServer.GenerateSetVersionMessage(vars); + var message = this.buildServer.SetBuildNumber(vars); // Assert message.ShouldBeEmpty(); diff --git a/src/GitVersion.BuildAgents.Tests/Agents/TeamCityTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/TeamCityTests.cs index f2364e3aaf..d3cbca95cf 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/TeamCityTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/TeamCityTests.cs @@ -16,17 +16,17 @@ public void SetUp() } [Test] - public void DevelopBranch() + public void ShouldSetBuildNumber() { var vars = new TestableGitVersionVariables { FullSemVer = "0.0.0-Unstable4" }; - var tcVersion = this.buildServer.GenerateSetVersionMessage(vars); + var tcVersion = this.buildServer.SetBuildNumber(vars); Assert.That(tcVersion, Is.EqualTo("##teamcity[buildNumber '0.0.0-Unstable4']")); } [Test] - public void EscapeValues() + public void ShouldSetOutputVariables() { - var tcVersion = this.buildServer.GenerateSetParameterMessage("Foo", "0.8.0-unstable568 Branch:'develop' Sha:'ee69bff1087ebc95c6b43aa2124bd58f5722e0cb'"); + var tcVersion = this.buildServer.SetOutputVariables("Foo", "0.8.0-unstable568 Branch:'develop' Sha:'ee69bff1087ebc95c6b43aa2124bd58f5722e0cb'"); Assert.Multiple(() => { Assert.That(tcVersion[0], Is.EqualTo("##teamcity[setParameter name='GitVersion.Foo' value='0.8.0-unstable568 Branch:|'develop|' Sha:|'ee69bff1087ebc95c6b43aa2124bd58f5722e0cb|'']")); diff --git a/src/GitVersion.BuildAgents/Agents/AppVeyor.cs b/src/GitVersion.BuildAgents/Agents/AppVeyor.cs index c3b73be7f9..49c8bf4e6c 100644 --- a/src/GitVersion.BuildAgents/Agents/AppVeyor.cs +++ b/src/GitVersion.BuildAgents/Agents/AppVeyor.cs @@ -11,7 +11,7 @@ internal class AppVeyor(IEnvironment environment, ILog log, IFileSystem fileSyst protected override string EnvironmentVariable => EnvironmentVariableName; - public override string GenerateSetVersionMessage(GitVersionVariables variables) + public override string SetBuildNumber(GitVersionVariables variables) { var buildNumber = Environment.GetEnvironmentVariable("APPVEYOR_BUILD_NUMBER"); var apiUrl = Environment.GetEnvironmentVariable("APPVEYOR_API_URL") ?? throw new Exception("APPVEYOR_API_URL environment variable not set"); @@ -38,7 +38,7 @@ public override string GenerateSetVersionMessage(GitVersionVariables variables) return $"Set AppVeyor build number to '{variables.FullSemVer}'."; } - public override string[] GenerateSetParameterMessage(string name, string? value) + public override string[] SetOutputVariables(string name, string? value) { var apiUrl = Environment.GetEnvironmentVariable("APPVEYOR_API_URL") ?? throw new Exception("APPVEYOR_API_URL environment variable not set"); var httpClient = GetHttpClient(apiUrl); diff --git a/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs b/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs index b6fca6b9ac..c8fef2b6e6 100644 --- a/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs +++ b/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs @@ -11,7 +11,7 @@ internal class AzurePipelines(IEnvironment environment, ILog log, IFileSystem fi protected override string EnvironmentVariable => EnvironmentVariableName; - public override string[] GenerateSetParameterMessage(string name, string? value) => + public override string[] SetOutputVariables(string name, string? value) => [ $"##vso[task.setvariable variable=GitVersion.{name}]{value}", $"##vso[task.setvariable variable=GitVersion.{name};isOutput=true]{value}" @@ -22,7 +22,7 @@ public override string[] GenerateSetParameterMessage(string name, string? value) public override bool PreventFetch() => true; - public override string GenerateSetVersionMessage(GitVersionVariables variables) + public override string SetBuildNumber(GitVersionVariables variables) { // For AzurePipelines, we'll get the Build Number and insert GitVersion variables where // specified diff --git a/src/GitVersion.BuildAgents/Agents/BitBucketPipelines.cs b/src/GitVersion.BuildAgents/Agents/BitBucketPipelines.cs index b2954465f5..836101e09f 100644 --- a/src/GitVersion.BuildAgents/Agents/BitBucketPipelines.cs +++ b/src/GitVersion.BuildAgents/Agents/BitBucketPipelines.cs @@ -21,13 +21,13 @@ public BitBucketPipelines(IEnvironment environment, ILog log, IFileSystem fileSy protected override string EnvironmentVariable => EnvironmentVariableName; - public override string GenerateSetVersionMessage(GitVersionVariables variables) => variables.FullSemVer; + public override string SetBuildNumber(GitVersionVariables variables) => variables.FullSemVer; public void WithPropertyFile(string propertiesFileName) => this.propertyFile = propertiesFileName; public void WithPowershellFile(string powershellFileName) => this.ps1File = powershellFileName; - public override string[] GenerateSetParameterMessage(string name, string? value) => [$"GITVERSION_{name.ToUpperInvariant()}={value}"]; + public override string[] SetOutputVariables(string name, string? value) => [$"GITVERSION_{name.ToUpperInvariant()}={value}"]; public override void WriteIntegration(Action writer, GitVersionVariables variables, bool updateBuildNumber = true) { diff --git a/src/GitVersion.BuildAgents/Agents/BuildKite.cs b/src/GitVersion.BuildAgents/Agents/BuildKite.cs index dbd0d58d2a..bdf325460a 100644 --- a/src/GitVersion.BuildAgents/Agents/BuildKite.cs +++ b/src/GitVersion.BuildAgents/Agents/BuildKite.cs @@ -12,10 +12,10 @@ internal class BuildKite(IEnvironment environment, ILog log, IFileSystem fileSys public override bool CanApplyToCurrentContext() => "true".Equals(Environment.GetEnvironmentVariable(EnvironmentVariable), StringComparison.OrdinalIgnoreCase); - public override string GenerateSetVersionMessage(GitVersionVariables variables) => + public override string SetBuildNumber(GitVersionVariables variables) => string.Empty; // There is no equivalent function in BuildKite. - public override string[] GenerateSetParameterMessage(string name, string? value) => + public override string[] SetOutputVariables(string name, string? value) => []; // There is no equivalent function in BuildKite. public override string? GetCurrentBranch(bool usingDynamicRepos) diff --git a/src/GitVersion.BuildAgents/Agents/CodeBuild.cs b/src/GitVersion.BuildAgents/Agents/CodeBuild.cs index 791ac37e85..30b710d8c4 100644 --- a/src/GitVersion.BuildAgents/Agents/CodeBuild.cs +++ b/src/GitVersion.BuildAgents/Agents/CodeBuild.cs @@ -17,9 +17,9 @@ internal sealed class CodeBuild : BuildAgentBase protected override string EnvironmentVariable => WebHookEnvironmentVariableName; - public override string GenerateSetVersionMessage(GitVersionVariables variables) => variables.FullSemVer; + public override string SetBuildNumber(GitVersionVariables variables) => variables.FullSemVer; - public override string[] GenerateSetParameterMessage(string name, string? value) => + public override string[] SetOutputVariables(string name, string? value) => [ $"GitVersion_{name}={value}" ]; @@ -38,7 +38,7 @@ public override void WriteIntegration(Action writer, GitVersionVariable base.WriteIntegration(writer, variables, updateBuildNumber); writer($"Outputting variables to '{this.file}' ... "); - this.FileSystem.File.WriteAllLines(this.file, GenerateBuildLogOutput(variables)); + this.FileSystem.File.WriteAllLines(this.file, SetOutputVariables(variables)); } public override bool PreventFetch() => true; diff --git a/src/GitVersion.BuildAgents/Agents/ContinuaCi.cs b/src/GitVersion.BuildAgents/Agents/ContinuaCi.cs index 08b90a6e5a..ecdf5a0bc8 100644 --- a/src/GitVersion.BuildAgents/Agents/ContinuaCi.cs +++ b/src/GitVersion.BuildAgents/Agents/ContinuaCi.cs @@ -10,12 +10,12 @@ internal class ContinuaCi(IEnvironment environment, ILog log, IFileSystem fileSy protected override string EnvironmentVariable => EnvironmentVariableName; - public override string[] GenerateSetParameterMessage(string name, string? value) => + public override string[] SetOutputVariables(string name, string? value) => [ $"@@continua[setVariable name='GitVersion_{name}' value='{value}' skipIfNotDefined='true']" ]; - public override string GenerateSetVersionMessage(GitVersionVariables variables) => $"@@continua[setBuildVersion value='{variables.FullSemVer}']"; + public override string SetBuildNumber(GitVersionVariables variables) => $"@@continua[setBuildVersion value='{variables.FullSemVer}']"; public override bool PreventFetch() => false; } diff --git a/src/GitVersion.BuildAgents/Agents/Drone.cs b/src/GitVersion.BuildAgents/Agents/Drone.cs index 503815e33a..d5c46697d5 100644 --- a/src/GitVersion.BuildAgents/Agents/Drone.cs +++ b/src/GitVersion.BuildAgents/Agents/Drone.cs @@ -11,9 +11,9 @@ internal class Drone(IEnvironment environment, ILog log, IFileSystem fileSystem) protected override string EnvironmentVariable => EnvironmentVariableName; public override bool CanApplyToCurrentContext() => "true".Equals(Environment.GetEnvironmentVariable(EnvironmentVariable), StringComparison.OrdinalIgnoreCase); - public override string GenerateSetVersionMessage(GitVersionVariables variables) => variables.FullSemVer; + public override string SetBuildNumber(GitVersionVariables variables) => variables.FullSemVer; - public override string[] GenerateSetParameterMessage(string name, string? value) => + public override string[] SetOutputVariables(string name, string? value) => [ $"GitVersion_{name}={value}" ]; diff --git a/src/GitVersion.BuildAgents/Agents/EnvRun.cs b/src/GitVersion.BuildAgents/Agents/EnvRun.cs index 171b945dfd..45b9e3e075 100644 --- a/src/GitVersion.BuildAgents/Agents/EnvRun.cs +++ b/src/GitVersion.BuildAgents/Agents/EnvRun.cs @@ -26,9 +26,9 @@ public override bool CanApplyToCurrentContext() return false; } - public override string GenerateSetVersionMessage(GitVersionVariables variables) => variables.FullSemVer; + public override string SetBuildNumber(GitVersionVariables variables) => variables.FullSemVer; - public override string[] GenerateSetParameterMessage(string name, string? value) => + public override string[] SetOutputVariables(string name, string? value) => [ $"@@envrun[set name='GitVersion_{name}' value='{value}']" ]; diff --git a/src/GitVersion.BuildAgents/Agents/GitHubActions.cs b/src/GitVersion.BuildAgents/Agents/GitHubActions.cs index ff4a16d653..7bd1515e11 100644 --- a/src/GitVersion.BuildAgents/Agents/GitHubActions.cs +++ b/src/GitVersion.BuildAgents/Agents/GitHubActions.cs @@ -14,10 +14,10 @@ internal class GitHubActions(IEnvironment environment, ILog log, IFileSystem fil protected override string EnvironmentVariable => EnvironmentVariableName; - public override string GenerateSetVersionMessage(GitVersionVariables variables) => + public override string SetBuildNumber(GitVersionVariables variables) => string.Empty; // There is no equivalent function in GitHub Actions. - public override string[] GenerateSetParameterMessage(string name, string? value) => + public override string[] SetOutputVariables(string name, string? value) => []; // There is no equivalent function in GitHub Actions. public override void WriteIntegration(Action writer, GitVersionVariables variables, bool updateBuildNumber = true) diff --git a/src/GitVersion.BuildAgents/Agents/GitLabCi.cs b/src/GitVersion.BuildAgents/Agents/GitLabCi.cs index 350b75d849..572590de54 100644 --- a/src/GitVersion.BuildAgents/Agents/GitLabCi.cs +++ b/src/GitVersion.BuildAgents/Agents/GitLabCi.cs @@ -15,9 +15,9 @@ internal class GitLabCi : BuildAgentBase protected override string EnvironmentVariable => EnvironmentVariableName; - public override string GenerateSetVersionMessage(GitVersionVariables variables) => variables.FullSemVer; + public override string SetBuildNumber(GitVersionVariables variables) => variables.FullSemVer; - public override string[] GenerateSetParameterMessage(string name, string? value) => + public override string[] SetOutputVariables(string name, string? value) => [ $"GitVersion_{name}={value}" ]; @@ -45,6 +45,6 @@ public override void WriteIntegration(Action writer, GitVersionVariable base.WriteIntegration(writer, variables, updateBuildNumber); writer($"Outputting variables to '{this.file}' ... "); - this.FileSystem.File.WriteAllLines(this.file, GenerateBuildLogOutput(variables)); + this.FileSystem.File.WriteAllLines(this.file, SetOutputVariables(variables)); } } diff --git a/src/GitVersion.BuildAgents/Agents/Jenkins.cs b/src/GitVersion.BuildAgents/Agents/Jenkins.cs index e23a8be632..57c78aede1 100644 --- a/src/GitVersion.BuildAgents/Agents/Jenkins.cs +++ b/src/GitVersion.BuildAgents/Agents/Jenkins.cs @@ -15,9 +15,9 @@ internal class Jenkins : BuildAgentBase public void WithPropertyFile(string propertiesFileName) => this.file = propertiesFileName; - public override string GenerateSetVersionMessage(GitVersionVariables variables) => variables.FullSemVer; + public override string SetBuildNumber(GitVersionVariables variables) => variables.FullSemVer; - public override string[] GenerateSetParameterMessage(string name, string? value) => + public override string[] SetOutputVariables(string name, string? value) => [ $"GitVersion_{name}={value}" ]; @@ -44,6 +44,6 @@ public override void WriteIntegration(Action writer, GitVersionVariable base.WriteIntegration(writer, variables, updateBuildNumber); writer($"Outputting variables to '{this.file}' ... "); - this.FileSystem.File.WriteAllLines(this.file, GenerateBuildLogOutput(variables)); + this.FileSystem.File.WriteAllLines(this.file, SetOutputVariables(variables)); } } diff --git a/src/GitVersion.BuildAgents/Agents/MyGet.cs b/src/GitVersion.BuildAgents/Agents/MyGet.cs index ea82a27056..a8eb3fd32e 100644 --- a/src/GitVersion.BuildAgents/Agents/MyGet.cs +++ b/src/GitVersion.BuildAgents/Agents/MyGet.cs @@ -18,22 +18,18 @@ public override bool CanApplyToCurrentContext() && buildRunner.Equals("MyGet", StringComparison.InvariantCultureIgnoreCase); } - public override string[] GenerateSetParameterMessage(string name, string? value) + public override string[] SetOutputVariables(string name, string? value) { var messages = new List { $"##myget[setParameter name='GitVersion.{name}' value='{ServiceMessageEscapeHelper.EscapeValue(value)}']" }; - if (string.Equals(name, "SemVer", StringComparison.InvariantCultureIgnoreCase)) - { - messages.Add($"##myget[buildNumber '{ServiceMessageEscapeHelper.EscapeValue(value)}']"); - } - return [.. messages]; } - public override string? GenerateSetVersionMessage(GitVersionVariables variables) => null; + public override string? SetBuildNumber(GitVersionVariables variables) => + $"##myget[buildNumber '{ServiceMessageEscapeHelper.EscapeValue(variables.FullSemVer)}']"; public override bool PreventFetch() => false; } diff --git a/src/GitVersion.BuildAgents/Agents/SpaceAutomation.cs b/src/GitVersion.BuildAgents/Agents/SpaceAutomation.cs index 1518eea9a9..2814896e04 100644 --- a/src/GitVersion.BuildAgents/Agents/SpaceAutomation.cs +++ b/src/GitVersion.BuildAgents/Agents/SpaceAutomation.cs @@ -12,7 +12,7 @@ internal class SpaceAutomation(IEnvironment environment, ILog log, IFileSystem f public override string? GetCurrentBranch(bool usingDynamicRepos) => Environment.GetEnvironmentVariable("JB_SPACE_GIT_BRANCH"); - public override string[] GenerateSetParameterMessage(string name, string? value) => []; + public override string[] SetOutputVariables(string name, string? value) => []; - public override string GenerateSetVersionMessage(GitVersionVariables variables) => string.Empty; + public override string SetBuildNumber(GitVersionVariables variables) => string.Empty; } diff --git a/src/GitVersion.BuildAgents/Agents/TeamCity.cs b/src/GitVersion.BuildAgents/Agents/TeamCity.cs index 30bce327d3..6cb5aa92fb 100644 --- a/src/GitVersion.BuildAgents/Agents/TeamCity.cs +++ b/src/GitVersion.BuildAgents/Agents/TeamCity.cs @@ -36,11 +36,11 @@ private void WriteBranchEnvVariableWarning() => this.Log.Warning(@"TeamCity does public override bool PreventFetch() => !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("Git_Branch")); - public override string[] GenerateSetParameterMessage(string name, string? value) => + public override string[] SetOutputVariables(string name, string? value) => [ $"##teamcity[setParameter name='GitVersion.{name}' value='{ServiceMessageEscapeHelper.EscapeValue(value)}']", $"##teamcity[setParameter name='system.GitVersion.{name}' value='{ServiceMessageEscapeHelper.EscapeValue(value)}']" ]; - public override string GenerateSetVersionMessage(GitVersionVariables variables) => $"##teamcity[buildNumber '{ServiceMessageEscapeHelper.EscapeValue(variables.FullSemVer)}']"; + public override string SetBuildNumber(GitVersionVariables variables) => $"##teamcity[buildNumber '{ServiceMessageEscapeHelper.EscapeValue(variables.FullSemVer)}']"; } diff --git a/src/GitVersion.BuildAgents/Agents/TravisCI.cs b/src/GitVersion.BuildAgents/Agents/TravisCI.cs index ca4e0764a1..43eb4638c8 100644 --- a/src/GitVersion.BuildAgents/Agents/TravisCI.cs +++ b/src/GitVersion.BuildAgents/Agents/TravisCI.cs @@ -11,9 +11,9 @@ internal class TravisCi(IEnvironment environment, ILog log, IFileSystem fileSyst public override bool CanApplyToCurrentContext() => "true".Equals(Environment.GetEnvironmentVariable(EnvironmentVariable)) && "true".Equals(Environment.GetEnvironmentVariable("CI")); - public override string GenerateSetVersionMessage(GitVersionVariables variables) => variables.FullSemVer; + public override string SetBuildNumber(GitVersionVariables variables) => variables.FullSemVer; - public override string[] GenerateSetParameterMessage(string name, string? value) => + public override string[] SetOutputVariables(string name, string? value) => [ $"GitVersion_{name}={value}" ]; diff --git a/src/GitVersion.Core/Agents/BuildAgentBase.cs b/src/GitVersion.Core/Agents/BuildAgentBase.cs index c30dd82949..776e1f4efc 100644 --- a/src/GitVersion.Core/Agents/BuildAgentBase.cs +++ b/src/GitVersion.Core/Agents/BuildAgentBase.cs @@ -12,15 +12,15 @@ internal abstract class BuildAgentBase(IEnvironment environment, ILog log, IFile protected readonly IFileSystem FileSystem = fileSystem.NotNull(); protected abstract string EnvironmentVariable { get; } - public virtual bool IsDefault => false; - public abstract string? GenerateSetVersionMessage(GitVersionVariables variables); - public abstract string[] GenerateSetParameterMessage(string name, string? value); + public abstract string? SetBuildNumber(GitVersionVariables variables); + public abstract string[] SetOutputVariables(string name, string? value); public virtual bool CanApplyToCurrentContext() => !Environment.GetEnvironmentVariable(EnvironmentVariable).IsNullOrEmpty(); public virtual string? GetCurrentBranch(bool usingDynamicRepos) => null; + public virtual bool IsDefault => false; public virtual bool PreventFetch() => true; public virtual bool ShouldCleanUpRemotes() => false; @@ -28,23 +28,24 @@ public virtual void WriteIntegration(Action writer, GitVersionVariables { if (updateBuildNumber) { - writer($"Executing GenerateSetVersionMessage for '{GetType().Name}'."); - writer(GenerateSetVersionMessage(variables)); + writer($"Set Build Number for '{GetType().Name}'."); + writer(SetBuildNumber(variables)); } - writer($"Executing GenerateBuildLogOutput for '{GetType().Name}'."); - foreach (var buildParameter in GenerateBuildLogOutput(variables)) + + writer($"Set Output Variables for '{GetType().Name}'."); + foreach (var buildParameter in SetOutputVariables(variables)) { writer(buildParameter); } } - protected IEnumerable GenerateBuildLogOutput(GitVersionVariables variables) + protected IEnumerable SetOutputVariables(GitVersionVariables variables) { var output = new List(); foreach (var (key, value) in variables) { - output.AddRange(GenerateSetParameterMessage(key, value)); + output.AddRange(SetOutputVariables(key, value)); } return output; diff --git a/src/GitVersion.Core/Agents/LocalBuild.cs b/src/GitVersion.Core/Agents/LocalBuild.cs index bb14a6d815..be7a1e1c5f 100644 --- a/src/GitVersion.Core/Agents/LocalBuild.cs +++ b/src/GitVersion.Core/Agents/LocalBuild.cs @@ -10,6 +10,6 @@ internal class LocalBuild(IEnvironment environment, ILog log, IFileSystem fileSy protected override string EnvironmentVariable => string.Empty; public override bool CanApplyToCurrentContext() => true; - public override string? GenerateSetVersionMessage(GitVersionVariables variables) => null; - public override string[] GenerateSetParameterMessage(string name, string? value) => []; + public override string? SetBuildNumber(GitVersionVariables variables) => null; + public override string[] SetOutputVariables(string name, string? value) => []; } From 336bd63318f58db8053d469b4805c9320a243935 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 31 Mar 2025 23:21:07 +0200 Subject: [PATCH 406/544] Refactor semantic version handling with dedicated tuple type Replaced `KeyValuePair` with a more descriptive `CommitSemanticVersion` tuple across semantic versioning logic to simplify and standardize code. Adjusted related method implementations and ordering logic accordingly for improved readability and maintainability. Removed redundant code paths and streamlined syntax in mainline version strategy. --- .../Core/TaggedSemanticVersionService.cs | 34 ++++++++++--------- .../MainlineVersionStrategy.cs | 17 ++++------ 2 files changed, 24 insertions(+), 27 deletions(-) diff --git a/src/GitVersion.Core/Core/TaggedSemanticVersionService.cs b/src/GitVersion.Core/Core/TaggedSemanticVersionService.cs index 19efb54071..bb81377012 100644 --- a/src/GitVersion.Core/Core/TaggedSemanticVersionService.cs +++ b/src/GitVersion.Core/Core/TaggedSemanticVersionService.cs @@ -2,6 +2,8 @@ using GitVersion.Extensions; using GitVersion.Git; +using CommitSemanticVersion = (GitVersion.Git.ICommit Commit, GitVersion.SemanticVersionWithTag SemanticVersion); + namespace GitVersion.Core; internal sealed class TaggedSemanticVersionService( @@ -19,7 +21,7 @@ public ILookup GetTaggedSemanticVersions( DateTimeOffset? notOlderThan, TaggedSemanticVersions taggedSemanticVersion) { - IEnumerable>> GetElements() + IEnumerable> GetElements() { if (taggedSemanticVersion.HasFlag(TaggedSemanticVersions.OfBranch)) { @@ -67,8 +69,8 @@ IEnumerable>> GetEleme } return GetElements().SelectMany(elements => elements).Distinct() - .OrderByDescending(element => element.Key.When) - .ToLookup(element => element.Key, element => element.Value); + .OrderByDescending(element => element.Commit.When) + .ToLookup(element => element.Commit, element => element.SemanticVersion); } public ILookup GetTaggedSemanticVersionsOfBranch( @@ -87,11 +89,11 @@ public ILookup GetTaggedSemanticVersionsOfBranc label: label, notOlderThan: notOlderThan); - return result.Distinct().OrderByDescending(element => element.Key.When) - .ToLookup(element => element.Key, element => element.Value); + return result.Distinct().OrderByDescending(element => element.Commit.When) + .ToLookup(element => element.Commit, element => element.SemanticVersion); } - private IEnumerable> GetTaggedSemanticVersionsOfBranchInternal( + private IEnumerable GetTaggedSemanticVersionsOfBranchInternal( IBranch branch, string? tagPrefix, SemanticVersionFormat format, @@ -110,7 +112,7 @@ private IEnumerable> GetTaggedSema { if (semanticVersion.Value.IsMatchForBranchSpecificLabel(label)) { - yield return new(grouping.Key, semanticVersion); + yield return (grouping.Key, semanticVersion); } } } @@ -133,11 +135,11 @@ public ILookup GetTaggedSemanticVersionsOfMerge notOlderThan: notOlderThan); return result.Distinct() - .OrderByDescending(element => element.Key.When) - .ToLookup(element => element.Key, element => element.Value); + .OrderByDescending(element => element.Commit.When) + .ToLookup(element => element.Commit, element => element.SemanticVersion); } - private IEnumerable> GetTaggedSemanticVersionsOfMergeTargetInternal( + private IEnumerable GetTaggedSemanticVersionsOfMergeTargetInternal( IBranch branch, string? tagPrefix, SemanticVersionFormat format, @@ -178,11 +180,11 @@ public ILookup GetTaggedSemanticVersionsOfMainB excludeBranches: excludeBranches); return result.Distinct() - .OrderByDescending(element => element.Key.When) - .ToLookup(element => element.Key, element => element.Value); + .OrderByDescending(element => element.Commit.When) + .ToLookup(element => element.Commit, element => element.SemanticVersion); } - private IEnumerable> GetTaggedSemanticVersionsOfMainBranchesInternal( + private IEnumerable GetTaggedSemanticVersionsOfMainBranchesInternal( IGitVersionConfiguration configuration, DateTimeOffset? notOlderThan, string? label, @@ -218,11 +220,11 @@ public ILookup GetTaggedSemanticVersionsOfRelea excludeBranches: excludeBranches); return result.Distinct() - .OrderByDescending(element => element.Key.When) - .ToLookup(element => element.Key, element => element.Value); + .OrderByDescending(element => element.Commit.When) + .ToLookup(element => element.Commit, element => element.SemanticVersion); } - private IEnumerable> GetTaggedSemanticVersionsOfReleaseBranchesInternal( + private IEnumerable GetTaggedSemanticVersionsOfReleaseBranchesInternal( IGitVersionConfiguration configuration, DateTimeOffset? notOlderThan, string? label, diff --git a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs index 1e0dd74209..6a100f37be 100644 --- a/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/VersionSearchStrategies/MainlineVersionStrategy.cs @@ -211,10 +211,8 @@ private bool IterateOverCommitsRecursive( { return true; } - else - { - returnTrueWhenTheIncrementIsKnown = true; - } + + returnTrueWhenTheIncrementIsKnown = true; } } @@ -242,7 +240,7 @@ private bool IterateOverCommitsRecursive( if (configuration.IsMainBranch == true) throw new NotImplementedException(); mergedCommitsInReverseOrderLazy = new( - () => incrementStrategyFinder.GetMergedCommits(item, 0, Context.Configuration.Ignore).Reverse().ToList() + () => [.. incrementStrategyFinder.GetMergedCommits(item, 0, Context.Configuration.Ignore).Reverse()] ); childConfiguration = configuration; childBranchName = iteration.BranchName; @@ -260,9 +258,8 @@ private bool IterateOverCommitsRecursive( iteration: childIteration, targetBranch: targetBranch, targetLabel: targetLabel, - traversedCommits: traversedCommits, - taggedSemanticVersions: taggedSemanticVersions - ); + taggedSemanticVersions: taggedSemanticVersions, + traversedCommits: traversedCommits); commit.AddChildIteration(childIteration); if (done) return true; @@ -316,9 +313,7 @@ private bool IterateOverCommitsRecursive( // If a main branch existing we need to ensure that it will be present at the first position in the list. foreach (var item in result) { - result[item.Key] = item.Value - .OrderByDescending(element => (element.Configuration.IsMainBranch ?? Context.Configuration.IsMainBranch) == true) - .ToList(); + result[item.Key] = [.. item.Value.OrderByDescending(element => (element.Configuration.IsMainBranch ?? Context.Configuration.IsMainBranch) == true)]; } return result; } From a16753fd1ab5d26dd738005a687f373cd2bc0dab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 16:15:58 +0000 Subject: [PATCH 407/544] (deps): Bump Microsoft.CSharp and Scriban in /new-cli Bumps Microsoft.CSharp and [Scriban](https://github.com/scriban/scriban). These dependencies needed to be updated together. Updates `Microsoft.CSharp` from 4.7.0 to 4.5.0 Updates `Scriban` from 6.0.0 to 6.1.0 - [Release notes](https://github.com/scriban/scriban/releases) - [Changelog](https://github.com/scriban/scriban/blob/master/changelog.md) - [Commits](https://github.com/scriban/scriban/compare/6.0.0...6.1.0) --- updated-dependencies: - dependency-name: Microsoft.CSharp dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: Scriban dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index f652cba978..e2bba2fc2e 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -15,7 +15,7 @@ - + From 8ba10bdf7b1b7df8cc26a4cce8c2f5a0c69946ea Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 1 Apr 2025 17:05:30 +0200 Subject: [PATCH 408/544] +semver minor update PublicAPI.Shipped --- src/GitVersion.Core/PublicAPI.Shipped.txt | 4 +++- src/GitVersion.Core/PublicAPI.Unshipped.txt | 2 -- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/GitVersion.Core/PublicAPI.Shipped.txt b/src/GitVersion.Core/PublicAPI.Shipped.txt index 8feb99e5cc..a2138c8c06 100644 --- a/src/GitVersion.Core/PublicAPI.Shipped.txt +++ b/src/GitVersion.Core/PublicAPI.Shipped.txt @@ -157,6 +157,7 @@ GitVersion.Extensions.AssemblyVersionsGeneratorExtensions GitVersion.Extensions.CommonExtensions GitVersion.Extensions.DictionaryExtensions GitVersion.Extensions.EnumerableExtensions +GitVersion.Extensions.FileSystemExtensions GitVersion.Extensions.GitExtensions GitVersion.Extensions.IncrementStrategyExtensions GitVersion.Extensions.ReadEmbeddedResourceExtensions @@ -415,9 +416,9 @@ GitVersion.MergeMessage.TargetBranch.get -> string? GitVersion.MergeMessage.Version.get -> GitVersion.SemanticVersion? GitVersion.OutputType GitVersion.OutputType.BuildServer = 0 -> GitVersion.OutputType +GitVersion.OutputType.DotEnv = 3 -> GitVersion.OutputType GitVersion.OutputType.File = 2 -> GitVersion.OutputType GitVersion.OutputType.Json = 1 -> GitVersion.OutputType -GitVersion.OutputType.DotEnv = 3 -> GitVersion.OutputType GitVersion.OutputVariables.GitVersionVariables GitVersion.OutputVariables.GitVersionVariables.AssemblySemFileVer.get -> string? GitVersion.OutputVariables.GitVersionVariables.AssemblySemFileVer.init -> void @@ -738,6 +739,7 @@ static GitVersion.Extensions.DictionaryExtensions.GetOrAdd(this Sy static GitVersion.Extensions.EnumerableExtensions.AddRange(this System.Collections.Generic.ICollection! source, System.Collections.Generic.IEnumerable! items) -> void static GitVersion.Extensions.EnumerableExtensions.OnlyOrDefault(this System.Collections.Generic.IEnumerable! source) -> T? static GitVersion.Extensions.EnumerableExtensions.SingleOfType(this System.Collections.IEnumerable! source) -> T +static GitVersion.Extensions.FileSystemExtensions.GetLastDirectoryWrite(this System.IO.Abstractions.IFileSystem! fileSystem, string! path) -> long static GitVersion.Extensions.GitExtensions.CreateGitLogArgs(int? maxCommits) -> string! static GitVersion.Extensions.GitExtensions.DumpGraphLog(System.Action? writer = null, int? maxCommits = null) -> void static GitVersion.Extensions.IncrementStrategyExtensions.ToVersionField(this GitVersion.IncrementStrategy strategy) -> GitVersion.VersionField diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt index 57bf801923..7dc5c58110 100644 --- a/src/GitVersion.Core/PublicAPI.Unshipped.txt +++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt @@ -1,3 +1 @@ #nullable enable -GitVersion.Extensions.FileSystemExtensions -static GitVersion.Extensions.FileSystemExtensions.GetLastDirectoryWrite(this System.IO.Abstractions.IFileSystem! fileSystem, string! path) -> long From c2bc09f9ee048c6bdce6ec494fa48cb74420f608 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 1 Apr 2025 17:36:07 +0200 Subject: [PATCH 409/544] update schemas --- schemas/6.2/GitVersion.configuration.json | 426 ++++++++++++++++++++++ schemas/6.2/GitVersion.json | 184 ++++++++++ 2 files changed, 610 insertions(+) create mode 100644 schemas/6.2/GitVersion.configuration.json create mode 100644 schemas/6.2/GitVersion.json diff --git a/schemas/6.2/GitVersion.configuration.json b/schemas/6.2/GitVersion.configuration.json new file mode 100644 index 0000000000..66011f9140 --- /dev/null +++ b/schemas/6.2/GitVersion.configuration.json @@ -0,0 +1,426 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gitversion.net/schemas/6.2/GitVersion.configuration.json", + "title": "GitVersion Configuration (6.2)", + "description": "GitVersion configuration schema (6.2)", + "type": "object", + "properties": { + "assembly-file-versioning-format": { + "description": "Specifies the format of AssemblyFileVersion and overwrites the value of assembly-file-versioning-scheme.", + "type": [ + "string", + "null" + ] + }, + "assembly-file-versioning-scheme": { + "description": "The scheme to use when setting AssemblyFileVersion attribute. Can be 'MajorMinorPatchTag', 'MajorMinorPatch', 'MajorMinor', 'Major', 'None'. Defaults to 'MajorMinorPatch'.", + "default": "MajorMinorPatch", + "enum": [ + "MajorMinorPatchTag", + "MajorMinorPatch", + "MajorMinor", + "Major", + "None", + null + ] + }, + "assembly-informational-format": { + "description": "Specifies the format of AssemblyInformationalVersion. Defaults to '{InformationalVersion}'.", + "default": "'{InformationalVersion}'", + "type": [ + "string", + "null" + ] + }, + "assembly-versioning-format": { + "description": "Specifies the format of AssemblyVersion and overwrites the value of assembly-versioning-scheme.", + "type": [ + "string", + "null" + ] + }, + "assembly-versioning-scheme": { + "description": "The scheme to use when setting AssemblyVersion attribute. Can be 'MajorMinorPatchTag', 'MajorMinorPatch', 'MajorMinor', 'Major', 'None'. Defaults to 'MajorMinorPatch'.", + "default": "MajorMinorPatch", + "enum": [ + "MajorMinorPatchTag", + "MajorMinorPatch", + "MajorMinor", + "Major", + "None", + null + ] + }, + "branches": { + "description": "The header for all the individual branch configuration.", + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "commit-message-incrementing": { + "description": "Sets whether it should be possible to increment the version with special syntax in the commit message. Can be 'Disabled', 'Enabled' or 'MergeMessageOnly'.", + "enum": [ + "Enabled", + "Disabled", + "MergeMessageOnly", + null + ] + }, + "mode": { + "description": "The deployment mode for this branch. Can be 'ManualDeployment', 'ContinuousDelivery', 'ContinuousDeployment'.", + "enum": [ + "ManualDeployment", + "ContinuousDelivery", + "ContinuousDeployment", + null + ] + }, + "increment": { + "description": "The increment strategy for this branch. Can be 'Inherit', 'Patch', 'Minor', 'Major', 'None'.", + "$ref": "#/$defs/incrementStrategy" + }, + "is-main-branch": { + "description": "When using Mainline mode, this indicates that this branch is a mainline. By default main and support/* are mainlines.", + "type": [ + "boolean", + "null" + ] + }, + "is-release-branch": { + "description": "Indicates this branch configuration represents a release branch in GitFlow.", + "type": [ + "boolean", + "null" + ] + }, + "is-source-branch-for": { + "description": "The branches that this branch is a source branch.", + "$ref": "#/$defs/hashSetOfString" + }, + "label": { + "description": "The label to use for this branch. Use the value {BranchName} or similar as a placeholder to insert a named capture group from RegularExpression (fx. the branch name).", + "type": [ + "string", + "null" + ] + }, + "pre-release-weight": { + "description": "Provides a way to translate the PreReleaseLabel to a number.", + "type": [ + "integer", + "null" + ] + }, + "prevent-increment": { + "description": "The prevent increment configuration section.", + "$ref": "#/$defs/preventIncrementConfiguration" + }, + "regex": { + "format": "regex", + "description": "The regular expression pattern to use to match this branch.", + "type": [ + "string", + "null" + ] + }, + "source-branches": { + "description": "The source branches for this branch.", + "$ref": "#/$defs/hashSetOfString" + }, + "track-merge-message": { + "description": "This property is a branch related property and gives the user the possibility to control the behavior of whether the merge commit message will be interpreted as a next version or not.", + "type": [ + "boolean", + "null" + ] + }, + "track-merge-target": { + "description": "Strategy which will look for tagged merge commits directly off the current branch.", + "type": [ + "boolean", + "null" + ] + }, + "tracks-release-branches": { + "description": "Indicates this branch configuration represents develop in GitFlow.", + "type": [ + "boolean", + "null" + ] + } + } + } + }, + "commit-date-format": { + "description": "The format to use when calculating the commit date. Defaults to 'yyyy-MM-dd'. See [Standard Date and Time Format Strings](https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings) and [Custom Date and Time Format Strings](https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings).", + "default": "yyyy-MM-dd", + "type": [ + "string", + "null" + ] + }, + "commit-message-incrementing": { + "description": "Sets whether it should be possible to increment the version with special syntax in the commit message. Can be 'Disabled', 'Enabled' or 'MergeMessageOnly'.", + "enum": [ + "Enabled", + "Disabled", + "MergeMessageOnly", + null + ] + }, + "mode": { + "description": "The deployment mode for this branch. Can be 'ManualDeployment', 'ContinuousDelivery', 'ContinuousDeployment'.", + "enum": [ + "ManualDeployment", + "ContinuousDelivery", + "ContinuousDeployment", + null + ] + }, + "ignore": { + "description": "The header property for the ignore configuration.", + "type": "object", + "properties": { + "commits-before": { + "format": "date-time", + "description": "Commits before this date will be ignored. Format: yyyy-MM-ddTHH:mm:ss.", + "type": [ + "string", + "null" + ] + }, + "sha": { + "description": "A sequence of SHAs to be excluded from the version calculations.", + "$ref": "#/$defs/hashSetOfString" + } + } + }, + "increment": { + "description": "The increment strategy for this branch. Can be 'Inherit', 'Patch', 'Minor', 'Major', 'None'.", + "$ref": "#/$defs/incrementStrategy" + }, + "is-main-branch": { + "description": "When using Mainline mode, this indicates that this branch is a mainline. By default main and support/* are mainlines.", + "type": [ + "boolean", + "null" + ] + }, + "is-release-branch": { + "description": "Indicates this branch configuration represents a release branch in GitFlow.", + "type": [ + "boolean", + "null" + ] + }, + "is-source-branch-for": { + "description": "The branches that this branch is a source branch.", + "$ref": "#/$defs/hashSetOfString" + }, + "label": { + "description": "The label to use for this branch. Use the value {BranchName} or similar as a placeholder to insert a named capture group from RegularExpression (fx. the branch name).", + "type": [ + "string", + "null" + ] + }, + "major-version-bump-message": { + "format": "regex", + "description": "The regular expression to match commit messages with to perform a major version increment. Defaults to '\\+semver:\\s?(breaking|major)'", + "default": "\\+semver:\\s?(breaking|major)", + "type": [ + "string", + "null" + ] + }, + "merge-message-formats": { + "description": "Custom merge message formats to enable identification of merge messages that do not follow the built-in conventions.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "minor-version-bump-message": { + "format": "regex", + "description": "The regular expression to match commit messages with to perform a minor version increment. Defaults to '\\+semver:\\s?(feature|minor)'", + "default": "\\+semver:\\s?(feature|minor)", + "type": [ + "string", + "null" + ] + }, + "next-version": { + "description": "Allows you to bump the next version explicitly. Useful for bumping main or a feature branch with breaking changes", + "type": [ + "string", + "null" + ] + }, + "no-bump-message": { + "format": "regex", + "description": "Used to tell GitVersion not to increment when in Mainline development mode. Defaults to '\\+semver:\\s?(none|skip)'", + "default": "\\+semver:\\s?(none|skip)", + "type": [ + "string", + "null" + ] + }, + "patch-version-bump-message": { + "format": "regex", + "description": "The regular expression to match commit messages with to perform a patch version increment. Defaults to '\\+semver:\\s?(fix|patch)'", + "default": "\\+semver:\\s?(fix|patch)", + "type": [ + "string", + "null" + ] + }, + "pre-release-weight": { + "description": "Provides a way to translate the PreReleaseLabel to a number.", + "type": [ + "integer", + "null" + ] + }, + "prevent-increment": { + "description": "The prevent increment configuration section.", + "$ref": "#/$defs/preventIncrementConfiguration" + }, + "regex": { + "format": "regex", + "description": "The regular expression pattern to use to match this branch.", + "type": [ + "string", + "null" + ] + }, + "semantic-version-format": { + "description": "Specifies the semantic version format that is used when parsing the string. Can be 'Strict' or 'Loose'. Defaults to 'Strict'.", + "default": "Strict", + "enum": [ + "Strict", + "Loose" + ] + }, + "source-branches": { + "description": "The source branches for this branch.", + "$ref": "#/$defs/hashSetOfString" + }, + "tag-prefix": { + "format": "regex", + "description": "A regular expression which is used to trim Git tags before processing. Defaults to '[vV]?'", + "default": "[vV]?", + "type": [ + "string", + "null" + ] + }, + "tag-pre-release-weight": { + "description": "The pre-release weight in case of tagged commits. Defaults to 60000.", + "type": [ + "integer", + "null" + ] + }, + "track-merge-message": { + "description": "This property is a branch related property and gives the user the possibility to control the behavior of whether the merge commit message will be interpreted as a next version or not.", + "type": [ + "boolean", + "null" + ] + }, + "track-merge-target": { + "description": "Strategy which will look for tagged merge commits directly off the current branch.", + "type": [ + "boolean", + "null" + ] + }, + "tracks-release-branches": { + "description": "Indicates this branch configuration represents develop in GitFlow.", + "type": [ + "boolean", + "null" + ] + }, + "update-build-number": { + "description": "Whether to update the build number in the project file. Defaults to true.", + "default": "true", + "type": "boolean" + }, + "version-in-branch-pattern": { + "format": "regex", + "description": "A regular expression which is used to determine the version number in the branch name or commit message (e.g., v1.0.0-LTS). Defaults to '(?[vV]?\\d+(\\.\\d+)?(\\.\\d+)?).*'.", + "default": "(?[vV]?\\d+(\\.\\d+)?(\\.\\d+)?).*", + "type": [ + "string", + "null" + ] + }, + "strategies": { + "description": "Specifies which version strategies (one or more) will be used to determine the next version. Following values are available: 'ConfiguredNextVersion', 'MergeMessage', 'TaggedCommit', 'TrackReleaseBranches', 'VersionInBranchName' and 'Mainline'.", + "type": "array", + "items": { + "enum": [ + "None", + "Fallback", + "ConfiguredNextVersion", + "MergeMessage", + "TaggedCommit", + "TrackReleaseBranches", + "VersionInBranchName", + "Mainline" + ] + } + }, + "workflow": { + "description": "The base template of the configuration to use. Possible values are: 'GitFlow/v1' or 'GitHubFlow/v1'", + "type": [ + "string", + "null" + ] + } + }, + "$defs": { + "incrementStrategy": { + "enum": [ + "None", + "Major", + "Minor", + "Patch", + "Inherit" + ] + }, + "hashSetOfString": { + "type": "array", + "items": { + "type": "string" + } + }, + "preventIncrementConfiguration": { + "type": "object", + "properties": { + "of-merged-branch": { + "description": "Prevent increment when branch merged.", + "type": [ + "boolean", + "null" + ] + }, + "when-branch-merged": { + "description": "Prevent increment when branch merged.", + "type": [ + "boolean", + "null" + ] + }, + "when-current-commit-tagged": { + "description": "This branch related property controls the behavior whether to use the tagged (value set to true) or the incremented (value set to false) semantic version. Defaults to true.", + "type": [ + "boolean", + "null" + ] + } + } + } + } +} \ No newline at end of file diff --git a/schemas/6.2/GitVersion.json b/schemas/6.2/GitVersion.json new file mode 100644 index 0000000000..1a1fb8c5ce --- /dev/null +++ b/schemas/6.2/GitVersion.json @@ -0,0 +1,184 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gitversion.net/schemas/6.2/GitVersion.json", + "title": "GitVersion version variables output", + "description": "GitVersion output schema", + "type": "object", + "properties": { + "AssemblySemFileVer": { + "description": "Suitable for .NET AssemblyFileVersion. Defaults to Major.Minor.Patch.0.", + "type": [ + "string", + "null" + ] + }, + "AssemblySemVer": { + "description": "Suitable for .NET AssemblyVersion. Defaults to Major.Minor.0.0", + "type": [ + "string", + "null" + ] + }, + "BranchName": { + "description": "The name of the checked out Git branch.", + "type": [ + "string", + "null" + ] + }, + "BuildMetaData": { + "description": "The build metadata, usually representing number of commits since the VersionSourceSha.", + "type": [ + "integer", + "null" + ] + }, + "CommitDate": { + "description": "The ISO-8601 formatted date of the commit identified by Sha.", + "type": [ + "string", + "null" + ] + }, + "CommitsSinceVersionSource": { + "description": "The number of commits since the version source.", + "type": [ + "integer", + "null" + ] + }, + "EscapedBranchName": { + "description": "Equal to BranchName, but with / replaced with -.", + "type": [ + "string", + "null" + ] + }, + "FullBuildMetaData": { + "description": "The BuildMetaData suffixed with BranchName and Sha.", + "type": [ + "string", + "null" + ] + }, + "FullSemVer": { + "description": "The full, SemVer 2.0 compliant version number.", + "type": [ + "string", + "null" + ] + }, + "InformationalVersion": { + "description": "Suitable for .NET AssemblyInformationalVersion. Defaults to FullSemVer suffixed by FullBuildMetaData.", + "type": [ + "string", + "null" + ] + }, + "Major": { + "description": "The major version. Should be incremented on breaking changes.", + "type": [ + "integer", + "null" + ] + }, + "MajorMinorPatch": { + "description": "Major, Minor and Patch joined together, separated by '.'.", + "type": [ + "string", + "null" + ] + }, + "Minor": { + "description": "The minor version. Should be incremented on new features.", + "type": [ + "integer", + "null" + ] + }, + "Patch": { + "description": "The patch version. Should be incremented on bug fixes.", + "type": [ + "integer", + "null" + ] + }, + "PreReleaseLabel": { + "description": "The pre-release label is the name of the pre-release.", + "type": [ + "string", + "null" + ] + }, + "PreReleaseLabelWithDash": { + "description": "The pre-release label prefixed with a dash.", + "type": [ + "string", + "null" + ] + }, + "PreReleaseNumber": { + "description": "The pre-release number is the number of commits since the last version bump.", + "type": [ + "integer", + "null" + ] + }, + "PreReleaseTag": { + "description": "The pre-release tag is the pre-release label suffixed by the PreReleaseNumber.", + "type": [ + "string", + "null" + ] + }, + "PreReleaseTagWithDash": { + "description": "The pre-release tag prefixed with a dash.", + "type": [ + "string", + "null" + ] + }, + "SemVer": { + "description": "The semantic version number, including PreReleaseTagWithDash for pre-release version numbers.", + "type": [ + "string", + "null" + ] + }, + "Sha": { + "description": "The SHA of the Git commit.", + "type": [ + "string", + "null" + ] + }, + "ShortSha": { + "description": "The Sha limited to 7 characters.", + "type": [ + "string", + "null" + ] + }, + "UncommittedChanges": { + "description": "The number of uncommitted changes present in the repository.", + "type": [ + "integer", + "null" + ] + }, + "VersionSourceSha": { + "description": "The SHA of the commit used as version source.", + "type": [ + "string", + "null" + ] + }, + "WeightedPreReleaseNumber": { + "description": "A summation of branch specific pre-release-weight and the PreReleaseNumber. Can be used to obtain a monotonically increasing version number across the branches.", + "type": [ + "integer", + "null" + ] + } + } +} \ No newline at end of file From d587fcefdd478ee699836fcd3a8817d340f1d2ed Mon Sep 17 00:00:00 2001 From: Christopher Mann Date: Fri, 31 Jan 2025 15:38:03 +0100 Subject: [PATCH 410/544] Fix tag normalization for Azure Pipelines --- .../Agents/AzurePipelinesTests.cs | 39 +++++++++++++++++++ .../Agents/AzurePipelines.cs | 20 +++++++++- 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/src/GitVersion.BuildAgents.Tests/Agents/AzurePipelinesTests.cs b/src/GitVersion.BuildAgents.Tests/Agents/AzurePipelinesTests.cs index e647086ad3..79c27fb26c 100644 --- a/src/GitVersion.BuildAgents.Tests/Agents/AzurePipelinesTests.cs +++ b/src/GitVersion.BuildAgents.Tests/Agents/AzurePipelinesTests.cs @@ -77,4 +77,43 @@ public void AzurePipelinesBuildNumberWithSemVer(string buildNumberFormat, string var logMessage = this.buildServer.SetBuildNumber(vars); logMessage.ShouldBe(logPrefix + expectedBuildNumber); } + + [Test] + public void GetCurrentBranchShouldHandleBranches() + { + // Arrange + this.environment.SetEnvironmentVariable("BUILD_SOURCEBRANCH", $"refs/heads/{MainBranch}"); + + // Act + var result = this.buildServer.GetCurrentBranch(false); + + // Assert + result.ShouldBe($"refs/heads/{MainBranch}"); + } + + [Test] + public void GetCurrentBranchShouldHandleTags() + { + // Arrange + this.environment.SetEnvironmentVariable("BUILD_SOURCEBRANCH", "refs/tags/1.0.0"); + + // Act + var result = this.buildServer.GetCurrentBranch(false); + + // Assert + result.ShouldBeNull(); + } + + [Test] + public void GetCurrentBranchShouldHandlePullRequests() + { + // Arrange + this.environment.SetEnvironmentVariable("BUILD_SOURCEBRANCH", "refs/pull/1/merge"); + + // Act + var result = this.buildServer.GetCurrentBranch(false); + + // Assert + result.ShouldBe("refs/pull/1/merge"); + } } diff --git a/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs b/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs index c8fef2b6e6..ef5763ede1 100644 --- a/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs +++ b/src/GitVersion.BuildAgents/Agents/AzurePipelines.cs @@ -17,8 +17,24 @@ public override string[] SetOutputVariables(string name, string? value) => $"##vso[task.setvariable variable=GitVersion.{name};isOutput=true]{value}" ]; - public override string? GetCurrentBranch(bool usingDynamicRepos) => Environment.GetEnvironmentVariable("GIT_BRANCH") - ?? Environment.GetEnvironmentVariable("BUILD_SOURCEBRANCH"); + public override string? GetCurrentBranch(bool usingDynamicRepos) + { + var gitBranch = Environment.GetEnvironmentVariable("GIT_BRANCH"); + if (gitBranch is not null) + return gitBranch; + + var sourceBranch = Environment.GetEnvironmentVariable("BUILD_SOURCEBRANCH"); + + // https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml + // BUILD_SOURCEBRANCH must be used only for "real" branches, not for tags. + // Azure Pipelines sets BUILD_SOURCEBRANCH to refs/tags/ when the pipeline is triggered for a tag. + if (sourceBranch?.StartsWith("refs/tags", StringComparison.OrdinalIgnoreCase) == true) + { + return null; + } + + return sourceBranch; + } public override bool PreventFetch() => true; From cbcbbbdaed0667c38d4c6bf5b52f24af6e5f46e2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Apr 2025 15:57:08 +0000 Subject: [PATCH 411/544] (deps): Bump NUnit.Analyzers Bumps the analyzers group with 1 update in the /src directory: [NUnit.Analyzers](https://github.com/nunit/nunit.analyzers). Updates `NUnit.Analyzers` from 4.6.0 to 4.7.0 - [Release notes](https://github.com/nunit/nunit.analyzers/releases) - [Changelog](https://github.com/nunit/nunit.analyzers/blob/master/CHANGES.md) - [Commits](https://github.com/nunit/nunit.analyzers/compare/4.6.0...4.7.0) --- updated-dependencies: - dependency-name: NUnit.Analyzers dependency-type: direct:production update-type: version-update:semver-minor dependency-group: analyzers ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 929249a14b..79d109825a 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -33,7 +33,7 @@ - + From 4f1f51f2faef3e2a38ab19b8ba977034432a8fcd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 16:17:56 +0000 Subject: [PATCH 412/544] (deps): Bump gitreleasemanager.tool from 0.19.0 to 0.20.0 in /build Bumps [gitreleasemanager.tool](https://github.com/GitTools/GitReleaseManager) from 0.19.0 to 0.20.0. - [Release notes](https://github.com/GitTools/GitReleaseManager/releases) - [Changelog](https://github.com/GitTools/GitReleaseManager/blob/develop/GitReleaseManager.yaml) - [Commits](https://github.com/GitTools/GitReleaseManager/compare/0.19.0...0.20.0) --- updated-dependencies: - dependency-name: gitreleasemanager.tool dependency-version: 0.20.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .config/dotnet-tools.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index d9737dcf19..3ad6694334 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "gitreleasemanager.tool": { - "version": "0.19.0", + "version": "0.20.0", "commands": [ "dotnet-gitreleasemanager" ] From 9f44a44529d0518b042ce9216f1fc0ff9783d7bc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Apr 2025 15:34:56 +0000 Subject: [PATCH 413/544] (deps): Bump the microsoft group across 2 directories with 1 update Bumps the microsoft group with 1 update in the /new-cli directory: [System.IO.Abstractions](https://github.com/TestableIO/System.IO.Abstractions). Bumps the microsoft group with 1 update in the /src directory: [System.IO.Abstractions](https://github.com/TestableIO/System.IO.Abstractions). Updates `System.IO.Abstractions` from 22.0.12 to 22.0.13 - [Release notes](https://github.com/TestableIO/System.IO.Abstractions/releases) - [Commits](https://github.com/TestableIO/System.IO.Abstractions/compare/v22.0.12...v22.0.13) Updates `System.IO.Abstractions` from 22.0.12 to 22.0.13 - [Release notes](https://github.com/TestableIO/System.IO.Abstractions/releases) - [Commits](https://github.com/TestableIO/System.IO.Abstractions/compare/v22.0.12...v22.0.13) --- updated-dependencies: - dependency-name: System.IO.Abstractions dependency-version: 22.0.13 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: System.IO.Abstractions dependency-version: 22.0.13 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- src/Directory.Packages.props | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index e2bba2fc2e..04a79f1e43 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -21,7 +21,7 @@ - + \ No newline at end of file diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 79d109825a..93909ca702 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -38,7 +38,7 @@ - + From cb0743f986ccea9f8a55da6d7c202cac712db3b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Furkan=20K=C3=BC=C3=A7=C3=BCk?= Date: Wed, 2 Apr 2025 20:22:24 +0300 Subject: [PATCH 414/544] Make sure custom configuration file path is returned when custom configuration is set Introduce a new test method `ReturnConfigurationFilePathIfCustomConfigurationIsSet` in `ConfigurationFileLocatorTests.cs` to verify custom config file handling. Update `GitVersion.Configuration.Tests.csproj` to copy `Configuration/CustomConfig.yaml` to the output directory. Enhance `GetConfigurationFile` method in `ConfigurationFileLocator.cs` to return the custom config file path if set and exists. Add `CustomConfig.yaml` with various versioning settings. --- .../ConfigurationFileLocatorTests.cs | 34 ++++++++++--- .../ConfigurationFileLocator.cs | 50 ++++++++++++------- .../IConfigurationFileLocator.cs | 2 +- src/GitVersion.Core/PublicAPI.Shipped.txt | 2 +- 4 files changed, 62 insertions(+), 26 deletions(-) diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs index 1074bc07d7..89393ec5cb 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationFileLocatorTests.cs @@ -154,19 +154,39 @@ public void DoNotThrowWhenWorkingAndRepoPathsAreSame_WithDifferentCasing() } [Test] - public void DoNotThrowWhenFileNameAreSame_WithDifferentCasing() + public void ReturnConfigurationFilePathIfCustomConfigurationIsSet() { this.workingPath = this.repoPath; + string configurationFilePath = Path.Combine(this.workingPath, "Configuration", "CustomConfig.yaml"); - this.gitVersionOptions = new() { ConfigurationInfo = { ConfigurationFile = "MyConfig.yaml" } }; + this.gitVersionOptions = new() { ConfigurationInfo = { ConfigurationFile = configurationFilePath } }; + + var serviceProvider = GetServiceProvider(this.gitVersionOptions); + this.fileSystem = serviceProvider.GetRequiredService(); + + using var _ = this.fileSystem.SetupConfigFile( + path: Path.Combine(this.workingPath, "Configuration"), fileName: "CustomConfig.yaml" + ); + this.configFileLocator = serviceProvider.GetRequiredService(); + + var config = this.configFileLocator.GetConfigurationFile(this.workingPath); + config.ShouldBe(configurationFilePath); + } + + [TestCase(null)] + [TestCase("")] + [TestCase(" ")] + [TestCase("Configuration/CustomConfig2.yaml")] + public void ReturnConfigurationFilePathIfCustomConfigurationIsSet_InvalidConfigurationFilePaths(string? configFile) + { + this.workingPath = this.repoPath; + + this.gitVersionOptions = new() { ConfigurationInfo = { ConfigurationFile = configFile } }; var sp = GetServiceProvider(this.gitVersionOptions); this.configFileLocator = sp.GetRequiredService(); - this.fileSystem = sp.GetRequiredService(); - - using var _ = this.fileSystem.SetupConfigFile(path: this.workingPath, fileName: ConfigFile.ToLower()); - var config = Should.NotThrow(() => this.configFileLocator.GetConfigurationFile(this.workingPath)); - config.ShouldNotBe(null); + var config = this.configFileLocator.GetConfigurationFile(this.workingPath); + config.ShouldBe(null); } [Test] diff --git a/src/GitVersion.Configuration/ConfigurationFileLocator.cs b/src/GitVersion.Configuration/ConfigurationFileLocator.cs index c2a3ecbafa..1cdddbb560 100644 --- a/src/GitVersion.Configuration/ConfigurationFileLocator.cs +++ b/src/GitVersion.Configuration/ConfigurationFileLocator.cs @@ -38,32 +38,48 @@ public void Verify(string? workingDirectory, string? projectRootDirectory) WarnAboutAmbiguousConfigFileSelection(workingDirectory, projectRootDirectory); } - public string? GetConfigurationFile(string? directory) + public string? GetConfigurationFile(string? directoryPath) { - if (directory is null) return null; + string? customConfigurationFile = GetCustomConfigurationFilePathIfEligable(directoryPath); + if (!string.IsNullOrWhiteSpace(customConfigurationFile)) + { + return customConfigurationFile; + } - string[] candidates = !string.IsNullOrWhiteSpace(this.ConfigurationFile) - ? [this.ConfigurationFile, .. this.SupportedConfigFileNames] - : this.SupportedConfigFileNames; + if (string.IsNullOrWhiteSpace(directoryPath) || !fileSystem.Directory.Exists(directoryPath)) + { + return null; + } - foreach (var fileName in candidates) + string[] files = fileSystem.Directory.GetFiles(directoryPath); + foreach (var fileName in this.SupportedConfigFileNames) { - this.log.Debug($"Trying to find configuration file {fileName} at '{directory}'"); - if (directory != null && fileSystem.Directory.Exists(directory)) + this.log.Debug($"Trying to find configuration file {fileName} at '{directoryPath}'"); + string? matchingFile = files.FirstOrDefault(file => string.Equals(PathHelper.GetFileName(file), fileName, StringComparison.OrdinalIgnoreCase)); + if (matchingFile != null) { - var files = fileSystem.Directory.GetFiles(directory); + this.log.Info($"Found configuration file at '{matchingFile}'"); + return matchingFile; + } + } - var matchingFile = files.FirstOrDefault(file => - string.Equals(fileSystem.Path.GetFileName(file), fileName, StringComparison.OrdinalIgnoreCase)); + return null; + } - if (matchingFile != null) - { - this.log.Info($"Found configuration file at '{matchingFile}'"); - return matchingFile; - } + private string? GetCustomConfigurationFilePathIfEligable(string? directoryPath) + { + if (!string.IsNullOrWhiteSpace(this.ConfigurationFile)) + { + string configurationFilePath = this.ConfigurationFile; + if (!string.IsNullOrWhiteSpace(directoryPath)) + { + configurationFilePath = Path.Combine(directoryPath, this.ConfigurationFile); } - this.log.Debug($"Configuration file {fileName} not found at '{directory}'"); + if (fileSystem.File.Exists(configurationFilePath)) + { + return configurationFilePath; + } } return null; diff --git a/src/GitVersion.Core/Configuration/IConfigurationFileLocator.cs b/src/GitVersion.Core/Configuration/IConfigurationFileLocator.cs index 2ab64908cd..24ff54d935 100644 --- a/src/GitVersion.Core/Configuration/IConfigurationFileLocator.cs +++ b/src/GitVersion.Core/Configuration/IConfigurationFileLocator.cs @@ -3,5 +3,5 @@ namespace GitVersion.Configuration; public interface IConfigurationFileLocator { void Verify(string? workingDirectory, string? projectRootDirectory); - string? GetConfigurationFile(string? directory); + string? GetConfigurationFile(string? directoryPath); } diff --git a/src/GitVersion.Core/PublicAPI.Shipped.txt b/src/GitVersion.Core/PublicAPI.Shipped.txt index a2138c8c06..6b0a485718 100644 --- a/src/GitVersion.Core/PublicAPI.Shipped.txt +++ b/src/GitVersion.Core/PublicAPI.Shipped.txt @@ -113,7 +113,7 @@ GitVersion.Configuration.IConfigurationBuilder GitVersion.Configuration.IConfigurationBuilder.AddOverride(System.Collections.Generic.IReadOnlyDictionary! value) -> void GitVersion.Configuration.IConfigurationBuilder.Build() -> GitVersion.Configuration.IGitVersionConfiguration! GitVersion.Configuration.IConfigurationFileLocator -GitVersion.Configuration.IConfigurationFileLocator.GetConfigurationFile(string? directory) -> string? +GitVersion.Configuration.IConfigurationFileLocator.GetConfigurationFile(string? directoryPath) -> string? GitVersion.Configuration.IConfigurationFileLocator.Verify(string? workingDirectory, string? projectRootDirectory) -> void GitVersion.Configuration.IConfigurationProvider GitVersion.Configuration.IConfigurationProvider.Provide(System.Collections.Generic.IReadOnlyDictionary? overrideConfiguration = null) -> GitVersion.Configuration.IGitVersionConfiguration! From e40125e4f7dc632e1f5ed212b34d6c2255c33dce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Apr 2025 16:50:09 +0000 Subject: [PATCH 415/544] (deps): Bump Microsoft.CSharp and Scriban in /new-cli Bumps Microsoft.CSharp and [Scriban](https://github.com/scriban/scriban). These dependencies needed to be updated together. Updates `Microsoft.CSharp` from 4.7.0 to 4.5.0 Updates `Scriban` from 6.1.0 to 6.2.0 - [Release notes](https://github.com/scriban/scriban/releases) - [Changelog](https://github.com/scriban/scriban/blob/master/changelog.md) - [Commits](https://github.com/scriban/scriban/compare/6.1.0...6.2.0) --- updated-dependencies: - dependency-name: Microsoft.CSharp dependency-version: 4.5.0 dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: Scriban dependency-version: 6.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 04a79f1e43..410604b47e 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -15,7 +15,7 @@ - + From 34967b3b45d1bd5b4cc7ad4a6e4d07f9850c3024 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 15:40:59 +0000 Subject: [PATCH 416/544] (deps): Bump dotnet-sdk from 9.0.202 to 9.0.203 Bumps [dotnet-sdk](https://github.com/dotnet/sdk) from 9.0.202 to 9.0.203. - [Release notes](https://github.com/dotnet/sdk/releases) - [Commits](https://github.com/dotnet/sdk/compare/v9.0.202...v9.0.203) --- updated-dependencies: - dependency-name: dotnet-sdk dependency-version: 9.0.203 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index 983865216b..dfbf12676d 100644 --- a/global.json +++ b/global.json @@ -5,6 +5,6 @@ "src" ], "sdk": { - "version": "9.0.202" + "version": "9.0.203" } } From c7be882921c4cde14f8316f5499199cc98342323 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 16:52:55 +0000 Subject: [PATCH 417/544] (deps): Bump the microsoft group across 2 directories with 10 updates Bumps the microsoft group with 3 updates in the /new-cli directory: [System.Text.Json](https://github.com/dotnet/runtime), [Microsoft.Extensions.DependencyInjection.Abstractions](https://github.com/dotnet/runtime) and [System.CommandLine](https://github.com/dotnet/command-line-api). Bumps the microsoft group with 8 updates in the /src directory: | Package | From | To | | --- | --- | --- | | [Microsoft.Extensions.DependencyInjection.Abstractions](https://github.com/dotnet/runtime) | `9.0.3` | `9.0.4` | | [Microsoft.Extensions.Configuration.CommandLine](https://github.com/dotnet/runtime) | `9.0.3` | `9.0.4` | | [Microsoft.Extensions.DependencyInjection](https://github.com/dotnet/runtime) | `9.0.3` | `9.0.4` | | [Microsoft.Extensions.FileSystemGlobbing](https://github.com/dotnet/runtime) | `9.0.3` | `9.0.4` | | [Microsoft.Extensions.FileSystemGlobbing](https://github.com/dotnet/runtime) | `9.0.3` | `9.0.4` | | [Microsoft.Extensions.Hosting](https://github.com/dotnet/runtime) | `9.0.3` | `9.0.4` | | [Microsoft.Bcl.AsyncInterfaces](https://github.com/dotnet/runtime) | `9.0.3` | `9.0.4` | | [System.Drawing.Common](https://github.com/dotnet/winforms) | `9.0.3` | `9.0.4` | | [System.Security.Cryptography.Xml](https://github.com/dotnet/runtime) | `9.0.3` | `9.0.4` | Updates `System.Text.Json` from 9.0.3 to 9.0.4 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.3...v9.0.4) Updates `Microsoft.Extensions.DependencyInjection.Abstractions` from 9.0.3 to 9.0.4 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.3...v9.0.4) Updates `System.CommandLine` from 2.0.0-beta5.25174.1 to 2.0.0-beta5.25208.1 - [Release notes](https://github.com/dotnet/command-line-api/releases) - [Changelog](https://github.com/dotnet/command-line-api/blob/main/docs/History.md) - [Commits](https://github.com/dotnet/command-line-api/commits) Updates `Microsoft.Extensions.DependencyInjection.Abstractions` from 9.0.3 to 9.0.4 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.3...v9.0.4) Updates `Microsoft.Extensions.Configuration.CommandLine` from 9.0.3 to 9.0.4 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.3...v9.0.4) Updates `Microsoft.Extensions.DependencyInjection` from 9.0.3 to 9.0.4 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.3...v9.0.4) Updates `Microsoft.Extensions.FileSystemGlobbing` from 9.0.3 to 9.0.4 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.3...v9.0.4) Updates `Microsoft.Extensions.FileSystemGlobbing` from 9.0.3 to 9.0.4 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.3...v9.0.4) Updates `Microsoft.Extensions.Hosting` from 9.0.3 to 9.0.4 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.3...v9.0.4) Updates `Microsoft.Bcl.AsyncInterfaces` from 9.0.3 to 9.0.4 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.3...v9.0.4) Updates `System.Drawing.Common` from 9.0.3 to 9.0.4 - [Release notes](https://github.com/dotnet/winforms/releases) - [Changelog](https://github.com/dotnet/winforms/blob/main/docs/release-activity.md) - [Commits](https://github.com/dotnet/winforms/compare/v9.0.3...v9.0.4) Updates `System.Security.Cryptography.Xml` from 9.0.3 to 9.0.4 - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v9.0.3...v9.0.4) --- updated-dependencies: - dependency-name: System.Text.Json dependency-version: 9.0.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.DependencyInjection.Abstractions dependency-version: 9.0.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: System.CommandLine dependency-version: 2.0.0-beta5.25208.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.DependencyInjection.Abstractions dependency-version: 9.0.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.Configuration.CommandLine dependency-version: 9.0.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.DependencyInjection dependency-version: 9.0.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.FileSystemGlobbing dependency-version: 9.0.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.FileSystemGlobbing dependency-version: 9.0.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Extensions.Hosting dependency-version: 9.0.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: Microsoft.Bcl.AsyncInterfaces dependency-version: 9.0.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: System.Drawing.Common dependency-version: 9.0.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft - dependency-name: System.Security.Cryptography.Xml dependency-version: 9.0.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: microsoft ... Signed-off-by: dependabot[bot] --- new-cli/Directory.Packages.props | 6 +++--- src/Directory.Packages.props | 20 ++++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/new-cli/Directory.Packages.props b/new-cli/Directory.Packages.props index 410604b47e..872e70e7c0 100644 --- a/new-cli/Directory.Packages.props +++ b/new-cli/Directory.Packages.props @@ -10,7 +10,7 @@ - + @@ -20,8 +20,8 @@ - + - + \ No newline at end of file diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 93909ca702..15fa851a8d 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -11,8 +11,8 @@ - - + + @@ -22,13 +22,13 @@ - + - - - - + + + + @@ -37,11 +37,11 @@ - + - - + + From eaebe640d45a6fa07c05c673bdb8a7c23143b100 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 10 Apr 2025 14:41:15 +0200 Subject: [PATCH 418/544] removes redundant charset definition removes the charset definition from the .editorconfig file, as it's no longer needed and can be inferred. --- .editorconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/.editorconfig b/.editorconfig index 317101a73a..d1769eb231 100644 --- a/.editorconfig +++ b/.editorconfig @@ -2,7 +2,6 @@ # top-most EditorConfig file root = true -charset = utf-8 [*] indent_style = space From 49f7ff8b94bb9b9ef4828614ae31a6d3ce4085e1 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 10 Apr 2025 15:11:20 +0200 Subject: [PATCH 419/544] Removes build server output type when running in diag mode. --- build/.run/Generate Schemas.run.xml | 1 + build/common/Addins/GitVersion/GitVersionOutput.cs | 4 +++- src/GitVersion.App/GitVersionExecutor.cs | 1 - 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/build/.run/Generate Schemas.run.xml b/build/.run/Generate Schemas.run.xml index e4dcf435a9..e009ddc54a 100644 --- a/build/.run/Generate Schemas.run.xml +++ b/build/.run/Generate Schemas.run.xml @@ -18,6 +18,7 @@