From 84214872e2c4adf476ce9eb1d9b97c624fbee121 Mon Sep 17 00:00:00 2001 From: Dylan Schlager Date: Tue, 24 Mar 2026 12:56:33 -0600 Subject: [PATCH 1/2] Make showProgress a required argument for checkout and checkoutDetach Port of maschwenk/checkout@197ee88 - makes showProgress a required boolean parameter on checkout() and checkoutDetach() instead of optional, ensuring callers explicitly choose between --progress and --quiet flags. Co-Authored-By: Claude Opus 4.6 --- dist/index.js | 12 ++++++------ src/git-command-manager.ts | 12 ++++++------ src/git-directory-helper.ts | 2 +- src/git-source-provider.ts | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/dist/index.js b/dist/index.js index fe3f3170e..6491a8002 100644 --- a/dist/index.js +++ b/dist/index.js @@ -780,9 +780,9 @@ class GitCommandManager { yield fs.promises.appendFile(sparseCheckoutPath, `\n${sparseCheckout.join('\n')}\n`); }); } - checkout(ref, startPoint) { + checkout(ref, startPoint, showProgress) { return __awaiter(this, void 0, void 0, function* () { - const args = ['checkout', '--progress', '--force']; + const args = ['checkout', showProgress ? '--progress' : '--quiet', '--force']; if (startPoint) { args.push('-B', ref, startPoint); } @@ -792,9 +792,9 @@ class GitCommandManager { yield this.execGit(args); }); } - checkoutDetach() { + checkoutDetach(showProgress) { return __awaiter(this, void 0, void 0, function* () { - const args = ['checkout', '--detach']; + const args = ['checkout', '--detach', showProgress ? '--progress' : '--quiet']; yield this.execGit(args); }); } @@ -1310,7 +1310,7 @@ function prepareExistingDirectory(git, repositoryPath, repositoryUrl, clean, ref core.startGroup('Removing previously created refs, to avoid conflicts'); // Checkout detached HEAD if (!(yield git.isDetached())) { - yield git.checkoutDetach(); + yield git.checkoutDetach(false); } // Remove all refs/heads/* let branches = yield git.branchList(false); @@ -1593,7 +1593,7 @@ function getSource(settings) { } // Checkout core.startGroup('Checking out the ref'); - yield git.checkout(checkoutInfo.ref, checkoutInfo.startPoint); + yield git.checkout(checkoutInfo.ref, checkoutInfo.startPoint, settings.showProgress); core.endGroup(); // Submodules if (settings.submodules) { diff --git a/src/git-command-manager.ts b/src/git-command-manager.ts index f5ba40e9f..f9810047b 100644 --- a/src/git-command-manager.ts +++ b/src/git-command-manager.ts @@ -22,8 +22,8 @@ export interface IGitCommandManager { disableSparseCheckout(): Promise sparseCheckout(sparseCheckout: string[]): Promise sparseCheckoutNonConeMode(sparseCheckout: string[]): Promise - checkout(ref: string, startPoint: string): Promise - checkoutDetach(): Promise + checkout(ref: string, startPoint: string, showProgress: boolean): Promise + checkoutDetach(showProgress: boolean): Promise config( configKey: string, configValue: string, @@ -220,8 +220,8 @@ class GitCommandManager { ) } - async checkout(ref: string, startPoint: string): Promise { - const args = ['checkout', '--progress', '--force'] + async checkout(ref: string, startPoint: string, showProgress: boolean): Promise { + const args = ['checkout', showProgress ? '--progress' : '--quiet', '--force'] if (startPoint) { args.push('-B', ref, startPoint) } else { @@ -231,8 +231,8 @@ class GitCommandManager { await this.execGit(args) } - async checkoutDetach(): Promise { - const args = ['checkout', '--detach'] + async checkoutDetach(showProgress: boolean): Promise { + const args = ['checkout', '--detach', showProgress ? '--progress' : '--quiet'] await this.execGit(args) } diff --git a/src/git-directory-helper.ts b/src/git-directory-helper.ts index 9a0085f21..cfda43e5a 100644 --- a/src/git-directory-helper.ts +++ b/src/git-directory-helper.ts @@ -49,7 +49,7 @@ export async function prepareExistingDirectory( core.startGroup('Removing previously created refs, to avoid conflicts') // Checkout detached HEAD if (!(await git.isDetached())) { - await git.checkoutDetach() + await git.checkoutDetach(false) } // Remove all refs/heads/* diff --git a/src/git-source-provider.ts b/src/git-source-provider.ts index ec871784f..9cadf2228 100644 --- a/src/git-source-provider.ts +++ b/src/git-source-provider.ts @@ -251,7 +251,7 @@ export async function getSource(settings: IGitSourceSettings): Promise { // Checkout core.startGroup('Checking out the ref') - await git.checkout(checkoutInfo.ref, checkoutInfo.startPoint) + await git.checkout(checkoutInfo.ref, checkoutInfo.startPoint, settings.showProgress) core.endGroup() // Submodules From a809efe39534f34399fc62e9580825fffe0fd53b Mon Sep 17 00:00:00 2001 From: Dylan Schlager Date: Mon, 6 Apr 2026 13:27:23 -0600 Subject: [PATCH 2/2] add missing change between this and max's --- README.md | 2 +- action.yml | 2 +- dist/index.js | 3 +++ src/git-source-provider.ts | 4 ++++ src/git-source-settings.ts | 3 ++- 5 files changed, 11 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f0f65f9f6..8597b4c55 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,7 @@ Please refer to the [release page](https://github.com/actions/checkout/releases/ # Default: false fetch-tags: '' - # Whether to show progress status output when fetching. + # Whether to show progress status output for git operations. # Default: true show-progress: '' diff --git a/action.yml b/action.yml index 767c41649..802aca0c3 100644 --- a/action.yml +++ b/action.yml @@ -78,7 +78,7 @@ inputs: description: 'Whether to fetch tags, even if fetch-depth > 0.' default: false show-progress: - description: 'Whether to show progress status output when fetching.' + description: 'Whether to show progress status output for git operations.' default: true lfs: description: 'Whether to download Git-LFS files' diff --git a/dist/index.js b/dist/index.js index 6491a8002..ca0c9d186 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1523,6 +1523,9 @@ function getSource(settings) { // Fetch core.startGroup('Fetching the repository'); const fetchOptions = {}; + if (settings.showProgress) { + fetchOptions.showProgress = true; + } if (settings.filter) { fetchOptions.filter = settings.filter; } diff --git a/src/git-source-provider.ts b/src/git-source-provider.ts index 9cadf2228..948ff4b1c 100644 --- a/src/git-source-provider.ts +++ b/src/git-source-provider.ts @@ -162,6 +162,10 @@ export async function getSource(settings: IGitSourceSettings): Promise { showProgress?: boolean } = {} + if (settings.showProgress) { + fetchOptions.showProgress = true + } + if (settings.filter) { fetchOptions.filter = settings.filter } else if (settings.sparseCheckout) { diff --git a/src/git-source-settings.ts b/src/git-source-settings.ts index 4e41ac302..2a6c1c33a 100644 --- a/src/git-source-settings.ts +++ b/src/git-source-settings.ts @@ -55,7 +55,8 @@ export interface IGitSourceSettings { fetchTags: boolean /** - * Indicates whether to use the --progress option when fetching + * Indicates whether to show progress status output for git operations. + * When false, git commands use --quiet to suppress verbose output. */ showProgress: boolean