From 8063d6c21727e43c799971dba8b62b4879d5e15a Mon Sep 17 00:00:00 2001 From: Simon Baird Date: Fri, 1 Sep 2023 14:19:18 -0400 Subject: Support fetching without the --progress option (#1067) Setting the `show-progress` option to false in the `with` section of the workflow step will cause git fetch to run without `--progress`. The motivation is to be able to suppress the noisy progress status output which adds many hundreds of "remote: Counting objects: 85% (386/453)" and similar lines in the workflow log. This should be sufficient to resolve #894 and its older friends, though the solution is different to the one proposed there because it doesn't use the --quiet flag. IIUC git doesn't show the progress status by default since the output is not a terminal, so that's why removing the --progress option is all that's needed. Adding the --quiet flag doesn't make a lot of difference once the --progress flag is removed, and actually I think using --quiet would suppress some other more useful output that would be better left visible. Signed-off-by: Simon Baird --- src/git-command-manager.ts | 13 +++++++++++-- src/git-source-provider.ts | 1 + src/git-source-settings.ts | 5 +++++ src/input-helper.ts | 5 +++++ 4 files changed, 22 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/git-command-manager.ts b/src/git-command-manager.ts index 6ab807b..7752cfa 100644 --- a/src/git-command-manager.ts +++ b/src/git-command-manager.ts @@ -34,6 +34,7 @@ export interface IGitCommandManager { filter?: string fetchDepth?: number fetchTags?: boolean + showProgress?: boolean } ): Promise getDefaultBranch(repositoryUrl: string): Promise @@ -241,14 +242,22 @@ class GitCommandManager { async fetch( refSpec: string[], - options: {filter?: string; fetchDepth?: number; fetchTags?: boolean} + options: { + filter?: string + fetchDepth?: number + fetchTags?: boolean + showProgress?: boolean + } ): Promise { const args = ['-c', 'protocol.version=2', 'fetch'] if (!refSpec.some(x => x === refHelper.tagsRefSpec) && !options.fetchTags) { args.push('--no-tags') } - args.push('--prune', '--progress', '--no-recurse-submodules') + args.push('--prune', '--no-recurse-submodules') + if (options.showProgress) { + args.push('--progress') + } if (options.filter) { args.push(`--filter=${options.filter}`) diff --git a/src/git-source-provider.ts b/src/git-source-provider.ts index 042563e..c1360b8 100644 --- a/src/git-source-provider.ts +++ b/src/git-source-provider.ts @@ -157,6 +157,7 @@ export async function getSource(settings: IGitSourceSettings): Promise { filter?: string fetchDepth?: number fetchTags?: boolean + showProgress?: boolean } = {} if (settings.sparseCheckout) fetchOptions.filter = 'blob:none' if (settings.fetchDepth <= 0) { diff --git a/src/git-source-settings.ts b/src/git-source-settings.ts index 9875d8d..2f80b5e 100644 --- a/src/git-source-settings.ts +++ b/src/git-source-settings.ts @@ -49,6 +49,11 @@ export interface IGitSourceSettings { */ fetchTags: boolean + /** + * Indicates whether to use the --progress option when fetching + */ + showProgress: boolean + /** * Indicates whether to fetch LFS objects */ diff --git a/src/input-helper.ts b/src/input-helper.ts index 631fbdb..be9cecd 100644 --- a/src/input-helper.ts +++ b/src/input-helper.ts @@ -105,6 +105,11 @@ export async function getInputs(): Promise { (core.getInput('fetch-tags') || 'false').toUpperCase() === 'TRUE' core.debug(`fetch tags = ${result.fetchTags}`) + // Show fetch progress + result.showProgress = + (core.getInput('show-progress') || 'true').toUpperCase() === 'TRUE' + core.debug(`show progress = ${result.showProgress}`) + // LFS result.lfs = (core.getInput('lfs') || 'false').toUpperCase() === 'TRUE' core.debug(`lfs = ${result.lfs}`) -- cgit v1.2.3