From 36baa2673f8e899d47884bdc4ff95fb1fd747b86 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Fri, 16 Aug 2024 09:53:36 +0200 Subject: [PATCH] fix(only-changed): show nice error message about shallow clones --- packages/playwright/src/runner/vcs.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/playwright/src/runner/vcs.ts b/packages/playwright/src/runner/vcs.ts index 3e5fcfc4e3..6ee321b732 100644 --- a/packages/playwright/src/runner/vcs.ts +++ b/packages/playwright/src/runner/vcs.ts @@ -27,6 +27,20 @@ export async function detectChangedTestFiles(baseCommit: string, configDir: stri ).split('\n').filter(Boolean); } catch (_error) { const error = _error as childProcess.SpawnSyncReturns; + + const unknownRevision = error.output.some(line => line?.includes('unknown revision')); + if (unknownRevision) { + const isShallowClone = childProcess.execSync('git rev-parse --is-shallow-repository', { encoding: 'utf-8', stdio: 'pipe' }).trim() === 'true'; + if (isShallowClone) { + throw new Error([ + `Revision '${baseCommit}' is not available in the local repository.`, + `On CI, this is likely caused by a shallow clone.`, + `To fix, clone the full repository history:`, + ' https://github.com/actions/checkout#fetch-all-history-for-all-tags-and-branches' + ].join('\n')); + } + } + throw new Error([ `Cannot detect changed files for --only-changed mode:`, `git ${command}`,