diff options
| author | Robert Wieczoreck <1175008+RobertWieczoreck@users.noreply.github.com> | 2023-08-16 22:34:54 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-16 16:34:54 -0400 |
| commit | 656b4ef8263848a38ec468288a4192bae917f502 (patch) | |
| tree | 8b7b41f04d13160fd1eab8b6b2c73c6e4247b1bb /src | |
| parent | c9ee2550280ba382763bd72bd8065404a3082b18 (diff) | |
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
Diffstat (limited to 'src')
| -rw-r--r-- | src/git-command-manager.ts | 9 | ||||
| -rw-r--r-- | src/git-source-provider.ts | 7 | ||||
| -rw-r--r-- | src/git-source-settings.ts | 5 | ||||
| -rw-r--r-- | src/input-helper.ts | 5 |
4 files changed, 21 insertions, 5 deletions
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<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 } 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<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) } 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 @@ -45,6 +45,11 @@ export interface IGitSourceSettings { fetchDepth: number /** + * Fetch tags, even if fetchDepth > 0 (default: false) + */ + fetchTags: boolean + + /** * Indicates whether to fetch LFS objects */ lfs: boolean 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<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}`) |
