From 1963f77c07df3ab7f9fd71f348c9f4c1b94d1416 Mon Sep 17 00:00:00 2001 From: Finley Garton <35561611+finleygn@users.noreply.github.com> Date: Fri, 22 Sep 2023 18:30:36 +0100 Subject: Add support for partial checkout filters (#1396) * added filter option & tests * added build file * fix test oversight * added exit 1 * updated docs to specify override * undo unneeded readme change * set to undefined rather than empty string * run git config in correct di --------- Co-authored-by: Cory Miller <13227161+cory-miller@users.noreply.github.com> --- src/git-source-provider.ts | 8 +++++++- src/git-source-settings.ts | 5 +++++ src/input-helper.ts | 8 ++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/git-source-provider.ts b/src/git-source-provider.ts index c1360b8..5c98e9f 100644 --- a/src/git-source-provider.ts +++ b/src/git-source-provider.ts @@ -159,7 +159,13 @@ export async function getSource(settings: IGitSourceSettings): Promise { fetchTags?: boolean showProgress?: boolean } = {} - if (settings.sparseCheckout) fetchOptions.filter = 'blob:none' + + if (settings.filter) { + fetchOptions.filter = settings.filter + } else if (settings.sparseCheckout) { + fetchOptions.filter = 'blob:none' + } + if (settings.fetchDepth <= 0) { // Fetch all branches and tags let refSpec = refHelper.getRefSpecForAllHistory( diff --git a/src/git-source-settings.ts b/src/git-source-settings.ts index 2f80b5e..629350b 100644 --- a/src/git-source-settings.ts +++ b/src/git-source-settings.ts @@ -29,6 +29,11 @@ export interface IGitSourceSettings { */ clean: boolean + /** + * The filter determining which objects to include + */ + filter: string | undefined + /** * The array of folders to make the sparse checkout */ diff --git a/src/input-helper.ts b/src/input-helper.ts index be9cecd..e546c19 100644 --- a/src/input-helper.ts +++ b/src/input-helper.ts @@ -82,6 +82,14 @@ export async function getInputs(): Promise { result.clean = (core.getInput('clean') || 'true').toUpperCase() === 'TRUE' core.debug(`clean = ${result.clean}`) + // Filter + const filter = core.getInput('filter') + if (filter) { + result.filter = filter + } + + core.debug(`filter = ${result.filter}`) + // Sparse checkout const sparseCheckout = core.getMultilineInput('sparse-checkout') if (sparseCheckout.length) { -- cgit v1.2.3