From a0847da78029f44ad5bc0f10f4c6891ab3859fda Mon Sep 17 00:00:00 2001 From: Antoine Cotten Date: Wed, 8 Jan 2025 13:42:55 +0100 Subject: [PATCH 1/4] 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 | 2 ++ src/git-command-manager.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/dist/index.js b/dist/index.js index b0db713..975842b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -588,6 +588,8 @@ class GitCommandManager { disableSparseCheckout() { return __awaiter(this, void 0, void 0, function* () { yield this.execGit(['sparse-checkout', 'disable']); + // 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..a4ed105 100644 --- a/src/git-command-manager.ts +++ b/src/git-command-manager.ts @@ -178,6 +178,8 @@ class GitCommandManager { async disableSparseCheckout(): Promise { await this.execGit(['sparse-checkout', 'disable']) + // 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). await this.tryConfigUnset('extensions.worktreeConfig', false) } From 009b9ae9e446ad8d9b8c809870b0fbcc5e03573e Mon Sep 17 00:00:00 2001 From: Ben Wells Date: Thu, 16 Jan 2025 14:14:48 -0500 Subject: [PATCH 2/4] Documentation update - add recommended permissions to Readme (#2043) * Update README.md * Update README.md Co-authored-by: Josh Gross --------- Co-authored-by: Josh Gross --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index b0f6224..f28fec7 100644 --- a/README.md +++ b/README.md @@ -311,6 +311,16 @@ jobs: git commit -m "generated" git push ``` + +## Recommended permissions + +When using the `checkout` action in your GitHub Actions workflow, it is recommended to set the following `GITHUB_TOKEN` permissions to ensure proper functionality, unless alternative auth is provided via the `token` or `ssh-key` inputs: + +```yaml +permissions: + contents: read +``` + *NOTE:* The user email is `{user.id}+{user.login}@users.noreply.github.com`. See users API: https://api.github.com/users/github-actions%5Bbot%5D From 85e6279cec87321a52edac9c87bce653a07cf6c2 Mon Sep 17 00:00:00 2001 From: Josh Gross Date: Thu, 16 Jan 2025 15:56:18 -0500 Subject: [PATCH 3/4] Adjust positioning of user email note and permissions heading (#2044) --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f28fec7..64dc025 100644 --- a/README.md +++ b/README.md @@ -312,7 +312,9 @@ jobs: git push ``` -## Recommended permissions +*NOTE:* The user email is `{user.id}+{user.login}@users.noreply.github.com`. See users API: https://api.github.com/users/github-actions%5Bbot%5D + +# Recommended permissions When using the `checkout` action in your GitHub Actions workflow, it is recommended to set the following `GITHUB_TOKEN` permissions to ensure proper functionality, unless alternative auth is provided via the `token` or `ssh-key` inputs: @@ -321,9 +323,6 @@ permissions: contents: read ``` -*NOTE:* The user email is `{user.id}+{user.login}@users.noreply.github.com`. See users API: https://api.github.com/users/github-actions%5Bbot%5D - - # License The scripts and documentation in this project are released under the [MIT License](LICENSE) From 3b88dfdbe47b83df3cd200ede0780742f3ee56e7 Mon Sep 17 00:00:00 2001 From: Antoine Cotten Date: Sun, 6 Apr 2025 10:42:53 +0200 Subject: [PATCH 4/4] 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 | 2 ++ src/git-command-manager.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/dist/index.js b/dist/index.js index b0db713..975842b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -588,6 +588,8 @@ class GitCommandManager { disableSparseCheckout() { return __awaiter(this, void 0, void 0, function* () { yield this.execGit(['sparse-checkout', 'disable']); + // 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..a4ed105 100644 --- a/src/git-command-manager.ts +++ b/src/git-command-manager.ts @@ -178,6 +178,8 @@ class GitCommandManager { async disableSparseCheckout(): Promise { await this.execGit(['sparse-checkout', 'disable']) + // 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). await this.tryConfigUnset('extensions.worktreeConfig', false) }