From 656b4ef8263848a38ec468288a4192bae917f502 Mon Sep 17 00:00:00 2001 From: Robert Wieczoreck <1175008+RobertWieczoreck@users.noreply.github.com> Date: Wed, 16 Aug 2023 22:34:54 +0200 Subject: 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 --- src/git-command-manager.ts | 9 +++++---- src/git-source-provider.ts | 7 ++++++- src/git-source-settings.ts | 5 +++++ src/input-helper.ts | 5 +++++ 4 files changed, 21 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/git-command-manager.ts b/src/git-command-manager.ts index e684dba..6ab807b 100644 --- a/src/git-command-manager.ts +++ b/src/git-command-manager.ts @@ -33,6 +33,7 @@ export interface IGitCommandManager { options: { filter?: string fetchDepth?: number + fetchTags?: boolean } ): Promise getDefaultBranch(repositoryUrl: string): Promise @@ -240,10 +241,10 @@ class GitCommandManager { async fetch( refSpec: string[], - options: {filter?: string; fetchDepth?: number} + options: {filter?: string; fetchDepth?: number; fetchTags?: boolean} ): Promise { 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 { - 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 } diff --git a/src/git-source-provider.ts b/src/git-source-provider.ts index 8f9d63f..042563e 100644 --- a/src/git-source-provider.ts +++ b/src/git-source-provider.ts @@ -153,7 +153,11 @@ export async function getSource(settings: IGitSourceSettings): Promise { // 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 { } } else { fetchOptions.fetchDepth = settings.fetchDepth + fetchOptions.fetchTags = settings.fetchTags const refSpec = refHelper.getRefSpec(settings.ref, settings.commit) await git.fetch(refSpec, fetchOptions) } diff --git a/src/git-source-settings.ts b/src/git-source-settings.ts index 3272e63..9875d8d 100644 --- a/src/git-source-settings.ts +++ b/src/git-source-settings.ts @@ -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 */ diff --git a/src/input-helper.ts b/src/input-helper.ts index 410e480..631fbdb 100644 --- a/src/input-helper.ts +++ b/src/input-helper.ts @@ -100,6 +100,11 @@ export async function getInputs(): Promise { } 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}`) -- cgit v1.2.3