mirror of https://github.com/actions/checkout.git
Disable `extensions.worktreeConfig` when disabling `sparse-checkout` (#1692)
This commit is contained in:
parent
37b082107b
commit
43045ae669
|
@ -8,7 +8,7 @@ on:
|
||||||
- releases/*
|
- 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.
|
# 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)
|
# (For example, test-data/v2/basic -> https://github.com/actions/checkout/tree/test-data/v2/basic)
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
# Clone this repo
|
# Clone this repo
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4.1.1
|
||||||
|
|
||||||
# Basic checkout
|
# Basic checkout
|
||||||
- name: Checkout basic
|
- name: Checkout basic
|
||||||
|
@ -257,7 +257,7 @@ jobs:
|
||||||
path: basic
|
path: basic
|
||||||
- name: Verify basic
|
- name: Verify basic
|
||||||
run: __test__/verify-basic.sh --archive
|
run: __test__/verify-basic.sh --archive
|
||||||
|
|
||||||
test-git-container:
|
test-git-container:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container: bitnami/git:latest
|
container: bitnami/git:latest
|
||||||
|
|
|
@ -18,6 +18,20 @@ else
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
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
|
# Verify auth token
|
||||||
cd basic
|
cd basic
|
||||||
git fetch --no-tags --depth=1 origin +refs/heads/main:refs/remotes/origin/main
|
git fetch --no-tags --depth=1 origin +refs/heads/main:refs/remotes/origin/main
|
||||||
|
|
|
@ -582,6 +582,8 @@ class GitCommandManager {
|
||||||
disableSparseCheckout() {
|
disableSparseCheckout() {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
yield this.execGit(['sparse-checkout', 'disable']);
|
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) {
|
sparseCheckout(sparseCheckout) {
|
||||||
|
|
|
@ -178,6 +178,8 @@ class GitCommandManager {
|
||||||
|
|
||||||
async disableSparseCheckout(): Promise<void> {
|
async disableSparseCheckout(): Promise<void> {
|
||||||
await this.execGit(['sparse-checkout', 'disable'])
|
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<void> {
|
async sparseCheckout(sparseCheckout: string[]): Promise<void> {
|
||||||
|
|
Loading…
Reference in New Issue