mirror of
				https://github.com/actions/checkout.git
				synced 2025-11-03 07:18:09 +08:00 
			
		
		
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			test-show-
			...
			v4.1.1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					b4ffde65f4 | ||
| 
						 | 
					8530928916 | ||
| 
						 | 
					7cdaf2fbc0 | ||
| 
						 | 
					8ade135a41 | ||
| 
						 | 
					c533a0a4cf | 
							
								
								
									
										10
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							@@ -72,6 +72,16 @@ jobs:
 | 
			
		||||
        shell: bash
 | 
			
		||||
        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
 | 
			
		||||
      - name: Sparse checkout
 | 
			
		||||
        uses: ./
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,8 @@
 | 
			
		||||
# Changelog
 | 
			
		||||
 | 
			
		||||
## v4.1.0
 | 
			
		||||
- [Add support for partial checkout filters](https://github.com/actions/checkout/pull/1396)
 | 
			
		||||
 | 
			
		||||
## v4.0.0
 | 
			
		||||
- [Support fetching without the --progress option](https://github.com/actions/checkout/pull/1067)
 | 
			
		||||
- [Update to node20](https://github.com/actions/checkout/pull/1436)
 | 
			
		||||
 
 | 
			
		||||
@@ -1 +1 @@
 | 
			
		||||
* @actions/actions-runtime
 | 
			
		||||
* @actions/actions-launch
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								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
 | 
			
		||||
 | 
			
		||||
@@ -75,8 +73,12 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
 | 
			
		||||
    # Default: true
 | 
			
		||||
    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
 | 
			
		||||
    # new lines
 | 
			
		||||
    # new lines.
 | 
			
		||||
    # Default: null
 | 
			
		||||
    sparse-checkout: ''
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -802,6 +802,7 @@ async function setup(testName: string): Promise<void> {
 | 
			
		||||
    authToken: 'some auth token',
 | 
			
		||||
    clean: true,
 | 
			
		||||
    commit: '',
 | 
			
		||||
    filter: undefined,
 | 
			
		||||
    sparseCheckout: [],
 | 
			
		||||
    sparseCheckoutConeMode: true,
 | 
			
		||||
    fetchDepth: 1,
 | 
			
		||||
 
 | 
			
		||||
@@ -79,6 +79,7 @@ describe('input-helper tests', () => {
 | 
			
		||||
    expect(settings.clean).toBe(true)
 | 
			
		||||
    expect(settings.commit).toBeTruthy()
 | 
			
		||||
    expect(settings.commit).toBe('1234567890123456789012345678901234567890')
 | 
			
		||||
    expect(settings.filter).toBe(undefined)
 | 
			
		||||
    expect(settings.sparseCheckout).toBe(undefined)
 | 
			
		||||
    expect(settings.sparseCheckoutConeMode).toBe(true)
 | 
			
		||||
    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:
 | 
			
		||||
    description: 'Whether to execute `git clean -ffdx && git reset --hard HEAD` before fetching'
 | 
			
		||||
    default: true
 | 
			
		||||
  filter:
 | 
			
		||||
    description: >
 | 
			
		||||
      Partially clone against a given filter.
 | 
			
		||||
      Overrides sparse-checkout if set.
 | 
			
		||||
    default: null
 | 
			
		||||
  sparse-checkout:
 | 
			
		||||
    description: >
 | 
			
		||||
      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
 | 
			
		||||
  sparse-checkout-cone-mode:
 | 
			
		||||
    description: >
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							@@ -1244,8 +1244,12 @@ function getSource(settings) {
 | 
			
		||||
            // Fetch
 | 
			
		||||
            core.startGroup('Fetching the repository');
 | 
			
		||||
            const fetchOptions = {};
 | 
			
		||||
            if (settings.sparseCheckout)
 | 
			
		||||
            if (settings.filter) {
 | 
			
		||||
                fetchOptions.filter = settings.filter;
 | 
			
		||||
            }
 | 
			
		||||
            else if (settings.sparseCheckout) {
 | 
			
		||||
                fetchOptions.filter = 'blob:none';
 | 
			
		||||
            }
 | 
			
		||||
            if (settings.fetchDepth <= 0) {
 | 
			
		||||
                // Fetch all branches and tags
 | 
			
		||||
                let refSpec = refHelper.getRefSpecForAllHistory(settings.ref, settings.commit);
 | 
			
		||||
@@ -1723,6 +1727,12 @@ function getInputs() {
 | 
			
		||||
        // Clean
 | 
			
		||||
        result.clean = (core.getInput('clean') || 'true').toUpperCase() === 'TRUE';
 | 
			
		||||
        core.debug(`clean = ${result.clean}`);
 | 
			
		||||
        // Filter
 | 
			
		||||
        const filter = core.getInput('filter');
 | 
			
		||||
        if (filter) {
 | 
			
		||||
            result.filter = filter;
 | 
			
		||||
        }
 | 
			
		||||
        core.debug(`filter = ${result.filter}`);
 | 
			
		||||
        // Sparse checkout
 | 
			
		||||
        const sparseCheckout = core.getMultilineInput('sparse-checkout');
 | 
			
		||||
        if (sparseCheckout.length) {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -1,12 +1,12 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "checkout",
 | 
			
		||||
  "version": "4.0.0",
 | 
			
		||||
  "version": "4.1.0",
 | 
			
		||||
  "lockfileVersion": 2,
 | 
			
		||||
  "requires": true,
 | 
			
		||||
  "packages": {
 | 
			
		||||
    "": {
 | 
			
		||||
      "name": "checkout",
 | 
			
		||||
      "version": "4.0.0",
 | 
			
		||||
      "version": "4.1.0",
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@actions/core": "^1.10.0",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "checkout",
 | 
			
		||||
  "version": "4.0.0",
 | 
			
		||||
  "version": "4.1.0",
 | 
			
		||||
  "description": "checkout action",
 | 
			
		||||
  "main": "lib/main.js",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
 
 | 
			
		||||
@@ -159,7 +159,13 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
 | 
			
		||||
      fetchTags?: 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) {
 | 
			
		||||
      // Fetch all branches and tags
 | 
			
		||||
      let refSpec = refHelper.getRefSpecForAllHistory(
 | 
			
		||||
 
 | 
			
		||||
@@ -29,6 +29,11 @@ export interface IGitSourceSettings {
 | 
			
		||||
   */
 | 
			
		||||
  clean: boolean
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * The filter determining which objects to include
 | 
			
		||||
   */
 | 
			
		||||
  filter: string | undefined
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * 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'
 | 
			
		||||
  core.debug(`clean = ${result.clean}`)
 | 
			
		||||
 | 
			
		||||
  // Filter
 | 
			
		||||
  const filter = core.getInput('filter')
 | 
			
		||||
  if (filter) {
 | 
			
		||||
    result.filter = filter
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  core.debug(`filter = ${result.filter}`)
 | 
			
		||||
 | 
			
		||||
  // Sparse checkout
 | 
			
		||||
  const sparseCheckout = core.getMultilineInput('sparse-checkout')
 | 
			
		||||
  if (sparseCheckout.length) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user