mirror of
				https://kkgithub.com/actions/checkout
				synced 2025-11-04 08:11:53 +08:00 
			
		
		
		
	Compare commits
	
		
			19 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 0ad4b8fada | |||
| 43045ae669 | |||
| 37b082107b | |||
| 9839dc14a0 | |||
| 9b4c13b0bf | |||
| 1d96c772d1 | |||
| cd7d8d697e | |||
| 8410ad0602 | |||
| 9bb56186c3 | |||
| 8eb1f6a495 | |||
| 556e4c3cb0 | |||
| b32f140b0c | |||
| 2650dbd060 | |||
| aadec89964 | |||
| df0bcddf6d | |||
| 473055ba18 | |||
| b4ffde65f4 | |||
| 8530928916 | |||
| 7cdaf2fbc0 | 
							
								
								
									
										20
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,20 @@
 | 
			
		||||
---
 | 
			
		||||
version: 2
 | 
			
		||||
 | 
			
		||||
updates:
 | 
			
		||||
- package-ecosystem: "npm"
 | 
			
		||||
  directory: "/"
 | 
			
		||||
  schedule:
 | 
			
		||||
    interval: "weekly"
 | 
			
		||||
  groups:
 | 
			
		||||
    minor-npm-dependencies:
 | 
			
		||||
      # NPM: Only group minor and patch updates (we want to carefully review major updates)
 | 
			
		||||
      update-types: [minor, patch]
 | 
			
		||||
- package-ecosystem: "github-actions"
 | 
			
		||||
  directory: "/"
 | 
			
		||||
  schedule:
 | 
			
		||||
    interval: "weekly"
 | 
			
		||||
  groups:
 | 
			
		||||
    minor-actions-dependencies:
 | 
			
		||||
      # GitHub Actions: Only group minor and patch updates (we want to carefully review major updates)
 | 
			
		||||
      update-types: [minor, patch]
 | 
			
		||||
							
								
								
									
										23
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							@ -7,6 +7,11 @@ on:
 | 
			
		||||
      - main
 | 
			
		||||
      - releases/*
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# 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)
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  build:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
@ -32,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
 | 
			
		||||
@ -95,6 +100,16 @@ jobs:
 | 
			
		||||
      - name: Verify sparse checkout
 | 
			
		||||
        run: __test__/verify-sparse-checkout.sh
 | 
			
		||||
 | 
			
		||||
      # Disabled sparse checkout in existing checkout
 | 
			
		||||
      - name: Disabled sparse checkout
 | 
			
		||||
        uses: ./
 | 
			
		||||
        with:
 | 
			
		||||
          path: sparse-checkout
 | 
			
		||||
 | 
			
		||||
      - name: Verify disabled sparse checkout
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: set -x && ls -l sparse-checkout/src/git-command-manager.ts
 | 
			
		||||
 | 
			
		||||
      # Sparse checkout (non-cone mode)
 | 
			
		||||
      - name: Sparse checkout (non-cone mode)
 | 
			
		||||
        uses: ./
 | 
			
		||||
@ -175,7 +190,7 @@ jobs:
 | 
			
		||||
  test-proxy:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    container:
 | 
			
		||||
      image: alpine/git:latest
 | 
			
		||||
      image: ghcr.io/actions/test-ubuntu-git:main.20240221.114913.703z
 | 
			
		||||
      options: --dns 127.0.0.1
 | 
			
		||||
    services:
 | 
			
		||||
      squid-proxy:
 | 
			
		||||
@ -242,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
 | 
			
		||||
@ -279,4 +294,4 @@ jobs:
 | 
			
		||||
      - name: Fix Checkout v3
 | 
			
		||||
        uses: actions/checkout@v3
 | 
			
		||||
        with:
 | 
			
		||||
          path: v3
 | 
			
		||||
          path: v3
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										5
									
								
								.github/workflows/update-main-version.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.github/workflows/update-main-version.yml
									
									
									
									
										vendored
									
									
								
							@ -19,7 +19,10 @@ jobs:
 | 
			
		||||
  tag:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
    - uses: actions/checkout@v3
 | 
			
		||||
    # Note this update workflow can also be used as a rollback tool.
 | 
			
		||||
    # For that reason, it's best to pin `actions/checkout` to a known, stable version
 | 
			
		||||
    # (typically, about two releases back).
 | 
			
		||||
    - uses: actions/checkout@v4.1.1
 | 
			
		||||
      with:
 | 
			
		||||
        fetch-depth: 0
 | 
			
		||||
    - name: Git config
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										59
									
								
								.github/workflows/update-test-ubuntu-git.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								.github/workflows/update-test-ubuntu-git.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,59 @@
 | 
			
		||||
name: Publish test-ubuntu-git Container
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  # Use an on demand workflow trigger.  
 | 
			
		||||
  # (Forked copies of actions/checkout won't have permission to update GHCR.io/actions, 
 | 
			
		||||
  #  so avoid trigger events that run automatically.)
 | 
			
		||||
  workflow_dispatch:
 | 
			
		||||
    inputs:
 | 
			
		||||
      publish:
 | 
			
		||||
        description:  'Publish to ghcr.io? (main branch only)'
 | 
			
		||||
        type: boolean
 | 
			
		||||
        required: true
 | 
			
		||||
        default: false
 | 
			
		||||
 | 
			
		||||
env:
 | 
			
		||||
  REGISTRY: ghcr.io
 | 
			
		||||
  IMAGE_NAME: actions/test-ubuntu-git
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  build-and-push-image:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    # Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.
 | 
			
		||||
    permissions:
 | 
			
		||||
      contents: read
 | 
			
		||||
      packages: write
 | 
			
		||||
 
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout repository
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Use `docker/login-action` to log in to GHCR.io. 
 | 
			
		||||
      # Once published, the packages are scoped to the account defined here.
 | 
			
		||||
      - name: Log in to the ghcr.io container registry
 | 
			
		||||
        uses: docker/login-action@v3.1.0
 | 
			
		||||
        with:
 | 
			
		||||
          registry: ${{ env.REGISTRY }}
 | 
			
		||||
          username: ${{ github.actor }}
 | 
			
		||||
          password: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
 | 
			
		||||
      - name: Format Timestamp
 | 
			
		||||
        id: timestamp
 | 
			
		||||
        # Use `date` with a custom format to achieve the key=value format GITHUB_OUTPUT expects.
 | 
			
		||||
        run: date -u "+now=%Y%m%d.%H%M%S.%3NZ" >> "$GITHUB_OUTPUT"
 | 
			
		||||
 | 
			
		||||
      - name: Issue Image Publish Warning
 | 
			
		||||
        if:  ${{ inputs.publish && github.ref_name != 'main' }}
 | 
			
		||||
        run: echo "::warning::test-ubuntu-git images can only be published from the actions/checkout 'main' branch.  Workflow will continue with push/publish disabled."
 | 
			
		||||
 | 
			
		||||
      # Use `docker/build-push-action` to build (and optionally publish) the image. 
 | 
			
		||||
      - name: Build Docker Image (with optional Push)
 | 
			
		||||
        uses: docker/build-push-action@v5.3.0
 | 
			
		||||
        with:
 | 
			
		||||
          context: .
 | 
			
		||||
          file: images/test-ubuntu-git.Dockerfile
 | 
			
		||||
          # For now, attempts to push to ghcr.io must target the `main` branch.
 | 
			
		||||
          # In the future, consider also allowing attempts from `releases/*` branches.
 | 
			
		||||
          push: ${{ inputs.publish && github.ref_name == 'main' }}
 | 
			
		||||
          tags: |
 | 
			
		||||
            ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }}.${{ steps.timestamp.outputs.now }}
 | 
			
		||||
							
								
								
									
										18
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@ -1,5 +1,23 @@
 | 
			
		||||
# 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
 | 
			
		||||
 | 
			
		||||
## v4.1.1
 | 
			
		||||
- Correct link to GitHub Docs by @peterbe in https://github.com/actions/checkout/pull/1511
 | 
			
		||||
- Link to release page from what's new section by @cory-miller in https://github.com/actions/checkout/pull/1514
 | 
			
		||||
 | 
			
		||||
## v4.1.0
 | 
			
		||||
- [Add support for partial checkout filters](https://github.com/actions/checkout/pull/1396)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1 +1 @@
 | 
			
		||||
* @actions/actions-runtime
 | 
			
		||||
* @actions/actions-launch
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										11
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								README.md
									
									
									
									
									
								
							@ -4,7 +4,7 @@
 | 
			
		||||
 | 
			
		||||
This action checks-out your repository under `$GITHUB_WORKSPACE`, so your workflow can access it.
 | 
			
		||||
 | 
			
		||||
Only a single commit is fetched by default, for the ref/SHA that triggered the workflow. Set `fetch-depth: 0` to fetch all history for all branches and tags. Refer [here](https://help.github.com/en/articles/events-that-trigger-workflows) to learn which commit `$GITHUB_SHA` points to for different events.
 | 
			
		||||
Only a single commit is fetched by default, for the ref/SHA that triggered the workflow. Set `fetch-depth: 0` to fetch all history for all branches and tags. Refer [here](https://docs.github.com/actions/using-workflows/events-that-trigger-workflows) to learn which commit `$GITHUB_SHA` points to for different events.
 | 
			
		||||
 | 
			
		||||
The auth token is persisted in the local git config. This enables your scripts to run authenticated git commands. The token is removed during post-job cleanup. Set `persist-credentials: false` to opt-out.
 | 
			
		||||
 | 
			
		||||
@ -12,9 +12,7 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
 | 
			
		||||
 | 
			
		||||
# What's new
 | 
			
		||||
 | 
			
		||||
- Updated default runtime to node20
 | 
			
		||||
  - This requires a minimum Actions Runner version of [v2.308.0](https://github.com/actions/runner/releases/tag/v2.308.0).
 | 
			
		||||
- Added support for fetching without the `--progress` option
 | 
			
		||||
Please refer to the [release page](https://github.com/actions/checkout/releases/latest) for the latest release notes.
 | 
			
		||||
 | 
			
		||||
# Usage
 | 
			
		||||
 | 
			
		||||
@ -64,6 +62,11 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
 | 
			
		||||
    # Default: true
 | 
			
		||||
    ssh-strict: ''
 | 
			
		||||
 | 
			
		||||
    # The user to use when connecting to the remote SSH host. By default 'git' is
 | 
			
		||||
    # used.
 | 
			
		||||
    # Default: git
 | 
			
		||||
    ssh-user: ''
 | 
			
		||||
 | 
			
		||||
    # Whether to configure the token or SSH key with the local git config
 | 
			
		||||
    # Default: true
 | 
			
		||||
    persist-credentials: ''
 | 
			
		||||
 | 
			
		||||
@ -727,6 +727,7 @@ async function setup(testName: string): Promise<void> {
 | 
			
		||||
    branchDelete: jest.fn(),
 | 
			
		||||
    branchExists: jest.fn(),
 | 
			
		||||
    branchList: jest.fn(),
 | 
			
		||||
    disableSparseCheckout: jest.fn(),
 | 
			
		||||
    sparseCheckout: jest.fn(),
 | 
			
		||||
    sparseCheckoutNonConeMode: jest.fn(),
 | 
			
		||||
    checkout: jest.fn(),
 | 
			
		||||
@ -795,7 +796,8 @@ async function setup(testName: string): Promise<void> {
 | 
			
		||||
    ),
 | 
			
		||||
    tryDisableAutomaticGarbageCollection: jest.fn(),
 | 
			
		||||
    tryGetFetchUrl: jest.fn(),
 | 
			
		||||
    tryReset: jest.fn()
 | 
			
		||||
    tryReset: jest.fn(),
 | 
			
		||||
    version: jest.fn()
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  settings = {
 | 
			
		||||
@ -819,6 +821,7 @@ async function setup(testName: string): Promise<void> {
 | 
			
		||||
    sshKey: sshPath ? 'some ssh private key' : '',
 | 
			
		||||
    sshKnownHosts: '',
 | 
			
		||||
    sshStrict: true,
 | 
			
		||||
    sshUser: '',
 | 
			
		||||
    workflowOrganizationId: 123456,
 | 
			
		||||
    setSafeDirectory: true,
 | 
			
		||||
    githubServerUrl: githubServerUrl
 | 
			
		||||
 | 
			
		||||
@ -462,6 +462,7 @@ async function setup(testName: string): Promise<void> {
 | 
			
		||||
    branchList: jest.fn(async () => {
 | 
			
		||||
      return []
 | 
			
		||||
    }),
 | 
			
		||||
    disableSparseCheckout: jest.fn(),
 | 
			
		||||
    sparseCheckout: jest.fn(),
 | 
			
		||||
    sparseCheckoutNonConeMode: jest.fn(),
 | 
			
		||||
    checkout: jest.fn(),
 | 
			
		||||
@ -500,6 +501,7 @@ async function setup(testName: string): Promise<void> {
 | 
			
		||||
    }),
 | 
			
		||||
    tryReset: jest.fn(async () => {
 | 
			
		||||
      return true
 | 
			
		||||
    })
 | 
			
		||||
    }),
 | 
			
		||||
    version: jest.fn()
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,5 @@
 | 
			
		||||
import {GitVersion} from '../lib/git-version'
 | 
			
		||||
import {GitVersion} from '../src/git-version'
 | 
			
		||||
import {MinimumGitSparseCheckoutVersion} from '../src/git-command-manager'
 | 
			
		||||
 | 
			
		||||
describe('git-version tests', () => {
 | 
			
		||||
  it('basics', async () => {
 | 
			
		||||
@ -42,4 +43,44 @@ describe('git-version tests', () => {
 | 
			
		||||
    expect(version.checkMinimum(new GitVersion('5.1'))).toBeFalsy()
 | 
			
		||||
    expect(version.checkMinimum(new GitVersion('5.1.2'))).toBeFalsy()
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  it('sparse checkout', async () => {
 | 
			
		||||
    const minSparseVer = MinimumGitSparseCheckoutVersion
 | 
			
		||||
    expect(new GitVersion('1.0').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    expect(new GitVersion('1.99').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    expect(new GitVersion('2.0').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    expect(new GitVersion('2.24').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    expect(new GitVersion('2.24.0').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    expect(new GitVersion('2.24.9').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    expect(new GitVersion('2.25').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    expect(new GitVersion('2.25.0').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    expect(new GitVersion('2.25.1').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    expect(new GitVersion('2.25.9').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    expect(new GitVersion('2.26').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    expect(new GitVersion('2.26.0').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    expect(new GitVersion('2.26.1').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    expect(new GitVersion('2.26.9').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    expect(new GitVersion('2.27').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    expect(new GitVersion('2.27.0').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    expect(new GitVersion('2.27.1').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    expect(new GitVersion('2.27.9').checkMinimum(minSparseVer)).toBeFalsy()
 | 
			
		||||
    //                             /---------------------------------------
 | 
			
		||||
    //         ^^^ before         /         after vvv
 | 
			
		||||
    // --------------------------/
 | 
			
		||||
    expect(new GitVersion('2.28').checkMinimum(minSparseVer)).toBeTruthy()
 | 
			
		||||
    expect(new GitVersion('2.28.0').checkMinimum(minSparseVer)).toBeTruthy()
 | 
			
		||||
    expect(new GitVersion('2.28.1').checkMinimum(minSparseVer)).toBeTruthy()
 | 
			
		||||
    expect(new GitVersion('2.28.9').checkMinimum(minSparseVer)).toBeTruthy()
 | 
			
		||||
    expect(new GitVersion('2.29').checkMinimum(minSparseVer)).toBeTruthy()
 | 
			
		||||
    expect(new GitVersion('2.29.0').checkMinimum(minSparseVer)).toBeTruthy()
 | 
			
		||||
    expect(new GitVersion('2.29.1').checkMinimum(minSparseVer)).toBeTruthy()
 | 
			
		||||
    expect(new GitVersion('2.29.9').checkMinimum(minSparseVer)).toBeTruthy()
 | 
			
		||||
    expect(new GitVersion('2.99').checkMinimum(minSparseVer)).toBeTruthy()
 | 
			
		||||
    expect(new GitVersion('3.0').checkMinimum(minSparseVer)).toBeTruthy()
 | 
			
		||||
    expect(new GitVersion('3.99').checkMinimum(minSparseVer)).toBeTruthy()
 | 
			
		||||
    expect(new GitVersion('4.0').checkMinimum(minSparseVer)).toBeTruthy()
 | 
			
		||||
    expect(new GitVersion('4.99').checkMinimum(minSparseVer)).toBeTruthy()
 | 
			
		||||
    expect(new GitVersion('5.0').checkMinimum(minSparseVer)).toBeTruthy()
 | 
			
		||||
    expect(new GitVersion('5.99').checkMinimum(minSparseVer)).toBeTruthy()
 | 
			
		||||
  })
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
@ -45,6 +45,10 @@ inputs:
 | 
			
		||||
      and `CheckHostIP=no` to the SSH command line. Use the input `ssh-known-hosts` to
 | 
			
		||||
      configure additional hosts.
 | 
			
		||||
    default: true
 | 
			
		||||
  ssh-user:
 | 
			
		||||
    description: >
 | 
			
		||||
      The user to use when connecting to the remote SSH host. By default 'git' is used.
 | 
			
		||||
    default: git
 | 
			
		||||
  persist-credentials:
 | 
			
		||||
    description: 'Whether to configure the token or SSH key with the local git config'
 | 
			
		||||
    default: true
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										49
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										49
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							@ -467,7 +467,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
 | 
			
		||||
    });
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
 | 
			
		||||
exports.createCommandManager = exports.MinimumGitVersion = void 0;
 | 
			
		||||
exports.createCommandManager = exports.MinimumGitSparseCheckoutVersion = exports.MinimumGitVersion = void 0;
 | 
			
		||||
const core = __importStar(__nccwpck_require__(2186));
 | 
			
		||||
const exec = __importStar(__nccwpck_require__(1514));
 | 
			
		||||
const fs = __importStar(__nccwpck_require__(7147));
 | 
			
		||||
@ -480,7 +480,9 @@ const retryHelper = __importStar(__nccwpck_require__(2155));
 | 
			
		||||
const git_version_1 = __nccwpck_require__(3142);
 | 
			
		||||
// Auth header not supported before 2.9
 | 
			
		||||
// Wire protocol v2 not supported before 2.18
 | 
			
		||||
// sparse-checkout not [well-]supported before 2.28 (see https://github.com/actions/checkout/issues/1386)
 | 
			
		||||
exports.MinimumGitVersion = new git_version_1.GitVersion('2.18');
 | 
			
		||||
exports.MinimumGitSparseCheckoutVersion = new git_version_1.GitVersion('2.28');
 | 
			
		||||
function createCommandManager(workingDirectory, lfs, doSparseCheckout) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        return yield GitCommandManager.createCommandManager(workingDirectory, lfs, doSparseCheckout);
 | 
			
		||||
@ -498,6 +500,7 @@ class GitCommandManager {
 | 
			
		||||
        this.lfs = false;
 | 
			
		||||
        this.doSparseCheckout = false;
 | 
			
		||||
        this.workingDirectory = '';
 | 
			
		||||
        this.gitVersion = new git_version_1.GitVersion();
 | 
			
		||||
    }
 | 
			
		||||
    branchDelete(remote, branch) {
 | 
			
		||||
        return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
@ -576,6 +579,13 @@ class GitCommandManager {
 | 
			
		||||
            return result;
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
    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) {
 | 
			
		||||
        return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
            yield this.execGit(['sparse-checkout', 'set', ...sparseCheckout]);
 | 
			
		||||
@ -845,6 +855,11 @@ class GitCommandManager {
 | 
			
		||||
            return output.exitCode === 0;
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
    version() {
 | 
			
		||||
        return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
            return this.gitVersion;
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
    static createCommandManager(workingDirectory, lfs, doSparseCheckout) {
 | 
			
		||||
        return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
            const result = new GitCommandManager();
 | 
			
		||||
@ -896,21 +911,21 @@ class GitCommandManager {
 | 
			
		||||
            this.gitPath = yield io.which('git', true);
 | 
			
		||||
            // Git version
 | 
			
		||||
            core.debug('Getting git version');
 | 
			
		||||
            let gitVersion = new git_version_1.GitVersion();
 | 
			
		||||
            this.gitVersion = new git_version_1.GitVersion();
 | 
			
		||||
            let gitOutput = yield this.execGit(['version']);
 | 
			
		||||
            let stdout = gitOutput.stdout.trim();
 | 
			
		||||
            if (!stdout.includes('\n')) {
 | 
			
		||||
                const match = stdout.match(/\d+\.\d+(\.\d+)?/);
 | 
			
		||||
                if (match) {
 | 
			
		||||
                    gitVersion = new git_version_1.GitVersion(match[0]);
 | 
			
		||||
                    this.gitVersion = new git_version_1.GitVersion(match[0]);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (!gitVersion.isValid()) {
 | 
			
		||||
            if (!this.gitVersion.isValid()) {
 | 
			
		||||
                throw new Error('Unable to determine git version');
 | 
			
		||||
            }
 | 
			
		||||
            // Minimum git version
 | 
			
		||||
            if (!gitVersion.checkMinimum(exports.MinimumGitVersion)) {
 | 
			
		||||
                throw new Error(`Minimum required git version is ${exports.MinimumGitVersion}. Your git ('${this.gitPath}') is ${gitVersion}`);
 | 
			
		||||
            if (!this.gitVersion.checkMinimum(exports.MinimumGitVersion)) {
 | 
			
		||||
                throw new Error(`Minimum required git version is ${exports.MinimumGitVersion}. Your git ('${this.gitPath}') is ${this.gitVersion}`);
 | 
			
		||||
            }
 | 
			
		||||
            if (this.lfs) {
 | 
			
		||||
                // Git-lfs version
 | 
			
		||||
@ -938,14 +953,12 @@ class GitCommandManager {
 | 
			
		||||
            }
 | 
			
		||||
            this.doSparseCheckout = doSparseCheckout;
 | 
			
		||||
            if (this.doSparseCheckout) {
 | 
			
		||||
                // The `git sparse-checkout` command was introduced in Git v2.25.0
 | 
			
		||||
                const minimumGitSparseCheckoutVersion = new git_version_1.GitVersion('2.25');
 | 
			
		||||
                if (!gitVersion.checkMinimum(minimumGitSparseCheckoutVersion)) {
 | 
			
		||||
                    throw new Error(`Minimum Git version required for sparse checkout is ${minimumGitSparseCheckoutVersion}. Your git ('${this.gitPath}') is ${gitVersion}`);
 | 
			
		||||
                if (!this.gitVersion.checkMinimum(exports.MinimumGitSparseCheckoutVersion)) {
 | 
			
		||||
                    throw new Error(`Minimum Git version required for sparse checkout is ${exports.MinimumGitSparseCheckoutVersion}. Your git ('${this.gitPath}') is ${this.gitVersion}`);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            // Set the user agent
 | 
			
		||||
            const gitHttpUserAgent = `git/${gitVersion} (github-actions-checkout)`;
 | 
			
		||||
            const gitHttpUserAgent = `git/${this.gitVersion} (github-actions-checkout)`;
 | 
			
		||||
            core.debug(`Set git useragent to: ${gitHttpUserAgent}`);
 | 
			
		||||
            this.gitEnv['GIT_HTTP_USER_AGENT'] = gitHttpUserAgent;
 | 
			
		||||
        });
 | 
			
		||||
@ -1150,6 +1163,7 @@ const path = __importStar(__nccwpck_require__(1017));
 | 
			
		||||
const refHelper = __importStar(__nccwpck_require__(8601));
 | 
			
		||||
const stateHelper = __importStar(__nccwpck_require__(8647));
 | 
			
		||||
const urlHelper = __importStar(__nccwpck_require__(9437));
 | 
			
		||||
const git_command_manager_1 = __nccwpck_require__(738);
 | 
			
		||||
function getSource(settings) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        // Repository URL
 | 
			
		||||
@ -1282,7 +1296,14 @@ function getSource(settings) {
 | 
			
		||||
                core.endGroup();
 | 
			
		||||
            }
 | 
			
		||||
            // Sparse checkout
 | 
			
		||||
            if (settings.sparseCheckout) {
 | 
			
		||||
            if (!settings.sparseCheckout) {
 | 
			
		||||
                let gitVersion = yield git.version();
 | 
			
		||||
                // no need to disable sparse-checkout if the installed git runtime doesn't even support it.
 | 
			
		||||
                if (gitVersion.checkMinimum(git_command_manager_1.MinimumGitSparseCheckoutVersion)) {
 | 
			
		||||
                    yield git.disableSparseCheckout();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                core.startGroup('Setting up sparse checkout');
 | 
			
		||||
                if (settings.sparseCheckoutConeMode) {
 | 
			
		||||
                    yield git.sparseCheckout(settings.sparseCheckout);
 | 
			
		||||
@ -1779,6 +1800,7 @@ function getInputs() {
 | 
			
		||||
        result.sshKnownHosts = core.getInput('ssh-known-hosts');
 | 
			
		||||
        result.sshStrict =
 | 
			
		||||
            (core.getInput('ssh-strict') || 'true').toUpperCase() === 'TRUE';
 | 
			
		||||
        result.sshUser = core.getInput('ssh-user');
 | 
			
		||||
        // Persist credentials
 | 
			
		||||
        result.persistCredentials =
 | 
			
		||||
            (core.getInput('persist-credentials') || 'false').toUpperCase() === 'TRUE';
 | 
			
		||||
@ -2381,7 +2403,8 @@ function getFetchUrl(settings) {
 | 
			
		||||
    const encodedOwner = encodeURIComponent(settings.repositoryOwner);
 | 
			
		||||
    const encodedName = encodeURIComponent(settings.repositoryName);
 | 
			
		||||
    if (settings.sshKey) {
 | 
			
		||||
        return `git@${serviceUrl.hostname}:${encodedOwner}/${encodedName}.git`;
 | 
			
		||||
        const user = settings.sshUser.length > 0 ? settings.sshUser : 'git';
 | 
			
		||||
        return `${user}@${serviceUrl.hostname}:${encodedOwner}/${encodedName}.git`;
 | 
			
		||||
    }
 | 
			
		||||
    // "origin" is SCHEME://HOSTNAME[:PORT]
 | 
			
		||||
    return `${serviceUrl.origin}/${encodedOwner}/${encodedName}`;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										12
									
								
								images/test-ubuntu-git.Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								images/test-ubuntu-git.Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
			
		||||
# Defines the test-ubuntu-git Container Image.
 | 
			
		||||
# Consumed by actions/checkout CI/CD validation workflows.
 | 
			
		||||
 | 
			
		||||
FROM ubuntu:latest
 | 
			
		||||
 | 
			
		||||
RUN apt update
 | 
			
		||||
RUN apt install -y git
 | 
			
		||||
 | 
			
		||||
LABEL org.opencontainers.image.title="Ubuntu + git (validation image)"
 | 
			
		||||
LABEL org.opencontainers.image.description="Ubuntu image with git pre-installed. Intended primarily for testing `actions/checkout` during CI/CD workflows."
 | 
			
		||||
LABEL org.opencontainers.image.documentation="https://github.com/actions/checkout/tree/main/images/test-ubuntu-git.md"
 | 
			
		||||
LABEL org.opencontainers.image.licenses=MIT
 | 
			
		||||
							
								
								
									
										15
									
								
								images/test-ubuntu-git.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								images/test-ubuntu-git.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,15 @@
 | 
			
		||||
# `test-ubuntu-git` Container Image
 | 
			
		||||
 | 
			
		||||
[](https://github.com/actions/checkout/actions/workflows/update-test-ubuntu-git.yml)
 | 
			
		||||
 | 
			
		||||
## Purpose
 | 
			
		||||
 | 
			
		||||
`test-ubuntu-git` is a container image hosted on the GitHub Container Registry, `ghcr.io`.  
 | 
			
		||||
 | 
			
		||||
It is intended primarily for testing the [`actions/checkout` repository](https://github.com/actions/checkout) as part of `actions/checkout`'s CI/CD workflows.
 | 
			
		||||
 | 
			
		||||
The composition of `test-ubuntu-git` is intentionally minimal.  It is comprised of [git](https://git-scm.com/) installed on top of a [base-level ubuntu image](https://hub.docker.com/_/ubuntu/tags).
 | 
			
		||||
 | 
			
		||||
# License
 | 
			
		||||
 | 
			
		||||
`test-ubuntu-git` is released under the [MIT License](/LICENSE).
 | 
			
		||||
							
								
								
									
										338
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										338
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -1,12 +1,12 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "checkout",
 | 
			
		||||
  "version": "4.1.0",
 | 
			
		||||
  "version": "4.1.4",
 | 
			
		||||
  "lockfileVersion": 2,
 | 
			
		||||
  "requires": true,
 | 
			
		||||
  "packages": {
 | 
			
		||||
    "": {
 | 
			
		||||
      "name": "checkout",
 | 
			
		||||
      "version": "4.1.0",
 | 
			
		||||
      "version": "4.1.4",
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@actions/core": "^1.10.0",
 | 
			
		||||
@ -115,12 +115,13 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@babel/code-frame": {
 | 
			
		||||
      "version": "7.18.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
 | 
			
		||||
      "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
 | 
			
		||||
      "version": "7.23.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
 | 
			
		||||
      "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@babel/highlight": "^7.18.6"
 | 
			
		||||
        "@babel/highlight": "^7.23.4",
 | 
			
		||||
        "chalk": "^2.4.2"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=6.9.0"
 | 
			
		||||
@ -175,13 +176,14 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@babel/generator": {
 | 
			
		||||
      "version": "7.20.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz",
 | 
			
		||||
      "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==",
 | 
			
		||||
      "version": "7.23.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
 | 
			
		||||
      "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@babel/types": "^7.20.5",
 | 
			
		||||
        "@babel/types": "^7.23.6",
 | 
			
		||||
        "@jridgewell/gen-mapping": "^0.3.2",
 | 
			
		||||
        "@jridgewell/trace-mapping": "^0.3.17",
 | 
			
		||||
        "jsesc": "^2.5.1"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
@ -230,34 +232,34 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@babel/helper-environment-visitor": {
 | 
			
		||||
      "version": "7.18.9",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
 | 
			
		||||
      "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
 | 
			
		||||
      "version": "7.22.20",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
 | 
			
		||||
      "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=6.9.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@babel/helper-function-name": {
 | 
			
		||||
      "version": "7.19.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
 | 
			
		||||
      "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
 | 
			
		||||
      "version": "7.23.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
 | 
			
		||||
      "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@babel/template": "^7.18.10",
 | 
			
		||||
        "@babel/types": "^7.19.0"
 | 
			
		||||
        "@babel/template": "^7.22.15",
 | 
			
		||||
        "@babel/types": "^7.23.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=6.9.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@babel/helper-hoist-variables": {
 | 
			
		||||
      "version": "7.18.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
 | 
			
		||||
      "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
 | 
			
		||||
      "version": "7.22.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
 | 
			
		||||
      "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@babel/types": "^7.18.6"
 | 
			
		||||
        "@babel/types": "^7.22.5"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=6.9.0"
 | 
			
		||||
@ -313,30 +315,30 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@babel/helper-split-export-declaration": {
 | 
			
		||||
      "version": "7.18.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
 | 
			
		||||
      "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
 | 
			
		||||
      "version": "7.22.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
 | 
			
		||||
      "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@babel/types": "^7.18.6"
 | 
			
		||||
        "@babel/types": "^7.22.5"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=6.9.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@babel/helper-string-parser": {
 | 
			
		||||
      "version": "7.19.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
 | 
			
		||||
      "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
 | 
			
		||||
      "version": "7.23.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
 | 
			
		||||
      "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=6.9.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@babel/helper-validator-identifier": {
 | 
			
		||||
      "version": "7.19.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
 | 
			
		||||
      "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
 | 
			
		||||
      "version": "7.22.20",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
 | 
			
		||||
      "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=6.9.0"
 | 
			
		||||
@ -366,13 +368,13 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@babel/highlight": {
 | 
			
		||||
      "version": "7.18.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
 | 
			
		||||
      "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
 | 
			
		||||
      "version": "7.23.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
 | 
			
		||||
      "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@babel/helper-validator-identifier": "^7.18.6",
 | 
			
		||||
        "chalk": "^2.0.0",
 | 
			
		||||
        "@babel/helper-validator-identifier": "^7.22.20",
 | 
			
		||||
        "chalk": "^2.4.2",
 | 
			
		||||
        "js-tokens": "^4.0.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
@ -380,9 +382,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@babel/parser": {
 | 
			
		||||
      "version": "7.20.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz",
 | 
			
		||||
      "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==",
 | 
			
		||||
      "version": "7.24.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz",
 | 
			
		||||
      "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "parser": "bin/babel-parser.js"
 | 
			
		||||
@ -671,34 +673,34 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@babel/template": {
 | 
			
		||||
      "version": "7.18.10",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
 | 
			
		||||
      "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
 | 
			
		||||
      "version": "7.24.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz",
 | 
			
		||||
      "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@babel/code-frame": "^7.18.6",
 | 
			
		||||
        "@babel/parser": "^7.18.10",
 | 
			
		||||
        "@babel/types": "^7.18.10"
 | 
			
		||||
        "@babel/code-frame": "^7.23.5",
 | 
			
		||||
        "@babel/parser": "^7.24.0",
 | 
			
		||||
        "@babel/types": "^7.24.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=6.9.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@babel/traverse": {
 | 
			
		||||
      "version": "7.20.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz",
 | 
			
		||||
      "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==",
 | 
			
		||||
      "version": "7.24.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz",
 | 
			
		||||
      "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@babel/code-frame": "^7.18.6",
 | 
			
		||||
        "@babel/generator": "^7.20.5",
 | 
			
		||||
        "@babel/helper-environment-visitor": "^7.18.9",
 | 
			
		||||
        "@babel/helper-function-name": "^7.19.0",
 | 
			
		||||
        "@babel/helper-hoist-variables": "^7.18.6",
 | 
			
		||||
        "@babel/helper-split-export-declaration": "^7.18.6",
 | 
			
		||||
        "@babel/parser": "^7.20.5",
 | 
			
		||||
        "@babel/types": "^7.20.5",
 | 
			
		||||
        "debug": "^4.1.0",
 | 
			
		||||
        "@babel/code-frame": "^7.23.5",
 | 
			
		||||
        "@babel/generator": "^7.23.6",
 | 
			
		||||
        "@babel/helper-environment-visitor": "^7.22.20",
 | 
			
		||||
        "@babel/helper-function-name": "^7.23.0",
 | 
			
		||||
        "@babel/helper-hoist-variables": "^7.22.5",
 | 
			
		||||
        "@babel/helper-split-export-declaration": "^7.22.6",
 | 
			
		||||
        "@babel/parser": "^7.24.0",
 | 
			
		||||
        "@babel/types": "^7.24.0",
 | 
			
		||||
        "debug": "^4.3.1",
 | 
			
		||||
        "globals": "^11.1.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
@ -706,13 +708,13 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@babel/types": {
 | 
			
		||||
      "version": "7.20.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz",
 | 
			
		||||
      "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==",
 | 
			
		||||
      "version": "7.24.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz",
 | 
			
		||||
      "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@babel/helper-string-parser": "^7.19.4",
 | 
			
		||||
        "@babel/helper-validator-identifier": "^7.19.1",
 | 
			
		||||
        "@babel/helper-string-parser": "^7.23.4",
 | 
			
		||||
        "@babel/helper-validator-identifier": "^7.22.20",
 | 
			
		||||
        "to-fast-properties": "^2.0.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
@ -8141,6 +8143,12 @@
 | 
			
		||||
        "url": "https://github.com/sponsors/ljharb"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/querystringify": {
 | 
			
		||||
      "version": "2.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/queue-microtask": {
 | 
			
		||||
      "version": "1.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
 | 
			
		||||
@ -8191,6 +8199,12 @@
 | 
			
		||||
        "node": ">=0.10.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/requires-port": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/resolve-cwd": {
 | 
			
		||||
      "version": "3.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
 | 
			
		||||
@ -8713,14 +8727,15 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/tough-cookie": {
 | 
			
		||||
      "version": "4.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
 | 
			
		||||
      "version": "4.1.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
 | 
			
		||||
      "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "psl": "^1.1.33",
 | 
			
		||||
        "punycode": "^2.1.1",
 | 
			
		||||
        "universalify": "^0.1.2"
 | 
			
		||||
        "universalify": "^0.2.0",
 | 
			
		||||
        "url-parse": "^1.5.3"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=6"
 | 
			
		||||
@ -8937,9 +8952,9 @@
 | 
			
		||||
      "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/universalify": {
 | 
			
		||||
      "version": "0.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
 | 
			
		||||
      "version": "0.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 4.0.0"
 | 
			
		||||
@ -8980,6 +8995,16 @@
 | 
			
		||||
        "punycode": "^2.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/url-parse": {
 | 
			
		||||
      "version": "1.5.10",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
 | 
			
		||||
      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "querystringify": "^2.1.1",
 | 
			
		||||
        "requires-port": "^1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/uuid": {
 | 
			
		||||
      "version": "3.3.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
 | 
			
		||||
@ -9104,9 +9129,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/word-wrap": {
 | 
			
		||||
      "version": "1.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
 | 
			
		||||
      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
 | 
			
		||||
      "version": "1.2.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
 | 
			
		||||
      "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=0.10.0"
 | 
			
		||||
@ -9332,12 +9357,13 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@babel/code-frame": {
 | 
			
		||||
      "version": "7.18.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
 | 
			
		||||
      "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
 | 
			
		||||
      "version": "7.23.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
 | 
			
		||||
      "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@babel/highlight": "^7.18.6"
 | 
			
		||||
        "@babel/highlight": "^7.23.4",
 | 
			
		||||
        "chalk": "^2.4.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@babel/compat-data": {
 | 
			
		||||
@ -9378,13 +9404,14 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@babel/generator": {
 | 
			
		||||
      "version": "7.20.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz",
 | 
			
		||||
      "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==",
 | 
			
		||||
      "version": "7.23.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
 | 
			
		||||
      "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@babel/types": "^7.20.5",
 | 
			
		||||
        "@babel/types": "^7.23.6",
 | 
			
		||||
        "@jridgewell/gen-mapping": "^0.3.2",
 | 
			
		||||
        "@jridgewell/trace-mapping": "^0.3.17",
 | 
			
		||||
        "jsesc": "^2.5.1"
 | 
			
		||||
      },
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
@ -9422,28 +9449,28 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@babel/helper-environment-visitor": {
 | 
			
		||||
      "version": "7.18.9",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
 | 
			
		||||
      "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
 | 
			
		||||
      "version": "7.22.20",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
 | 
			
		||||
      "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "@babel/helper-function-name": {
 | 
			
		||||
      "version": "7.19.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
 | 
			
		||||
      "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
 | 
			
		||||
      "version": "7.23.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
 | 
			
		||||
      "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@babel/template": "^7.18.10",
 | 
			
		||||
        "@babel/types": "^7.19.0"
 | 
			
		||||
        "@babel/template": "^7.22.15",
 | 
			
		||||
        "@babel/types": "^7.23.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@babel/helper-hoist-variables": {
 | 
			
		||||
      "version": "7.18.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
 | 
			
		||||
      "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
 | 
			
		||||
      "version": "7.22.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
 | 
			
		||||
      "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@babel/types": "^7.18.6"
 | 
			
		||||
        "@babel/types": "^7.22.5"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@babel/helper-module-imports": {
 | 
			
		||||
@ -9487,24 +9514,24 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@babel/helper-split-export-declaration": {
 | 
			
		||||
      "version": "7.18.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
 | 
			
		||||
      "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
 | 
			
		||||
      "version": "7.22.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
 | 
			
		||||
      "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@babel/types": "^7.18.6"
 | 
			
		||||
        "@babel/types": "^7.22.5"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@babel/helper-string-parser": {
 | 
			
		||||
      "version": "7.19.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
 | 
			
		||||
      "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
 | 
			
		||||
      "version": "7.23.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
 | 
			
		||||
      "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "@babel/helper-validator-identifier": {
 | 
			
		||||
      "version": "7.19.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
 | 
			
		||||
      "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
 | 
			
		||||
      "version": "7.22.20",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
 | 
			
		||||
      "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "@babel/helper-validator-option": {
 | 
			
		||||
@ -9525,20 +9552,20 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@babel/highlight": {
 | 
			
		||||
      "version": "7.18.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
 | 
			
		||||
      "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
 | 
			
		||||
      "version": "7.23.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
 | 
			
		||||
      "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@babel/helper-validator-identifier": "^7.18.6",
 | 
			
		||||
        "chalk": "^2.0.0",
 | 
			
		||||
        "@babel/helper-validator-identifier": "^7.22.20",
 | 
			
		||||
        "chalk": "^2.4.2",
 | 
			
		||||
        "js-tokens": "^4.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@babel/parser": {
 | 
			
		||||
      "version": "7.20.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz",
 | 
			
		||||
      "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==",
 | 
			
		||||
      "version": "7.24.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz",
 | 
			
		||||
      "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "@babel/plugin-syntax-async-generators": {
 | 
			
		||||
@ -9763,42 +9790,42 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@babel/template": {
 | 
			
		||||
      "version": "7.18.10",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
 | 
			
		||||
      "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
 | 
			
		||||
      "version": "7.24.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz",
 | 
			
		||||
      "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@babel/code-frame": "^7.18.6",
 | 
			
		||||
        "@babel/parser": "^7.18.10",
 | 
			
		||||
        "@babel/types": "^7.18.10"
 | 
			
		||||
        "@babel/code-frame": "^7.23.5",
 | 
			
		||||
        "@babel/parser": "^7.24.0",
 | 
			
		||||
        "@babel/types": "^7.24.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@babel/traverse": {
 | 
			
		||||
      "version": "7.20.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz",
 | 
			
		||||
      "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==",
 | 
			
		||||
      "version": "7.24.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz",
 | 
			
		||||
      "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@babel/code-frame": "^7.18.6",
 | 
			
		||||
        "@babel/generator": "^7.20.5",
 | 
			
		||||
        "@babel/helper-environment-visitor": "^7.18.9",
 | 
			
		||||
        "@babel/helper-function-name": "^7.19.0",
 | 
			
		||||
        "@babel/helper-hoist-variables": "^7.18.6",
 | 
			
		||||
        "@babel/helper-split-export-declaration": "^7.18.6",
 | 
			
		||||
        "@babel/parser": "^7.20.5",
 | 
			
		||||
        "@babel/types": "^7.20.5",
 | 
			
		||||
        "debug": "^4.1.0",
 | 
			
		||||
        "@babel/code-frame": "^7.23.5",
 | 
			
		||||
        "@babel/generator": "^7.23.6",
 | 
			
		||||
        "@babel/helper-environment-visitor": "^7.22.20",
 | 
			
		||||
        "@babel/helper-function-name": "^7.23.0",
 | 
			
		||||
        "@babel/helper-hoist-variables": "^7.22.5",
 | 
			
		||||
        "@babel/helper-split-export-declaration": "^7.22.6",
 | 
			
		||||
        "@babel/parser": "^7.24.0",
 | 
			
		||||
        "@babel/types": "^7.24.0",
 | 
			
		||||
        "debug": "^4.3.1",
 | 
			
		||||
        "globals": "^11.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@babel/types": {
 | 
			
		||||
      "version": "7.20.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz",
 | 
			
		||||
      "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==",
 | 
			
		||||
      "version": "7.24.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz",
 | 
			
		||||
      "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@babel/helper-string-parser": "^7.19.4",
 | 
			
		||||
        "@babel/helper-validator-identifier": "^7.19.1",
 | 
			
		||||
        "@babel/helper-string-parser": "^7.23.4",
 | 
			
		||||
        "@babel/helper-validator-identifier": "^7.22.20",
 | 
			
		||||
        "to-fast-properties": "^2.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
@ -15300,6 +15327,12 @@
 | 
			
		||||
        "side-channel": "^1.0.4"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "querystringify": {
 | 
			
		||||
      "version": "2.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "queue-microtask": {
 | 
			
		||||
      "version": "1.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
 | 
			
		||||
@ -15324,6 +15357,12 @@
 | 
			
		||||
      "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "requires-port": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "resolve-cwd": {
 | 
			
		||||
      "version": "3.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
 | 
			
		||||
@ -15720,14 +15759,15 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "tough-cookie": {
 | 
			
		||||
      "version": "4.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
 | 
			
		||||
      "version": "4.1.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
 | 
			
		||||
      "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "psl": "^1.1.33",
 | 
			
		||||
        "punycode": "^2.1.1",
 | 
			
		||||
        "universalify": "^0.1.2"
 | 
			
		||||
        "universalify": "^0.2.0",
 | 
			
		||||
        "url-parse": "^1.5.3"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "tr46": {
 | 
			
		||||
@ -15878,9 +15918,9 @@
 | 
			
		||||
      "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
 | 
			
		||||
    },
 | 
			
		||||
    "universalify": {
 | 
			
		||||
      "version": "0.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
 | 
			
		||||
      "version": "0.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "update-browserslist-db": {
 | 
			
		||||
@ -15902,6 +15942,16 @@
 | 
			
		||||
        "punycode": "^2.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "url-parse": {
 | 
			
		||||
      "version": "1.5.10",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
 | 
			
		||||
      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "querystringify": "^2.1.1",
 | 
			
		||||
        "requires-port": "^1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "uuid": {
 | 
			
		||||
      "version": "3.3.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
 | 
			
		||||
@ -16005,9 +16055,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "word-wrap": {
 | 
			
		||||
      "version": "1.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
 | 
			
		||||
      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
 | 
			
		||||
      "version": "1.2.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
 | 
			
		||||
      "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "wrap-ansi": {
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "checkout",
 | 
			
		||||
  "version": "4.1.0",
 | 
			
		||||
  "version": "4.1.4",
 | 
			
		||||
  "description": "checkout action",
 | 
			
		||||
  "main": "lib/main.js",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
@ -52,4 +52,4 @@
 | 
			
		||||
    "ts-jest": "^27.0.7",
 | 
			
		||||
    "typescript": "^4.4.4"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -11,12 +11,15 @@ import {GitVersion} from './git-version'
 | 
			
		||||
 | 
			
		||||
// Auth header not supported before 2.9
 | 
			
		||||
// Wire protocol v2 not supported before 2.18
 | 
			
		||||
// sparse-checkout not [well-]supported before 2.28 (see https://github.com/actions/checkout/issues/1386)
 | 
			
		||||
export const MinimumGitVersion = new GitVersion('2.18')
 | 
			
		||||
export const MinimumGitSparseCheckoutVersion = new GitVersion('2.28')
 | 
			
		||||
 | 
			
		||||
export interface IGitCommandManager {
 | 
			
		||||
  branchDelete(remote: boolean, branch: string): Promise<void>
 | 
			
		||||
  branchExists(remote: boolean, pattern: string): Promise<boolean>
 | 
			
		||||
  branchList(remote: boolean): Promise<string[]>
 | 
			
		||||
  disableSparseCheckout(): Promise<void>
 | 
			
		||||
  sparseCheckout(sparseCheckout: string[]): Promise<void>
 | 
			
		||||
  sparseCheckoutNonConeMode(sparseCheckout: string[]): Promise<void>
 | 
			
		||||
  checkout(ref: string, startPoint: string): Promise<void>
 | 
			
		||||
@ -59,6 +62,7 @@ export interface IGitCommandManager {
 | 
			
		||||
  tryDisableAutomaticGarbageCollection(): Promise<boolean>
 | 
			
		||||
  tryGetFetchUrl(): Promise<string>
 | 
			
		||||
  tryReset(): Promise<boolean>
 | 
			
		||||
  version(): Promise<GitVersion>
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function createCommandManager(
 | 
			
		||||
@ -82,6 +86,7 @@ class GitCommandManager {
 | 
			
		||||
  private lfs = false
 | 
			
		||||
  private doSparseCheckout = false
 | 
			
		||||
  private workingDirectory = ''
 | 
			
		||||
  private gitVersion: GitVersion = new GitVersion()
 | 
			
		||||
 | 
			
		||||
  // Private constructor; use createCommandManager()
 | 
			
		||||
  private constructor() {}
 | 
			
		||||
@ -171,6 +176,12 @@ class GitCommandManager {
 | 
			
		||||
    return result
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  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> {
 | 
			
		||||
    await this.execGit(['sparse-checkout', 'set', ...sparseCheckout])
 | 
			
		||||
  }
 | 
			
		||||
@ -475,6 +486,10 @@ class GitCommandManager {
 | 
			
		||||
    return output.exitCode === 0
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async version(): Promise<GitVersion> {
 | 
			
		||||
    return this.gitVersion
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static async createCommandManager(
 | 
			
		||||
    workingDirectory: string,
 | 
			
		||||
    lfs: boolean,
 | 
			
		||||
@ -551,23 +566,23 @@ class GitCommandManager {
 | 
			
		||||
 | 
			
		||||
    // Git version
 | 
			
		||||
    core.debug('Getting git version')
 | 
			
		||||
    let gitVersion = new GitVersion()
 | 
			
		||||
    this.gitVersion = new GitVersion()
 | 
			
		||||
    let gitOutput = await this.execGit(['version'])
 | 
			
		||||
    let stdout = gitOutput.stdout.trim()
 | 
			
		||||
    if (!stdout.includes('\n')) {
 | 
			
		||||
      const match = stdout.match(/\d+\.\d+(\.\d+)?/)
 | 
			
		||||
      if (match) {
 | 
			
		||||
        gitVersion = new GitVersion(match[0])
 | 
			
		||||
        this.gitVersion = new GitVersion(match[0])
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    if (!gitVersion.isValid()) {
 | 
			
		||||
    if (!this.gitVersion.isValid()) {
 | 
			
		||||
      throw new Error('Unable to determine git version')
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Minimum git version
 | 
			
		||||
    if (!gitVersion.checkMinimum(MinimumGitVersion)) {
 | 
			
		||||
    if (!this.gitVersion.checkMinimum(MinimumGitVersion)) {
 | 
			
		||||
      throw new Error(
 | 
			
		||||
        `Minimum required git version is ${MinimumGitVersion}. Your git ('${this.gitPath}') is ${gitVersion}`
 | 
			
		||||
        `Minimum required git version is ${MinimumGitVersion}. Your git ('${this.gitPath}') is ${this.gitVersion}`
 | 
			
		||||
      )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -601,16 +616,14 @@ class GitCommandManager {
 | 
			
		||||
 | 
			
		||||
    this.doSparseCheckout = doSparseCheckout
 | 
			
		||||
    if (this.doSparseCheckout) {
 | 
			
		||||
      // The `git sparse-checkout` command was introduced in Git v2.25.0
 | 
			
		||||
      const minimumGitSparseCheckoutVersion = new GitVersion('2.25')
 | 
			
		||||
      if (!gitVersion.checkMinimum(minimumGitSparseCheckoutVersion)) {
 | 
			
		||||
      if (!this.gitVersion.checkMinimum(MinimumGitSparseCheckoutVersion)) {
 | 
			
		||||
        throw new Error(
 | 
			
		||||
          `Minimum Git version required for sparse checkout is ${minimumGitSparseCheckoutVersion}. Your git ('${this.gitPath}') is ${gitVersion}`
 | 
			
		||||
          `Minimum Git version required for sparse checkout is ${MinimumGitSparseCheckoutVersion}. Your git ('${this.gitPath}') is ${this.gitVersion}`
 | 
			
		||||
        )
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    // Set the user agent
 | 
			
		||||
    const gitHttpUserAgent = `git/${gitVersion} (github-actions-checkout)`
 | 
			
		||||
    const gitHttpUserAgent = `git/${this.gitVersion} (github-actions-checkout)`
 | 
			
		||||
    core.debug(`Set git useragent to: ${gitHttpUserAgent}`)
 | 
			
		||||
    this.gitEnv['GIT_HTTP_USER_AGENT'] = gitHttpUserAgent
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -9,7 +9,10 @@ import * as path from 'path'
 | 
			
		||||
import * as refHelper from './ref-helper'
 | 
			
		||||
import * as stateHelper from './state-helper'
 | 
			
		||||
import * as urlHelper from './url-helper'
 | 
			
		||||
import {IGitCommandManager} from './git-command-manager'
 | 
			
		||||
import {
 | 
			
		||||
  MinimumGitSparseCheckoutVersion,
 | 
			
		||||
  IGitCommandManager
 | 
			
		||||
} from './git-command-manager'
 | 
			
		||||
import {IGitSourceSettings} from './git-source-settings'
 | 
			
		||||
 | 
			
		||||
export async function getSource(settings: IGitSourceSettings): Promise<void> {
 | 
			
		||||
@ -208,7 +211,13 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Sparse checkout
 | 
			
		||||
    if (settings.sparseCheckout) {
 | 
			
		||||
    if (!settings.sparseCheckout) {
 | 
			
		||||
      let gitVersion = await git.version()
 | 
			
		||||
      // no need to disable sparse-checkout if the installed git runtime doesn't even support it.
 | 
			
		||||
      if (gitVersion.checkMinimum(MinimumGitSparseCheckoutVersion)) {
 | 
			
		||||
        await git.disableSparseCheckout()
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      core.startGroup('Setting up sparse checkout')
 | 
			
		||||
      if (settings.sparseCheckoutConeMode) {
 | 
			
		||||
        await git.sparseCheckout(settings.sparseCheckout)
 | 
			
		||||
 | 
			
		||||
@ -94,6 +94,11 @@ export interface IGitSourceSettings {
 | 
			
		||||
   */
 | 
			
		||||
  sshStrict: boolean
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * The SSH user to login as
 | 
			
		||||
   */
 | 
			
		||||
  sshUser: string
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Indicates whether to persist the credentials on disk to enable scripting authenticated git commands
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
@ -143,6 +143,7 @@ export async function getInputs(): Promise<IGitSourceSettings> {
 | 
			
		||||
  result.sshKnownHosts = core.getInput('ssh-known-hosts')
 | 
			
		||||
  result.sshStrict =
 | 
			
		||||
    (core.getInput('ssh-strict') || 'true').toUpperCase() === 'TRUE'
 | 
			
		||||
  result.sshUser = core.getInput('ssh-user')
 | 
			
		||||
 | 
			
		||||
  // Persist credentials
 | 
			
		||||
  result.persistCredentials =
 | 
			
		||||
 | 
			
		||||
@ -12,7 +12,8 @@ export function getFetchUrl(settings: IGitSourceSettings): string {
 | 
			
		||||
  const encodedOwner = encodeURIComponent(settings.repositoryOwner)
 | 
			
		||||
  const encodedName = encodeURIComponent(settings.repositoryName)
 | 
			
		||||
  if (settings.sshKey) {
 | 
			
		||||
    return `git@${serviceUrl.hostname}:${encodedOwner}/${encodedName}.git`
 | 
			
		||||
    const user = settings.sshUser.length > 0 ? settings.sshUser : 'git'
 | 
			
		||||
    return `${user}@${serviceUrl.hostname}:${encodedOwner}/${encodedName}.git`
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // "origin" is SCHEME://HOSTNAME[:PORT]
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user