mirror of
				https://github.com/actions/checkout.git
				synced 2025-10-31 10:08:37 +08:00 
			
		
		
		
	Allow configuration of fetch.parallel (#2)
This commit is contained in:
		
							parent
							
								
									edc3278d02
								
							
						
					
					
						commit
						4475b1ceed
					
				
							
								
								
									
										2
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							|  | @ -157,7 +157,7 @@ jobs: | |||
|           ref: test-data/v2/submodule-ssh-url | ||||
|           path: submodules-true | ||||
|           submodules: recursive | ||||
|           submodulesFetchJobs: "10" | ||||
|           submodules-fetch-jobs: "10" | ||||
|       - name: Verify submodules true | ||||
|         run: __test__/verify-submodules-with-jobs.sh | ||||
| 
 | ||||
|  |  | |||
|  | @ -94,6 +94,12 @@ Please refer to the [release page](https://github.com/actions/checkout/releases/ | |||
|     # Default: false | ||||
|     fetch-tags: '' | ||||
| 
 | ||||
|     # Specifies the maximal number of fetch operations to be run in parallel at a time | ||||
|     # (submodules, or remotes when the --multiple option of git-fetch is in effect). A | ||||
|     # value of 0 will give some reasonable default. If unset, it defaults to 1. | ||||
|     # Default: 1 | ||||
|     fetch-parallel: '' | ||||
| 
 | ||||
|     # Whether to show progress status output when fetching. | ||||
|     # Default: true | ||||
|     show-progress: '' | ||||
|  | @ -115,7 +121,7 @@ Please refer to the [release page](https://github.com/actions/checkout/releases/ | |||
|     # integer allows up to that number of submodules fetched in parallel. A value of 0 | ||||
|     # will give some reasonable default. If unset, it defaults to 1. | ||||
|     # Default: 1 | ||||
|     submodulesFetchJobs: '' | ||||
|     submodules-fetch-jobs: '' | ||||
| 
 | ||||
|     # Add repository path as safe.directory for Git global config by running `git | ||||
|     # config --global --add safe.directory <path>` | ||||
|  |  | |||
|  | @ -807,11 +807,12 @@ async function setup(testName: string): Promise<void> { | |||
|     sparseCheckoutConeMode: true, | ||||
|     fetchDepth: 1, | ||||
|     fetchTags: false, | ||||
|     fetchParallel: 1, | ||||
|     showProgress: true, | ||||
|     lfs: false, | ||||
|     submodules: false, | ||||
|     nestedSubmodules: false, | ||||
|     submodulesFetchJobs: '1', | ||||
|     submodulesFetchJobs: 1, | ||||
|     persistCredentials: true, | ||||
|     ref: 'refs/heads/main', | ||||
|     repositoryName: 'my-repo', | ||||
|  |  | |||
|  | @ -73,6 +73,11 @@ inputs: | |||
|   fetch-tags: | ||||
|     description: 'Whether to fetch tags, even if fetch-depth > 0.' | ||||
|     default: false | ||||
|   fetch-parallel: | ||||
|     description: > | ||||
|       Specifies the maximal number of fetch operations to be run in parallel at a time (submodules, or remotes when the --multiple option of git-fetch is in effect). | ||||
|       A value of 0 will give some reasonable default. If unset, it defaults to 1. | ||||
|     default: 1 | ||||
|   show-progress: | ||||
|     description: 'Whether to show progress status output when fetching.' | ||||
|     default: true | ||||
|  | @ -88,7 +93,7 @@ inputs: | |||
|       When the `ssh-key` input is not provided, SSH URLs beginning with `git@github.com:` are | ||||
|       converted to HTTPS. | ||||
|     default: false | ||||
|   submodulesFetchJobs: | ||||
|   submodules-fetch-jobs: | ||||
|     description: > | ||||
|       Specifies how many submodules are fetched/cloned at the same time. A positive integer allows up to that number of submodules fetched in parallel. A value of 0 will give some reasonable default. If unset, it defaults to 1. | ||||
|     default: 1 | ||||
|  |  | |||
							
								
								
									
										20
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							|  | @ -1243,6 +1243,7 @@ function getSource(settings) { | |||
|             } | ||||
|             // Fetch
 | ||||
|             core.startGroup('Fetching the repository'); | ||||
|             yield git.config('fetch.parallel', settings.fetchParallel.toString(), true); | ||||
|             const fetchOptions = {}; | ||||
|             if (settings.filter) { | ||||
|                 fetchOptions.filter = settings.filter; | ||||
|  | @ -1304,7 +1305,7 @@ function getSource(settings) { | |||
|                 core.endGroup(); | ||||
|                 // Checkout submodules
 | ||||
|                 core.startGroup('Fetching submodules'); | ||||
|                 yield git.config('submodule.fetchJobs', settings.submodulesFetchJobs); | ||||
|                 yield git.config('submodule.fetchJobs', settings.submodulesFetchJobs.toString(), true); | ||||
|                 yield git.submoduleSync(settings.nestedSubmodules); | ||||
|                 yield git.submoduleUpdate(settings.fetchDepth, settings.nestedSubmodules); | ||||
|                 yield git.submoduleForeach('git config --local gc.auto 0', settings.nestedSubmodules); | ||||
|  | @ -1753,6 +1754,12 @@ function getInputs() { | |||
|         result.fetchTags = | ||||
|             (core.getInput('fetch-tags') || 'false').toUpperCase() === 'TRUE'; | ||||
|         core.debug(`fetch tags = ${result.fetchTags}`); | ||||
|         // Fetch tags
 | ||||
|         result.fetchParallel = Math.floor(Number(core.getInput('fetch-parallel') || '1')); | ||||
|         if (isNaN(result.fetchParallel) || result.fetchParallel < 0) { | ||||
|             result.fetchParallel = 0; | ||||
|         } | ||||
|         core.debug(`fetch parallel = ${result.fetchParallel}`); | ||||
|         // Show fetch progress
 | ||||
|         result.showProgress = | ||||
|             (core.getInput('show-progress') || 'true').toUpperCase() === 'TRUE'; | ||||
|  | @ -1771,12 +1778,17 @@ function getInputs() { | |||
|         else if (submodulesString == 'TRUE') { | ||||
|             result.submodules = true; | ||||
|         } | ||||
|         result.submodulesFetchJobs = core.getInput('submodulesFetchJobs') || '1'; | ||||
|         result.submodulesFetchJobs = Math.floor(Number(core.getInput('submodules-fetch-jobs') || '1')); | ||||
|         if (isNaN(result.submodulesFetchJobs) || result.submodulesFetchJobs < 0) { | ||||
|             result.submodulesFetchJobs = 0; | ||||
|         } | ||||
|         core.debug(`submodules = ${result.submodules}`); | ||||
|         core.debug(`recursive submodules = ${result.nestedSubmodules}`); | ||||
|         core.debug(`submodules fetchJobs= ${result.submodulesFetchJobs}`); | ||||
|         core.debug(`submodules submodules-fetch-jobs = ${result.submodulesFetchJobs}`); | ||||
|         // Auth token
 | ||||
|         result.authToken = core.getInput('token', { required: true }); | ||||
|         result.authToken = core.getInput('token', { | ||||
|             required: true | ||||
|         }); | ||||
|         // SSH
 | ||||
|         result.sshKey = core.getInput('ssh-key'); | ||||
|         result.sshKnownHosts = core.getInput('ssh-known-hosts'); | ||||
|  |  | |||
|  | @ -153,6 +153,7 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> { | |||
| 
 | ||||
|     // Fetch
 | ||||
|     core.startGroup('Fetching the repository') | ||||
|     await git.config('fetch.parallel', settings.fetchParallel.toString(), true) | ||||
|     const fetchOptions: { | ||||
|       filter?: string | ||||
|       fetchDepth?: number | ||||
|  | @ -232,7 +233,11 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> { | |||
| 
 | ||||
|       // Checkout submodules
 | ||||
|       core.startGroup('Fetching submodules') | ||||
|       await git.config('submodule.fetchJobs', settings.submodulesFetchJobs) | ||||
|       await git.config( | ||||
|         'submodule.fetchJobs', | ||||
|         settings.submodulesFetchJobs.toString(), | ||||
|         true | ||||
|       ) | ||||
|       await git.submoduleSync(settings.nestedSubmodules) | ||||
|       await git.submoduleUpdate(settings.fetchDepth, settings.nestedSubmodules) | ||||
|       await git.submoduleForeach( | ||||
|  |  | |||
|  | @ -54,6 +54,11 @@ export interface IGitSourceSettings { | |||
|    */ | ||||
|   fetchTags: boolean | ||||
| 
 | ||||
|   /** | ||||
|    * Indicates the maximal number of fetch operations to be run in parallel at a time | ||||
|    */ | ||||
|   fetchParallel: number | ||||
| 
 | ||||
|   /** | ||||
|    * Indicates whether to use the --progress option when fetching | ||||
|    */ | ||||
|  | @ -77,7 +82,7 @@ export interface IGitSourceSettings { | |||
|   /** | ||||
|    * Indicates the number of parallel jobs to use when fetching submodules | ||||
|    */ | ||||
|   submodulesFetchJobs: string | ||||
|   submodulesFetchJobs: number | ||||
| 
 | ||||
|   /** | ||||
|    * The auth token to use when fetching the repository | ||||
|  |  | |||
|  | @ -113,6 +113,15 @@ export async function getInputs(): Promise<IGitSourceSettings> { | |||
|     (core.getInput('fetch-tags') || 'false').toUpperCase() === 'TRUE' | ||||
|   core.debug(`fetch tags = ${result.fetchTags}`) | ||||
| 
 | ||||
|   // Fetch tags
 | ||||
|   result.fetchParallel = Math.floor( | ||||
|     Number(core.getInput('fetch-parallel') || '1') | ||||
|   ) | ||||
|   if (isNaN(result.fetchParallel) || result.fetchParallel < 0) { | ||||
|     result.fetchParallel = 0 | ||||
|   } | ||||
|   core.debug(`fetch parallel = ${result.fetchParallel}`) | ||||
| 
 | ||||
|   // Show fetch progress
 | ||||
|   result.showProgress = | ||||
|     (core.getInput('show-progress') || 'true').toUpperCase() === 'TRUE' | ||||
|  | @ -132,13 +141,20 @@ export async function getInputs(): Promise<IGitSourceSettings> { | |||
|   } else if (submodulesString == 'TRUE') { | ||||
|     result.submodules = true | ||||
|   } | ||||
|   result.submodulesFetchJobs = core.getInput('submodulesFetchJobs') || '1' | ||||
|   result.submodulesFetchJobs = Math.floor( | ||||
|     Number(core.getInput('submodules-fetch-jobs') || '1') | ||||
|   ) | ||||
|   if (isNaN(result.submodulesFetchJobs) || result.submodulesFetchJobs < 0) { | ||||
|     result.submodulesFetchJobs = 0 | ||||
|   } | ||||
|   core.debug(`submodules = ${result.submodules}`) | ||||
|   core.debug(`recursive submodules = ${result.nestedSubmodules}`) | ||||
|   core.debug(`submodules fetchJobs= ${result.submodulesFetchJobs}`) | ||||
|   core.debug(`submodules submodules-fetch-jobs = ${result.submodulesFetchJobs}`) | ||||
| 
 | ||||
|   // Auth token
 | ||||
|   result.authToken = core.getInput('token', {required: true}) | ||||
|   result.authToken = core.getInput('token', { | ||||
|     required: true | ||||
|   }) | ||||
| 
 | ||||
|   // SSH
 | ||||
|   result.sshKey = core.getInput('ssh-key') | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Gonzalo Peci
						Gonzalo Peci