Disable extensions.worktreeConfig when disabling sparse-checkout (#1692)
				
					
				
			This commit is contained in:
		
				
					committed by
					
						
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							37b082107b
						
					
				
				
					commit
					43045ae669
				
			
							
								
								
									
										6
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							@@ -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> {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user