Summary
Split from #5135: remove the legacy argument parser and flat v6 configuration runtime in v7.1, after the v7.0 defaults and temporary fallbacks ship. The completed configuration foundation is #5131 (#5158, #5159, #5160).
Scope
Boundaries and dependencies
#5135 owns v7.0 defaults and temporary fallbacks. #5040 separately removes LibGit2Sharp/native binaries in v7.1. #5136 removes all three selectors in v8 and depends on both v7.1 cleanup issues. Do not remove selectors here.
Cleanup inventory from the v7.0 selector branch
The following inventory comes from arturcic:feature/v7-feature-selectors at 54adbb24e, the implementation of #5135. Implementation PR: #5189, opened from the fork after all four fork workflows passed on that commit. The inventory describes the PR branch; completion of #5135 remains a prerequisite until the PR is merged.
Production code to adapt in v7.1
Tests to remove, rewrite or retain
Update BREAKING_CHANGES.md, docs/input/docs/migration/v6-to-v7.md, docs/input/docs/usage/cli/arguments.md, docs/input/docs/reference/environment-variables.md and docs/design/managed-git-migration.md from temporary-fallback guidance to v7.1 removal guidance. Actual selector-variable removal stays in #5136 for v8.
Output-isolation regression added during #5189 review
Summary
Split from #5135: remove the legacy argument parser and flat v6 configuration runtime in v7.1, after the v7.0 defaults and temporary fallbacks ship. The completed configuration foundation is #5131 (#5158, #5159, #5160).
Scope
gitversion config migrate, including conversion of v6 input, available.GITVERSION_ARGUMENT_PARSER_VERSIONandGITVERSION_CONFIGURATION_VERSIONduring v7.x; rejectv6with actionable removal/migration guidance and accept explicitv7as a no-op.Boundaries and dependencies
#5135 owns v7.0 defaults and temporary fallbacks. #5040 separately removes LibGit2Sharp/native binaries in v7.1. #5136 removes all three selectors in v8 and depends on both v7.1 cleanup issues. Do not remove selectors here.
Cleanup inventory from the v7.0 selector branch
The following inventory comes from arturcic:feature/v7-feature-selectors at 54adbb24e, the implementation of #5135. Implementation PR: #5189, opened from the fork after all four fork workflows passed on that commit. The inventory describes the PR branch; completion of #5135 remains a prerequisite until the PR is merged.
Production code to adapt in v7.1
src/GitVersion.App/ArgumentParserVersion.cs: remove the legacy parser implementation path; retain the environment-variable compatibility validator sov6reports removal guidance andv7remains accepted. Preserve the actionable diagnostic for the already-retiredGITVERSION_USE_V6_ARGUMENT_PARSERboolean.src/GitVersion.Core/Configuration/ConfigurationVersion.cs: retirev6runtime selection with guidance togitversion config migrate, while keepingv7accepted. Remove runtime flat-format loading/serialization without deleting the migration service's ability to read flat v6 input.src/GitVersion.App/FeatureSelections.cs,CliHost.csandGitVersionAppModule.csto register only the v7 parser/configuration. Retain effective-selection snapshots/logging during v7.x and the managed/libgit2 backend boundary owned by v7.1: remove LibGit2Sharp and native binaries #5040.src/GitVersion.Core/FeatureSelector.csuntil all selector removal occurs under Remove feature-selector environment variables #5136. Preserve its source link innew-cli/GitVersion.Common/GitVersion.Common.csprojwhile the source-linked backend selector still uses it.Program.csstartup error handling: exit code 1,An error occurred:prefix and actionable stderr text, with no stack trace or machine-readable stdout pollution.ArgumentParser.MapMigrationValueshandling of a root-level--log-fileand the stderr routing inServiceCollectionExtensions.ConfigureLogger. These are retained logging/migration behavior, not disposable v6 scaffolding.Tests to remove, rewrite or retain
src/GitVersion.App.Tests/FeatureSelectorTests.cs: replace v6 success cases inParserResolvesKnownValuesandCompositionRegistersSelectedImplementationswith retirement diagnostics; retain normalization/unknown-value tests,RetiredBooleanIsRejectedEvenWithNewSelectorand captured-value behavior inSelectionLogUsesCapturedValuesusing supported selections.src/GitVersion.App.Tests/ExecFeatureSelectorTests.cs: reduce the eight runtime combinations inSelectorCombinationsCalculateAndLogWithoutPollutingOutputto supported implementations; add explicit parser-v6 and configuration-v6 failure cases with migration guidance. Retain JSON, show-variable, show-config and stderr-isolation assertions, includingDefaultsSelectV7AndManagedWithConsoleLogsOnStderrandInvalidSelectorsFailBeforeHelpWithActionableStderr.MigrationRetainsYamlStdoutWithEitherConfigurationAndBackend: v6 input files must still migrate with the supported v7 runtime selection. A removed v6 selector value must not be mistaken for retained flat-file migration support. Coordinate libgit2 cases with v7.1: remove LibGit2Sharp and native binaries #5040.src/GitVersion.App.Tests/ExecCmdLineArgumentTest.csnow selects the fallback throughGITVERSION_ARGUMENT_PARSER_VERSION=v6; remove its legacy-parser variants while keeping modern commit-selection and verbosity regressions.src/GitVersion.Core.Tests/Core/ConfigurationVersionSelectorTests.csand related configuration integration tests as actionable retirement failures. Do not delete normalization, default-selection or migration coverage wholesale.Update
BREAKING_CHANGES.md,docs/input/docs/migration/v6-to-v7.md,docs/input/docs/usage/cli/arguments.md,docs/input/docs/reference/environment-variables.mdanddocs/design/managed-git-migration.mdfrom temporary-fallback guidance to v7.1 removal guidance. Actual selector-variable removal stays in #5136 for v8.Output-isolation regression added during #5189 review
buildServerdimension inExecFeatureSelectorTests.SelectorCombinationsCalculateAndLogWithoutPollutingOutput: JSON, single-variable and show-config stdout must stay free of diagnostics even when build-server output is also selected. This dimension is independent of the parser/configuration/backend selectors being retired.ServiceCollectionExtensions.ConfigureLogger. Build-server integration commands keep their existing output channel; diagnostic logs must not move back to stdout during cleanup.ArgumentParserand, until legacy removal,legacy_help.md) and the CLI/migration documentation consistent with stderr logging.