Compare commits
	
		
			6 Commits
		
	
	
		
			releases/v
			...
			v4.1.1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					b4ffde65f4 | ||
| 
						 | 
					8530928916 | ||
| 
						 | 
					7cdaf2fbc0 | ||
| 
						 | 
					8ade135a41 | ||
| 
						 | 
					c533a0a4cf | ||
| 
						 | 
					72f2cec99f | 
							
								
								
									
										10
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							@@ -72,6 +72,16 @@ jobs:
 | 
				
			|||||||
        shell: bash
 | 
					        shell: bash
 | 
				
			||||||
        run: __test__/verify-side-by-side.sh
 | 
					        run: __test__/verify-side-by-side.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Filter
 | 
				
			||||||
 | 
					      - name: Fetch filter
 | 
				
			||||||
 | 
					        uses: ./
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          filter: 'blob:none'
 | 
				
			||||||
 | 
					          path: fetch-filter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Verify fetch filter
 | 
				
			||||||
 | 
					        run: __test__/verify-fetch-filter.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      # Sparse checkout
 | 
					      # Sparse checkout
 | 
				
			||||||
      - name: Sparse checkout
 | 
					      - name: Sparse checkout
 | 
				
			||||||
        uses: ./
 | 
					        uses: ./
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,8 @@
 | 
				
			|||||||
# Changelog
 | 
					# Changelog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## v4.1.0
 | 
				
			||||||
 | 
					- [Add support for partial checkout filters](https://github.com/actions/checkout/pull/1396)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v4.0.0
 | 
					## v4.0.0
 | 
				
			||||||
- [Support fetching without the --progress option](https://github.com/actions/checkout/pull/1067)
 | 
					- [Support fetching without the --progress option](https://github.com/actions/checkout/pull/1067)
 | 
				
			||||||
- [Update to node20](https://github.com/actions/checkout/pull/1436)
 | 
					- [Update to node20](https://github.com/actions/checkout/pull/1436)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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.
 | 
					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.
 | 
					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,8 +12,7 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# What's new
 | 
					# What's new
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Updated to the node20 runtime by default
 | 
					Please refer to the [release page](https://github.com/actions/checkout/releases/latest) for the latest release notes.
 | 
				
			||||||
  - This requires a minimum [Actions Runner](https://github.com/actions/runner/releases/tag/v2.285.0) version of v2.308.0 to run, which is by default available in GHES 3.11 or later.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Usage
 | 
					# Usage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -74,8 +73,12 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
 | 
				
			|||||||
    # Default: true
 | 
					    # Default: true
 | 
				
			||||||
    clean: ''
 | 
					    clean: ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Partially clone against a given filter. Overrides sparse-checkout if set.
 | 
				
			||||||
 | 
					    # Default: null
 | 
				
			||||||
 | 
					    filter: ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Do a sparse checkout on given patterns. Each pattern should be separated with
 | 
					    # Do a sparse checkout on given patterns. Each pattern should be separated with
 | 
				
			||||||
    # new lines
 | 
					    # new lines.
 | 
				
			||||||
    # Default: null
 | 
					    # Default: null
 | 
				
			||||||
    sparse-checkout: ''
 | 
					    sparse-checkout: ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -802,6 +802,7 @@ async function setup(testName: string): Promise<void> {
 | 
				
			|||||||
    authToken: 'some auth token',
 | 
					    authToken: 'some auth token',
 | 
				
			||||||
    clean: true,
 | 
					    clean: true,
 | 
				
			||||||
    commit: '',
 | 
					    commit: '',
 | 
				
			||||||
 | 
					    filter: undefined,
 | 
				
			||||||
    sparseCheckout: [],
 | 
					    sparseCheckout: [],
 | 
				
			||||||
    sparseCheckoutConeMode: true,
 | 
					    sparseCheckoutConeMode: true,
 | 
				
			||||||
    fetchDepth: 1,
 | 
					    fetchDepth: 1,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -79,6 +79,7 @@ describe('input-helper tests', () => {
 | 
				
			|||||||
    expect(settings.clean).toBe(true)
 | 
					    expect(settings.clean).toBe(true)
 | 
				
			||||||
    expect(settings.commit).toBeTruthy()
 | 
					    expect(settings.commit).toBeTruthy()
 | 
				
			||||||
    expect(settings.commit).toBe('1234567890123456789012345678901234567890')
 | 
					    expect(settings.commit).toBe('1234567890123456789012345678901234567890')
 | 
				
			||||||
 | 
					    expect(settings.filter).toBe(undefined)
 | 
				
			||||||
    expect(settings.sparseCheckout).toBe(undefined)
 | 
					    expect(settings.sparseCheckout).toBe(undefined)
 | 
				
			||||||
    expect(settings.sparseCheckoutConeMode).toBe(true)
 | 
					    expect(settings.sparseCheckoutConeMode).toBe(true)
 | 
				
			||||||
    expect(settings.fetchDepth).toBe(1)
 | 
					    expect(settings.fetchDepth).toBe(1)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										16
									
								
								__test__/verify-fetch-filter.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										16
									
								
								__test__/verify-fetch-filter.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Verify .git folder
 | 
				
			||||||
 | 
					if [ ! -d "./fetch-filter/.git" ]; then
 | 
				
			||||||
 | 
					  echo "Expected ./fetch-filter/.git folder to exist"
 | 
				
			||||||
 | 
					  exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Verify .git/config contains partialclonefilter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CLONE_FILTER=$(git -C fetch-filter config --local --get remote.origin.partialclonefilter)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ "$CLONE_FILTER" != "blob:none" ]; then
 | 
				
			||||||
 | 
					  echo "Expected ./fetch-filter/.git/config to have 'remote.origin.partialclonefilter' set to 'blob:none'"
 | 
				
			||||||
 | 
					  exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
@@ -53,10 +53,15 @@ inputs:
 | 
				
			|||||||
  clean:
 | 
					  clean:
 | 
				
			||||||
    description: 'Whether to execute `git clean -ffdx && git reset --hard HEAD` before fetching'
 | 
					    description: 'Whether to execute `git clean -ffdx && git reset --hard HEAD` before fetching'
 | 
				
			||||||
    default: true
 | 
					    default: true
 | 
				
			||||||
 | 
					  filter:
 | 
				
			||||||
 | 
					    description: >
 | 
				
			||||||
 | 
					      Partially clone against a given filter.
 | 
				
			||||||
 | 
					      Overrides sparse-checkout if set.
 | 
				
			||||||
 | 
					    default: null
 | 
				
			||||||
  sparse-checkout:
 | 
					  sparse-checkout:
 | 
				
			||||||
    description: >
 | 
					    description: >
 | 
				
			||||||
      Do a sparse checkout on given patterns.
 | 
					      Do a sparse checkout on given patterns.
 | 
				
			||||||
      Each pattern should be separated with new lines
 | 
					      Each pattern should be separated with new lines.
 | 
				
			||||||
    default: null
 | 
					    default: null
 | 
				
			||||||
  sparse-checkout-cone-mode:
 | 
					  sparse-checkout-cone-mode:
 | 
				
			||||||
    description: >
 | 
					    description: >
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										12
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							@@ -1244,8 +1244,12 @@ function getSource(settings) {
 | 
				
			|||||||
            // Fetch
 | 
					            // Fetch
 | 
				
			||||||
            core.startGroup('Fetching the repository');
 | 
					            core.startGroup('Fetching the repository');
 | 
				
			||||||
            const fetchOptions = {};
 | 
					            const fetchOptions = {};
 | 
				
			||||||
            if (settings.sparseCheckout)
 | 
					            if (settings.filter) {
 | 
				
			||||||
 | 
					                fetchOptions.filter = settings.filter;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else if (settings.sparseCheckout) {
 | 
				
			||||||
                fetchOptions.filter = 'blob:none';
 | 
					                fetchOptions.filter = 'blob:none';
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            if (settings.fetchDepth <= 0) {
 | 
					            if (settings.fetchDepth <= 0) {
 | 
				
			||||||
                // Fetch all branches and tags
 | 
					                // Fetch all branches and tags
 | 
				
			||||||
                let refSpec = refHelper.getRefSpecForAllHistory(settings.ref, settings.commit);
 | 
					                let refSpec = refHelper.getRefSpecForAllHistory(settings.ref, settings.commit);
 | 
				
			||||||
@@ -1723,6 +1727,12 @@ function getInputs() {
 | 
				
			|||||||
        // Clean
 | 
					        // Clean
 | 
				
			||||||
        result.clean = (core.getInput('clean') || 'true').toUpperCase() === 'TRUE';
 | 
					        result.clean = (core.getInput('clean') || 'true').toUpperCase() === 'TRUE';
 | 
				
			||||||
        core.debug(`clean = ${result.clean}`);
 | 
					        core.debug(`clean = ${result.clean}`);
 | 
				
			||||||
 | 
					        // Filter
 | 
				
			||||||
 | 
					        const filter = core.getInput('filter');
 | 
				
			||||||
 | 
					        if (filter) {
 | 
				
			||||||
 | 
					            result.filter = filter;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        core.debug(`filter = ${result.filter}`);
 | 
				
			||||||
        // Sparse checkout
 | 
					        // Sparse checkout
 | 
				
			||||||
        const sparseCheckout = core.getMultilineInput('sparse-checkout');
 | 
					        const sparseCheckout = core.getMultilineInput('sparse-checkout');
 | 
				
			||||||
        if (sparseCheckout.length) {
 | 
					        if (sparseCheckout.length) {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -1,12 +1,12 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "checkout",
 | 
					  "name": "checkout",
 | 
				
			||||||
  "version": "4.0.0",
 | 
					  "version": "4.1.0",
 | 
				
			||||||
  "lockfileVersion": 2,
 | 
					  "lockfileVersion": 2,
 | 
				
			||||||
  "requires": true,
 | 
					  "requires": true,
 | 
				
			||||||
  "packages": {
 | 
					  "packages": {
 | 
				
			||||||
    "": {
 | 
					    "": {
 | 
				
			||||||
      "name": "checkout",
 | 
					      "name": "checkout",
 | 
				
			||||||
      "version": "4.0.0",
 | 
					      "version": "4.1.0",
 | 
				
			||||||
      "license": "MIT",
 | 
					      "license": "MIT",
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "@actions/core": "^1.10.0",
 | 
					        "@actions/core": "^1.10.0",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "checkout",
 | 
					  "name": "checkout",
 | 
				
			||||||
  "version": "4.0.0",
 | 
					  "version": "4.1.0",
 | 
				
			||||||
  "description": "checkout action",
 | 
					  "description": "checkout action",
 | 
				
			||||||
  "main": "lib/main.js",
 | 
					  "main": "lib/main.js",
 | 
				
			||||||
  "scripts": {
 | 
					  "scripts": {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -159,7 +159,13 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
 | 
				
			|||||||
      fetchTags?: boolean
 | 
					      fetchTags?: boolean
 | 
				
			||||||
      showProgress?: boolean
 | 
					      showProgress?: boolean
 | 
				
			||||||
    } = {}
 | 
					    } = {}
 | 
				
			||||||
    if (settings.sparseCheckout) fetchOptions.filter = 'blob:none'
 | 
					
 | 
				
			||||||
 | 
					    if (settings.filter) {
 | 
				
			||||||
 | 
					      fetchOptions.filter = settings.filter
 | 
				
			||||||
 | 
					    } else if (settings.sparseCheckout) {
 | 
				
			||||||
 | 
					      fetchOptions.filter = 'blob:none'
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (settings.fetchDepth <= 0) {
 | 
					    if (settings.fetchDepth <= 0) {
 | 
				
			||||||
      // Fetch all branches and tags
 | 
					      // Fetch all branches and tags
 | 
				
			||||||
      let refSpec = refHelper.getRefSpecForAllHistory(
 | 
					      let refSpec = refHelper.getRefSpecForAllHistory(
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,6 +29,11 @@ export interface IGitSourceSettings {
 | 
				
			|||||||
   */
 | 
					   */
 | 
				
			||||||
  clean: boolean
 | 
					  clean: boolean
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * The filter determining which objects to include
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  filter: string | undefined
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * The array of folders to make the sparse checkout
 | 
					   * The array of folders to make the sparse checkout
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -82,6 +82,14 @@ export async function getInputs(): Promise<IGitSourceSettings> {
 | 
				
			|||||||
  result.clean = (core.getInput('clean') || 'true').toUpperCase() === 'TRUE'
 | 
					  result.clean = (core.getInput('clean') || 'true').toUpperCase() === 'TRUE'
 | 
				
			||||||
  core.debug(`clean = ${result.clean}`)
 | 
					  core.debug(`clean = ${result.clean}`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Filter
 | 
				
			||||||
 | 
					  const filter = core.getInput('filter')
 | 
				
			||||||
 | 
					  if (filter) {
 | 
				
			||||||
 | 
					    result.filter = filter
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  core.debug(`filter = ${result.filter}`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Sparse checkout
 | 
					  // Sparse checkout
 | 
				
			||||||
  const sparseCheckout = core.getMultilineInput('sparse-checkout')
 | 
					  const sparseCheckout = core.getMultilineInput('sparse-checkout')
 | 
				
			||||||
  if (sparseCheckout.length) {
 | 
					  if (sparseCheckout.length) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user