You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Shipped packages contain no LibGit2Sharp assemblies or native Git binaries.
Production and CI use only the managed backend.
No dual-backend selection or comparison infrastructure remains, apart from the v7 environment-variable compatibility validator.
Legacy selection fails clearly and explicit managed remains harmless in v7.x.
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.
Branch additions relevant to backend removal
src/GitVersion.Core/Git/GitBackend.cs now defaults to managed Git and shares trimmed/case-insensitive/blank-default validation through src/GitVersion.Core/FeatureSelector.cs, using WarningException. In v7.1, replace the libgit2 selection path with actionable removal guidance; keep explicit managed accepted until v8.
src/GitVersion.App/FeatureSelections.cs captures the backend before CliHost.cs registers it and GitVersionApp.cs logs the captured value. Remove the libgit2 registration/logging branch while retaining truthful managed diagnostics and stderr isolation.
Review new-cli/GitVersion.Common/GitVersion.Common.csproj: the new shared helper is explicitly source-linked because the Git backend selector is source-linked. Keep that dependency buildable until Remove feature-selector environment variables #5136 removes the selector/helper.
Update src/GitVersion.Core.Tests/Core/GitBackendSelectorTests.cs: replace libgit2 success cases with removal-error cases, retaining managed/default/empty/padded/case-insensitive and unknown-value validation.
In src/GitVersion.App.Tests/FeatureSelectorTests.cs, reduce CompositionRegistersSelectedImplementations to managed-only registration after this cleanup. Coordinate v6 parser/configuration cases with v7.1: remove legacy argument parser and v6 configuration runtime #5188. Adapt SelectionLogUsesCapturedValues without losing the captured-state assertion.
In src/GitVersion.App.Tests/ExecFeatureSelectorTests.cs, retire libgit2 runtime/migration variants in SelectorCombinationsCalculateAndLogWithoutPollutingOutput and MigrationRetainsYamlStdoutWithEitherConfigurationAndBackend; add an actionable libgit2-removal stderr case to InvalidSelectorsFailBeforeHelpWithActionableStderr. Preserve machine-readable output and default-selection tests.
Remove backend matrices from workflows/artifact tests only with the implementation cleanup. build/common/Utilities/DockerContextExtensions.cs now correctly documents the absent-selector default as managed.
The v7.0 branch has tests for every parser/configuration/backend combination and concrete registered implementation. Remove the obsolete alternatives rather than deleting the whole selector/output-isolation suite. Selector variables and common validation are removed only in #5136 (v8).
Output-isolation regression added during #5189 review
Preserve the buildServer dimension in ExecFeatureSelectorTests.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.
Retain consistent stderr routing for console logs in ServiceCollectionExtensions.ConfigureLogger. Build-server integration commands keep their existing output channel; diagnostic logs must not move back to stdout during cleanup.
Keep CLI help (ArgumentParser and, until legacy removal, legacy_help.md) and the CLI/migration documentation consistent with stderr logging.
Summary
Remove LibGit2Sharp and all shipped native Git binaries in GitVersion v7.1, after the managed backend ships as the v7.0 default under #5135.
Part of #5031. The release and selector lifecycle is governed by #5135, with final environment-variable cleanup in v8 tracked by #5136.
Remove the legacy backend
src/GitVersion.LibGit2Sharpandnew-cli/GitVersion.Core.Libgit2Sharp.runtimes/**/native/*entries.Remove dual-backend validation scaffolding
git_backendmatrix to managed-only execution.Retain the v7 selector compatibility shell
Do not remove recognition of
GITVERSION_GIT_BACKENDin this issue:GITVERSION_GIT_BACKEND=libgit2fails with an actionable message that the backend was removed in v7.1.GITVERSION_GIT_BACKEND=managedremains accepted as a no-op throughout v7.x so explicit v7.0 opt-in automation keeps working.The implementation no longer performs backend selection after this issue; only the v7 compatibility validation remains.
Documentation
GITVERSION_GIT_BACKEND=libgit2and the v8 removal tracked by Remove feature-selector environment variables #5136.Acceptance criteria
managedremains harmless in v7.x.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.
Branch additions relevant to backend removal
src/GitVersion.Core/Git/GitBackend.csnow defaults to managed Git and shares trimmed/case-insensitive/blank-default validation throughsrc/GitVersion.Core/FeatureSelector.cs, usingWarningException. In v7.1, replace thelibgit2selection path with actionable removal guidance; keep explicitmanagedaccepted until v8.src/GitVersion.App/FeatureSelections.cscaptures the backend beforeCliHost.csregisters it andGitVersionApp.cslogs the captured value. Remove the libgit2 registration/logging branch while retaining truthful managed diagnostics and stderr isolation.new-cli/GitVersion.Common/GitVersion.Common.csproj: the new shared helper is explicitly source-linked because the Git backend selector is source-linked. Keep that dependency buildable until Remove feature-selector environment variables #5136 removes the selector/helper.src/GitVersion.Core.Tests/Core/GitBackendSelectorTests.cs: replace libgit2 success cases with removal-error cases, retaining managed/default/empty/padded/case-insensitive and unknown-value validation.src/GitVersion.App.Tests/FeatureSelectorTests.cs, reduceCompositionRegistersSelectedImplementationsto managed-only registration after this cleanup. Coordinate v6 parser/configuration cases with v7.1: remove legacy argument parser and v6 configuration runtime #5188. AdaptSelectionLogUsesCapturedValueswithout losing the captured-state assertion.src/GitVersion.App.Tests/ExecFeatureSelectorTests.cs, retire libgit2 runtime/migration variants inSelectorCombinationsCalculateAndLogWithoutPollutingOutputandMigrationRetainsYamlStdoutWithEitherConfigurationAndBackend; add an actionable libgit2-removal stderr case toInvalidSelectorsFailBeforeHelpWithActionableStderr. Preserve machine-readable output and default-selection tests.build/common/Utilities/DockerContextExtensions.csnow correctly documents the absent-selector default as managed.The v7.0 branch has tests for every parser/configuration/backend combination and concrete registered implementation. Remove the obsolete alternatives rather than deleting the whole selector/output-isolation suite. Selector variables and common validation are removed only in #5136 (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.