mirror of
				https://github.com/actions/checkout.git
				synced 2025-10-30 23:10:31 +00:00 
			
		
		
		
	Compare commits
	
		
			3 Commits
		
	
	
		
			releases/v
			...
			v4.1.0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 8ade135a41 | ||
|  | c533a0a4cf | ||
|  | 72f2cec99f | 
							
								
								
									
										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) | ||||
|   | ||||
							
								
								
									
										11
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								README.md
									
									
									
									
									
								
							| @@ -12,8 +12,9 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl | ||||
|  | ||||
| # What's new | ||||
|  | ||||
| - Updated to the node20 runtime by default | ||||
|   - 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. | ||||
| - 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 | ||||
|  | ||||
| # Usage | ||||
|  | ||||
| @@ -74,8 +75,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