mirror of
				https://github.com/actions/checkout.git
				synced 2025-10-31 22:08:09 +08:00 
			
		
		
		
	Compare commits
	
		
			6 Commits
		
	
	
		
			releases/v
			...
			v4.1.0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 8ade135a41 | ||
|  | c533a0a4cf | ||
|  | 72f2cec99f | ||
|  | 3df4ab11eb | ||
|  | 8b5e8b7687 | ||
|  | 97a652b800 | 
							
								
								
									
										4
									
								
								.github/workflows/check-dist.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/check-dist.yml
									
									
									
									
										vendored
									
									
								
							| @@ -24,10 +24,10 @@ jobs: | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|  | ||||
|       - name: Set Node.js 16.x | ||||
|       - name: Set Node.js 20.x | ||||
|         uses: actions/setup-node@v1 | ||||
|         with: | ||||
|           node-version: 16.x | ||||
|           node-version: 20.x | ||||
|  | ||||
|       - name: Install dependencies | ||||
|         run: npm ci | ||||
|   | ||||
							
								
								
									
										12
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							| @@ -13,7 +13,7 @@ jobs: | ||||
|     steps: | ||||
|       - uses: actions/setup-node@v1 | ||||
|         with: | ||||
|           node-version: 16.x | ||||
|           node-version: 20.x | ||||
|       - uses: actions/checkout@v3 | ||||
|       - run: npm ci | ||||
|       - run: npm run build | ||||
| @@ -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
									
								
								.github/workflows/update-main-version.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/update-main-version.yml
									
									
									
									
										vendored
									
									
								
							| @@ -11,6 +11,7 @@ on: | ||||
|         type: choice | ||||
|         description: The major version to update | ||||
|         options: | ||||
|           - v4 | ||||
|           - v3 | ||||
|           - v2 | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,12 @@ | ||||
| # 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) | ||||
|  | ||||
| ## v3.6.0 | ||||
| - [Fix: Mark test scripts with Bash'isms to be run via Bash](https://github.com/actions/checkout/pull/1377) | ||||
| - [Add option to fetch tags even if fetch-depth > 0](https://github.com/actions/checkout/pull/579) | ||||
|   | ||||
							
								
								
									
										49
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										49
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| [](https://github.com/actions/checkout/actions/workflows/test.yml) | ||||
|  | ||||
| # Checkout V3 | ||||
| # Checkout V4 | ||||
|  | ||||
| This action checks-out your repository under `$GITHUB_WORKSPACE`, so your workflow can access it. | ||||
|  | ||||
| @@ -12,14 +12,15 @@ 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 node16 runtime by default | ||||
|   - This requires a minimum [Actions Runner](https://github.com/actions/runner/releases/tag/v2.285.0) version of v2.285.0 to run, which is by default available in GHES 3.4 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 | ||||
|  | ||||
| <!-- start usage --> | ||||
| ```yaml | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
|   with: | ||||
|     # Repository name with owner. For example, actions/checkout | ||||
|     # Default: ${{ github.repository }} | ||||
| @@ -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: '' | ||||
|  | ||||
| @@ -91,6 +96,10 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl | ||||
|     # Default: false | ||||
|     fetch-tags: '' | ||||
|  | ||||
|     # Whether to show progress status output when fetching. | ||||
|     # Default: true | ||||
|     show-progress: '' | ||||
|  | ||||
|     # Whether to download Git-LFS files | ||||
|     # Default: false | ||||
|     lfs: '' | ||||
| @@ -135,7 +144,7 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl | ||||
| ## Fetch only the root files | ||||
|  | ||||
| ```yaml | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
|   with: | ||||
|     sparse-checkout: . | ||||
| ``` | ||||
| @@ -143,7 +152,7 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl | ||||
| ## Fetch only the root files and `.github` and `src` folder | ||||
|  | ||||
| ```yaml | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
|   with: | ||||
|     sparse-checkout: | | ||||
|       .github | ||||
| @@ -153,7 +162,7 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl | ||||
| ## Fetch only a single file | ||||
|  | ||||
| ```yaml | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
|   with: | ||||
|     sparse-checkout: | | ||||
|       README.md | ||||
| @@ -163,7 +172,7 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl | ||||
| ## Fetch all history for all tags and branches | ||||
|  | ||||
| ```yaml | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
|   with: | ||||
|     fetch-depth: 0 | ||||
| ``` | ||||
| @@ -171,7 +180,7 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl | ||||
| ## Checkout a different branch | ||||
|  | ||||
| ```yaml | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
|   with: | ||||
|     ref: my-branch | ||||
| ``` | ||||
| @@ -179,7 +188,7 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl | ||||
| ## Checkout HEAD^ | ||||
|  | ||||
| ```yaml | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
|   with: | ||||
|     fetch-depth: 2 | ||||
| - run: git checkout HEAD^ | ||||
| @@ -189,12 +198,12 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl | ||||
|  | ||||
| ```yaml | ||||
| - name: Checkout | ||||
|   uses: actions/checkout@v3 | ||||
|   uses: actions/checkout@v4 | ||||
|   with: | ||||
|     path: main | ||||
|  | ||||
| - name: Checkout tools repo | ||||
|   uses: actions/checkout@v3 | ||||
|   uses: actions/checkout@v4 | ||||
|   with: | ||||
|     repository: my-org/my-tools | ||||
|     path: my-tools | ||||
| @@ -205,10 +214,10 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl | ||||
|  | ||||
| ```yaml | ||||
| - name: Checkout | ||||
|   uses: actions/checkout@v3 | ||||
|   uses: actions/checkout@v4 | ||||
|  | ||||
| - name: Checkout tools repo | ||||
|   uses: actions/checkout@v3 | ||||
|   uses: actions/checkout@v4 | ||||
|   with: | ||||
|     repository: my-org/my-tools | ||||
|     path: my-tools | ||||
| @@ -219,12 +228,12 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl | ||||
|  | ||||
| ```yaml | ||||
| - name: Checkout | ||||
|   uses: actions/checkout@v3 | ||||
|   uses: actions/checkout@v4 | ||||
|   with: | ||||
|     path: main | ||||
|  | ||||
| - name: Checkout private tools | ||||
|   uses: actions/checkout@v3 | ||||
|   uses: actions/checkout@v4 | ||||
|   with: | ||||
|     repository: my-org/my-private-tools | ||||
|     token: ${{ secrets.GH_PAT }} # `GH_PAT` is a secret that contains your PAT | ||||
| @@ -237,7 +246,7 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl | ||||
| ## Checkout pull request HEAD commit instead of merge commit | ||||
|  | ||||
| ```yaml | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/checkout@v4 | ||||
|   with: | ||||
|     ref: ${{ github.event.pull_request.head.sha }} | ||||
| ``` | ||||
| @@ -253,7 +262,7 @@ jobs: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - uses: actions/checkout@v4 | ||||
| ``` | ||||
|  | ||||
| ## Push a commit using the built-in token | ||||
| @@ -264,7 +273,7 @@ jobs: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - uses: actions/checkout@v4 | ||||
|       - run: | | ||||
|           date > generated.txt | ||||
|           git config user.name github-actions | ||||
|   | ||||
| @@ -802,10 +802,12 @@ async function setup(testName: string): Promise<void> { | ||||
|     authToken: 'some auth token', | ||||
|     clean: true, | ||||
|     commit: '', | ||||
|     filter: undefined, | ||||
|     sparseCheckout: [], | ||||
|     sparseCheckoutConeMode: true, | ||||
|     fetchDepth: 1, | ||||
|     fetchTags: false, | ||||
|     showProgress: true, | ||||
|     lfs: false, | ||||
|     submodules: false, | ||||
|     nestedSubmodules: false, | ||||
|   | ||||
| @@ -135,7 +135,6 @@ describe('Test fetchDepth and fetchTags options', () => { | ||||
|         'protocol.version=2', | ||||
|         'fetch', | ||||
|         '--prune', | ||||
|         '--progress', | ||||
|         '--no-recurse-submodules', | ||||
|         '--filter=filterValue', | ||||
|         'origin', | ||||
| @@ -174,7 +173,6 @@ describe('Test fetchDepth and fetchTags options', () => { | ||||
|         'fetch', | ||||
|         '--no-tags', | ||||
|         '--prune', | ||||
|         '--progress', | ||||
|         '--no-recurse-submodules', | ||||
|         '--filter=filterValue', | ||||
|         'origin', | ||||
| @@ -213,7 +211,6 @@ describe('Test fetchDepth and fetchTags options', () => { | ||||
|         'fetch', | ||||
|         '--no-tags', | ||||
|         '--prune', | ||||
|         '--progress', | ||||
|         '--no-recurse-submodules', | ||||
|         '--filter=filterValue', | ||||
|         '--depth=1', | ||||
| @@ -252,7 +249,6 @@ describe('Test fetchDepth and fetchTags options', () => { | ||||
|         'protocol.version=2', | ||||
|         'fetch', | ||||
|         '--prune', | ||||
|         '--progress', | ||||
|         '--no-recurse-submodules', | ||||
|         '--filter=filterValue', | ||||
|         '--depth=1', | ||||
| @@ -263,4 +259,120 @@ describe('Test fetchDepth and fetchTags options', () => { | ||||
|       expect.any(Object) | ||||
|     ) | ||||
|   }) | ||||
|  | ||||
|   it('should call execGit with the correct arguments when showProgress is true', async () => { | ||||
|     jest.spyOn(exec, 'exec').mockImplementation(mockExec) | ||||
|  | ||||
|     const workingDirectory = 'test' | ||||
|     const lfs = false | ||||
|     const doSparseCheckout = false | ||||
|     git = await commandManager.createCommandManager( | ||||
|       workingDirectory, | ||||
|       lfs, | ||||
|       doSparseCheckout | ||||
|     ) | ||||
|     const refSpec = ['refspec1', 'refspec2'] | ||||
|     const options = { | ||||
|       filter: 'filterValue', | ||||
|       showProgress: true | ||||
|     } | ||||
|  | ||||
|     await git.fetch(refSpec, options) | ||||
|  | ||||
|     expect(mockExec).toHaveBeenCalledWith( | ||||
|       expect.any(String), | ||||
|       [ | ||||
|         '-c', | ||||
|         'protocol.version=2', | ||||
|         'fetch', | ||||
|         '--no-tags', | ||||
|         '--prune', | ||||
|         '--no-recurse-submodules', | ||||
|         '--progress', | ||||
|         '--filter=filterValue', | ||||
|         'origin', | ||||
|         'refspec1', | ||||
|         'refspec2' | ||||
|       ], | ||||
|       expect.any(Object) | ||||
|     ) | ||||
|   }) | ||||
|  | ||||
|   it('should call execGit with the correct arguments when fetchDepth is 42 and showProgress is true', async () => { | ||||
|     jest.spyOn(exec, 'exec').mockImplementation(mockExec) | ||||
|  | ||||
|     const workingDirectory = 'test' | ||||
|     const lfs = false | ||||
|     const doSparseCheckout = false | ||||
|     git = await commandManager.createCommandManager( | ||||
|       workingDirectory, | ||||
|       lfs, | ||||
|       doSparseCheckout | ||||
|     ) | ||||
|     const refSpec = ['refspec1', 'refspec2'] | ||||
|     const options = { | ||||
|       filter: 'filterValue', | ||||
|       fetchDepth: 42, | ||||
|       showProgress: true | ||||
|     } | ||||
|  | ||||
|     await git.fetch(refSpec, options) | ||||
|  | ||||
|     expect(mockExec).toHaveBeenCalledWith( | ||||
|       expect.any(String), | ||||
|       [ | ||||
|         '-c', | ||||
|         'protocol.version=2', | ||||
|         'fetch', | ||||
|         '--no-tags', | ||||
|         '--prune', | ||||
|         '--no-recurse-submodules', | ||||
|         '--progress', | ||||
|         '--filter=filterValue', | ||||
|         '--depth=42', | ||||
|         'origin', | ||||
|         'refspec1', | ||||
|         'refspec2' | ||||
|       ], | ||||
|       expect.any(Object) | ||||
|     ) | ||||
|   }) | ||||
|  | ||||
|   it('should call execGit with the correct arguments when fetchTags is true and showProgress is true', async () => { | ||||
|     jest.spyOn(exec, 'exec').mockImplementation(mockExec) | ||||
|  | ||||
|     const workingDirectory = 'test' | ||||
|     const lfs = false | ||||
|     const doSparseCheckout = false | ||||
|     git = await commandManager.createCommandManager( | ||||
|       workingDirectory, | ||||
|       lfs, | ||||
|       doSparseCheckout | ||||
|     ) | ||||
|     const refSpec = ['refspec1', 'refspec2'] | ||||
|     const options = { | ||||
|       filter: 'filterValue', | ||||
|       fetchTags: true, | ||||
|       showProgress: true | ||||
|     } | ||||
|  | ||||
|     await git.fetch(refSpec, options) | ||||
|  | ||||
|     expect(mockExec).toHaveBeenCalledWith( | ||||
|       expect.any(String), | ||||
|       [ | ||||
|         '-c', | ||||
|         'protocol.version=2', | ||||
|         'fetch', | ||||
|         '--prune', | ||||
|         '--no-recurse-submodules', | ||||
|         '--progress', | ||||
|         '--filter=filterValue', | ||||
|         'origin', | ||||
|         'refspec1', | ||||
|         'refspec2' | ||||
|       ], | ||||
|       expect.any(Object) | ||||
|     ) | ||||
|   }) | ||||
| }) | ||||
|   | ||||
| @@ -79,10 +79,12 @@ 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) | ||||
|     expect(settings.fetchTags).toBe(false) | ||||
|     expect(settings.showProgress).toBe(true) | ||||
|     expect(settings.lfs).toBe(false) | ||||
|     expect(settings.ref).toBe('refs/heads/some-ref') | ||||
|     expect(settings.repositoryName).toBe('some-repo') | ||||
|   | ||||
							
								
								
									
										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 | ||||
							
								
								
									
										12
									
								
								action.yml
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								action.yml
									
									
									
									
									
								
							| @@ -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: > | ||||
| @@ -68,6 +73,9 @@ inputs: | ||||
|   fetch-tags: | ||||
|     description: 'Whether to fetch tags, even if fetch-depth > 0.' | ||||
|     default: false | ||||
|   show-progress: | ||||
|     description: 'Whether to show progress status output when fetching.' | ||||
|     default: true | ||||
|   lfs: | ||||
|     description: 'Whether to download Git-LFS files' | ||||
|     default: false | ||||
| @@ -87,6 +95,6 @@ inputs: | ||||
|     description: The base URL for the GitHub instance that you are trying to clone from, will use environment defaults to fetch from the same instance that the workflow is running from unless specified. Example URLs are https://github.com or https://my-ghes-server.example.com | ||||
|     required: false | ||||
| runs: | ||||
|   using: node16 | ||||
|   using: node20 | ||||
|   main: dist/index.js | ||||
|   post: dist/index.js | ||||
|   | ||||
							
								
								
									
										21
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -640,7 +640,10 @@ class GitCommandManager { | ||||
|             if (!refSpec.some(x => x === refHelper.tagsRefSpec) && !options.fetchTags) { | ||||
|                 args.push('--no-tags'); | ||||
|             } | ||||
|             args.push('--prune', '--progress', '--no-recurse-submodules'); | ||||
|             args.push('--prune', '--no-recurse-submodules'); | ||||
|             if (options.showProgress) { | ||||
|                 args.push('--progress'); | ||||
|             } | ||||
|             if (options.filter) { | ||||
|                 args.push(`--filter=${options.filter}`); | ||||
|             } | ||||
| @@ -1241,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); | ||||
| @@ -1720,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) { | ||||
| @@ -1739,6 +1752,10 @@ function getInputs() { | ||||
|         result.fetchTags = | ||||
|             (core.getInput('fetch-tags') || 'false').toUpperCase() === 'TRUE'; | ||||
|         core.debug(`fetch tags = ${result.fetchTags}`); | ||||
|         // Show fetch progress | ||||
|         result.showProgress = | ||||
|             (core.getInput('show-progress') || 'true').toUpperCase() === 'TRUE'; | ||||
|         core.debug(`show progress = ${result.showProgress}`); | ||||
|         // LFS | ||||
|         result.lfs = (core.getInput('lfs') || 'false').toUpperCase() === 'TRUE'; | ||||
|         core.debug(`lfs = ${result.lfs}`); | ||||
|   | ||||
							
								
								
									
										15919
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										15919
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "checkout", | ||||
|   "version": "3.6.0", | ||||
|   "version": "4.1.0", | ||||
|   "description": "checkout action", | ||||
|   "main": "lib/main.js", | ||||
|   "scripts": { | ||||
| @@ -37,7 +37,7 @@ | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@types/jest": "^27.0.2", | ||||
|     "@types/node": "^12.7.12", | ||||
|     "@types/node": "^20.5.3", | ||||
|     "@types/uuid": "^3.4.6", | ||||
|     "@typescript-eslint/eslint-plugin": "^5.45.0", | ||||
|     "@typescript-eslint/parser": "^5.45.0", | ||||
|   | ||||
| @@ -34,6 +34,7 @@ export interface IGitCommandManager { | ||||
|       filter?: string | ||||
|       fetchDepth?: number | ||||
|       fetchTags?: boolean | ||||
|       showProgress?: boolean | ||||
|     } | ||||
|   ): Promise<void> | ||||
|   getDefaultBranch(repositoryUrl: string): Promise<string> | ||||
| @@ -241,14 +242,22 @@ class GitCommandManager { | ||||
|  | ||||
|   async fetch( | ||||
|     refSpec: string[], | ||||
|     options: {filter?: string; fetchDepth?: number; fetchTags?: boolean} | ||||
|     options: { | ||||
|       filter?: string | ||||
|       fetchDepth?: number | ||||
|       fetchTags?: boolean | ||||
|       showProgress?: boolean | ||||
|     } | ||||
|   ): Promise<void> { | ||||
|     const args = ['-c', 'protocol.version=2', 'fetch'] | ||||
|     if (!refSpec.some(x => x === refHelper.tagsRefSpec) && !options.fetchTags) { | ||||
|       args.push('--no-tags') | ||||
|     } | ||||
|  | ||||
|     args.push('--prune', '--progress', '--no-recurse-submodules') | ||||
|     args.push('--prune', '--no-recurse-submodules') | ||||
|     if (options.showProgress) { | ||||
|       args.push('--progress') | ||||
|     } | ||||
|  | ||||
|     if (options.filter) { | ||||
|       args.push(`--filter=${options.filter}`) | ||||
|   | ||||
| @@ -157,8 +157,15 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> { | ||||
|       filter?: string | ||||
|       fetchDepth?: number | ||||
|       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 | ||||
|    */ | ||||
| @@ -49,6 +54,11 @@ export interface IGitSourceSettings { | ||||
|    */ | ||||
|   fetchTags: boolean | ||||
|  | ||||
|   /** | ||||
|    * Indicates whether to use the --progress option when fetching | ||||
|    */ | ||||
|   showProgress: boolean | ||||
|  | ||||
|   /** | ||||
|    * Indicates whether to fetch LFS objects | ||||
|    */ | ||||
|   | ||||
| @@ -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) { | ||||
| @@ -105,6 +113,11 @@ export async function getInputs(): Promise<IGitSourceSettings> { | ||||
|     (core.getInput('fetch-tags') || 'false').toUpperCase() === 'TRUE' | ||||
|   core.debug(`fetch tags = ${result.fetchTags}`) | ||||
|  | ||||
|   // Show fetch progress | ||||
|   result.showProgress = | ||||
|     (core.getInput('show-progress') || 'true').toUpperCase() === 'TRUE' | ||||
|   core.debug(`show progress = ${result.showProgress}`) | ||||
|  | ||||
|   // LFS | ||||
|   result.lfs = (core.getInput('lfs') || 'false').toUpperCase() === 'TRUE' | ||||
|   core.debug(`lfs = ${result.lfs}`) | ||||
|   | ||||
| @@ -120,7 +120,7 @@ function updateUsage( | ||||
| } | ||||
|  | ||||
| updateUsage( | ||||
|   'actions/checkout@v3', | ||||
|   'actions/checkout@v4', | ||||
|   path.join(__dirname, '..', '..', 'action.yml'), | ||||
|   path.join(__dirname, '..', '..', 'README.md') | ||||
| ) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user