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:
		
				
					committed by
					
						
						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