mirror of
				https://github.com/actions/checkout.git
				synced 2025-11-04 05:19:14 +08:00 
			
		
		
		
	Disable extensions.worktreeConfig when disabling sparse-checkout (#1692)
				
					
				
			This commit is contained in:
		
				
					committed by
					
						
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							37b082107b
						
					
				
				
					commit
					43045ae669
				
			
							
								
								
									
										2
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							@@ -582,6 +582,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) {
 | 
			
		||||
 
 | 
			
		||||
@@ -178,6 +178,8 @@ class GitCommandManager {
 | 
			
		||||
 | 
			
		||||
  async disableSparseCheckout(): Promise<void> {
 | 
			
		||||
    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> {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user