mirror of
				https://kkgithub.com/actions/checkout
				synced 2025-10-31 14:21:50 +08:00 
			
		
		
		
	Add option to fetch tags even if fetch-depth > 0 (#579)
* Add option to fetch tags even if fetch-depth > 0 * Add jest tests for fetchDepth and fetchTags options
This commit is contained in:
		 Robert Wieczoreck
					Robert Wieczoreck
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							96f53100ba
						
					
				
				
					commit
					7739b9ba2e
				
			| @ -33,6 +33,7 @@ export interface IGitCommandManager { | ||||
|     options: { | ||||
|       filter?: string | ||||
|       fetchDepth?: number | ||||
|       fetchTags?: boolean | ||||
|     } | ||||
|   ): Promise<void> | ||||
|   getDefaultBranch(repositoryUrl: string): Promise<string> | ||||
| @ -240,10 +241,10 @@ class GitCommandManager { | ||||
|  | ||||
|   async fetch( | ||||
|     refSpec: string[], | ||||
|     options: {filter?: string; fetchDepth?: number} | ||||
|     options: {filter?: string; fetchDepth?: number; fetchTags?: boolean} | ||||
|   ): Promise<void> { | ||||
|     const args = ['-c', 'protocol.version=2', 'fetch'] | ||||
|     if (!refSpec.some(x => x === refHelper.tagsRefSpec)) { | ||||
|     if (!refSpec.some(x => x === refHelper.tagsRefSpec) && !options.fetchTags) { | ||||
|       args.push('--no-tags') | ||||
|     } | ||||
|  | ||||
| @ -333,8 +334,8 @@ class GitCommandManager { | ||||
|   } | ||||
|  | ||||
|   async log1(format?: string): Promise<string> { | ||||
|     var args = format ? ['log', '-1', format] : ['log', '-1'] | ||||
|     var silent = format ? false : true | ||||
|     const args = format ? ['log', '-1', format] : ['log', '-1'] | ||||
|     const silent = format ? false : true | ||||
|     const output = await this.execGit(args, false, silent) | ||||
|     return output.stdout | ||||
|   } | ||||
|  | ||||
| @ -153,7 +153,11 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> { | ||||
|  | ||||
|     // Fetch | ||||
|     core.startGroup('Fetching the repository') | ||||
|     const fetchOptions: {filter?: string; fetchDepth?: number} = {} | ||||
|     const fetchOptions: { | ||||
|       filter?: string | ||||
|       fetchDepth?: number | ||||
|       fetchTags?: boolean | ||||
|     } = {} | ||||
|     if (settings.sparseCheckout) fetchOptions.filter = 'blob:none' | ||||
|     if (settings.fetchDepth <= 0) { | ||||
|       // Fetch all branches and tags | ||||
| @ -171,6 +175,7 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> { | ||||
|       } | ||||
|     } else { | ||||
|       fetchOptions.fetchDepth = settings.fetchDepth | ||||
|       fetchOptions.fetchTags = settings.fetchTags | ||||
|       const refSpec = refHelper.getRefSpec(settings.ref, settings.commit) | ||||
|       await git.fetch(refSpec, fetchOptions) | ||||
|     } | ||||
|  | ||||
| @ -44,6 +44,11 @@ export interface IGitSourceSettings { | ||||
|    */ | ||||
|   fetchDepth: number | ||||
|  | ||||
|   /** | ||||
|    * Fetch tags, even if fetchDepth > 0 (default: false) | ||||
|    */ | ||||
|   fetchTags: boolean | ||||
|  | ||||
|   /** | ||||
|    * Indicates whether to fetch LFS objects | ||||
|    */ | ||||
|  | ||||
| @ -100,6 +100,11 @@ export async function getInputs(): Promise<IGitSourceSettings> { | ||||
|   } | ||||
|   core.debug(`fetch depth = ${result.fetchDepth}`) | ||||
|  | ||||
|   // Fetch tags | ||||
|   result.fetchTags = | ||||
|     (core.getInput('fetch-tags') || 'false').toUpperCase() === 'TRUE' | ||||
|   core.debug(`fetch tags = ${result.fetchTags}`) | ||||
|  | ||||
|   // LFS | ||||
|   result.lfs = (core.getInput('lfs') || 'false').toUpperCase() === 'TRUE' | ||||
|   core.debug(`lfs = ${result.lfs}`) | ||||
|  | ||||
		Reference in New Issue
	
	Block a user