From 21358322e0dcb3035bd597a22c392f9f4de22e57 Mon Sep 17 00:00:00 2001 From: Antoine Cotten Date: Tue, 26 Aug 2025 21:19:43 +0200 Subject: [PATCH] fix: sparse-checkout not disabled on subsequent checkout If actions/checkout is invoked once with 'sparse-checkout' and cone mode disabled, core.sparseCheckout remains enabled for all subsequent invocations of actions/checkout. --- dist/index.js | 4 +++- src/git-command-manager.ts | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/dist/index.js b/dist/index.js index f3ae6f3..aba68ab 100644 --- a/dist/index.js +++ b/dist/index.js @@ -588,7 +588,9 @@ class GitCommandManager { disableSparseCheckout() { return __awaiter(this, void 0, void 0, function* () { yield this.execGit(['sparse-checkout', 'disable']); - // Disabling 'sparse-checkout` leaves behind an undesirable side-effect in config (even in a pristine environment). + // Ensures that a previously enabled 'sparse-checkout' (e.g. via sparseCheckoutNonConeMode) is also disabled in the config. + yield this.execGit(['config', 'core.sparseCheckout', 'false']); + // Disabling 'sparse-checkout' leaves behind an undesirable side-effect in config (even in a pristine environment). yield this.tryConfigUnset('extensions.worktreeConfig', false); }); } diff --git a/src/git-command-manager.ts b/src/git-command-manager.ts index 8e42a38..bb4675d 100644 --- a/src/git-command-manager.ts +++ b/src/git-command-manager.ts @@ -178,7 +178,9 @@ class GitCommandManager { async disableSparseCheckout(): Promise { await this.execGit(['sparse-checkout', 'disable']) - // Disabling 'sparse-checkout` leaves behind an undesirable side-effect in config (even in a pristine environment). + // Ensures that a previously enabled 'sparse-checkout' (e.g. via sparseCheckoutNonConeMode) is also disabled in the config. + await this.execGit(['config', 'core.sparseCheckout', 'false']) + // Disabling 'sparse-checkout' leaves behind an undesirable side-effect in config (even in a pristine environment). await this.tryConfigUnset('extensions.worktreeConfig', false) }