diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d8c83ac..cbd2991 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,7 +8,7 @@ on: - releases/* -# Note that when you see patterns like "ref: test-data/v2/basic" within this workflow, +# Note that when you see patterns like "ref: test-data/v2/basic" within this workflow, # these refer to "test-data" branches on this actions/checkout repo. # (For example, test-data/v2/basic -> https://github.com/actions/checkout/tree/test-data/v2/basic) @@ -37,7 +37,7 @@ jobs: steps: # Clone this repo - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4.1.1 # Basic checkout - name: Checkout basic @@ -257,7 +257,7 @@ jobs: path: basic - name: Verify basic run: __test__/verify-basic.sh --archive - + test-git-container: runs-on: ubuntu-latest container: bitnami/git:latest diff --git a/CHANGELOG.md b/CHANGELOG.md index a35831b..a1a3a24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## v4.1.4 +- Disable `extensions.worktreeConfig` when disabling `sparse-checkout` by @jww3 in https://github.com/actions/checkout/pull/1692 +- Add dependabot config by @cory-miller in https://github.com/actions/checkout/pull/1688 +- Bump the minor-actions-dependencies group with 2 updates by @dependabot in https://github.com/actions/checkout/pull/1693 +- Bump word-wrap from 1.2.3 to 1.2.5 by @dependabot in https://github.com/actions/checkout/pull/1643 + +## v4.1.3 +- Check git version before attempting to disable `sparse-checkout` by @jww3 in https://github.com/actions/checkout/pull/1656 +- Add SSH user parameter by @cory-miller in https://github.com/actions/checkout/pull/1685 +- Update `actions/checkout` version in `update-main-version.yml` by @jww3 in https://github.com/actions/checkout/pull/1650 + ## v4.1.2 - Fix: Disable sparse checkout whenever `sparse-checkout` option is not present @dscho in https://github.com/actions/checkout/pull/1598 diff --git a/__test__/verify-basic.sh b/__test__/verify-basic.sh index 5aaa309..d084617 100755 --- a/__test__/verify-basic.sh +++ b/__test__/verify-basic.sh @@ -18,6 +18,20 @@ else exit 1 fi + # Verify that sparse-checkout is disabled. + SPARSE_CHECKOUT_ENABLED=$(git -C ./basic config --local --get-all core.sparseCheckout) + if [ "$SPARSE_CHECKOUT_ENABLED" != "" ]; then + echo "Expected sparse-checkout to be disabled (discovered: $SPARSE_CHECKOUT_ENABLED)" + exit 1 + fi + + # Verify git configuration shows worktreeConfig is effectively disabled + WORKTREE_CONFIG_ENABLED=$(git -C ./basic config --local --get-all extensions.worktreeConfig) + if [[ "$WORKTREE_CONFIG_ENABLED" != "" ]]; then + echo "Expected extensions.worktreeConfig (boolean) to be disabled in git config. This could be an artifact of sparse checkout functionality." + exit 1 + fi + # Verify auth token cd basic git fetch --no-tags --depth=1 origin +refs/heads/main:refs/remotes/origin/main diff --git a/dist/index.js b/dist/index.js index c45100f..c39596b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -590,6 +590,8 @@ 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). + yield this.tryConfigUnset('extensions.worktreeConfig', false); }); } sparseCheckout(sparseCheckout) { diff --git a/package-lock.json b/package-lock.json index 7911ccf..47a0b5e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "checkout", - "version": "4.1.3", + "version": "4.1.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "checkout", - "version": "4.1.3", + "version": "4.1.4", "license": "MIT", "dependencies": { "@actions/core": "^1.10.1", diff --git a/package.json b/package.json index 949e766..323c4c2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "checkout", - "version": "4.1.3", + "version": "4.1.4", "description": "checkout action", "main": "lib/main.js", "scripts": { diff --git a/src/git-command-manager.ts b/src/git-command-manager.ts index fa50321..8e42a38 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']) + // Disabling 'sparse-checkout` leaves behind an undesirable side-effect in config (even in a pristine environment). + await this.tryConfigUnset('extensions.worktreeConfig', false) } async sparseCheckout(sparseCheckout: string[]): Promise {