checkout/__test__
Johannes Schindelin d106d4669b
Add support for sparse checkouts (#1369)
* Add support for sparse checkouts

* sparse-checkout: optionally turn off cone mode

While it _is_ true that cone mode is the default nowadays (mainly for
performance reasons: code mode is much faster than non-cone mode), there
_are_ legitimate use cases where non-cone mode is really useful.

Let's add a flag to optionally disable cone mode.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>

* Verify minimum Git version for sparse checkout

The `git sparse-checkout` command is available only since Git version
v2.25.0. The `actions/checkout` Action actually supports older Git
versions than that; As of time of writing, the minimum version is
v2.18.0.

Instead of raising this minimum version even for users who do not
require a sparse checkout, only check for this minimum version
specifically when a sparse checkout was asked for.

Suggested-by: Tingluo Huang <tingluohuang@github.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>

* Support sparse checkout/LFS better

Instead of fetching all the LFS objects present in the current revision
in a sparse checkout, whether they are needed inside the sparse cone or
not, let's instead only pull the ones that are actually needed.

To do that, let's avoid running that preemptive `git lfs fetch` call in
case of a sparse checkout.

An alternative that was considered during the development of this patch
(and ultimately rejected) was to use `git lfs pull --include <path>...`,
but it turned out to be too inflexible because it requires exact paths,
not the patterns that are available via the sparse checkout definition,
and that risks running into command-line length limitations.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>

---------

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Co-authored-by: Daniel <daniel.fernandez@feverup.com>
2023-06-09 09:08:21 -04:00
..
git-auth-helper.test.ts Add support for sparse checkouts (#1369) 2023-06-09 09:08:21 -04:00
git-command-manager.test.ts Add support for sparse checkouts (#1369) 2023-06-09 09:08:21 -04:00
git-directory-helper.test.ts Add support for sparse checkouts (#1369) 2023-06-09 09:08:21 -04:00
git-version.test.ts Convert checkout to a regular action (#70) 2019-12-03 10:28:59 -05:00
input-helper.test.ts Add support for sparse checkouts (#1369) 2023-06-09 09:08:21 -04:00
modify-work-tree.sh Convert checkout to a regular action (#70) 2019-12-03 10:28:59 -05:00
override-git-version.cmd Swap to Environment Files (#360) 2020-09-30 11:41:09 -04:00
override-git-version.sh Swap to Environment Files (#360) 2020-09-30 11:41:09 -04:00
ref-helper.test.ts update dev dependencies and react to new linting rules (#611) 2021-10-19 09:52:57 -05:00
retry-helper.test.ts update dev dependencies and react to new linting rules (#611) 2021-10-19 09:52:57 -05:00
verify-basic.sh update default branch (#305) 2020-07-14 09:23:30 -04:00
verify-clean.sh Convert checkout to a regular action (#70) 2019-12-03 10:28:59 -05:00
verify-lfs.sh Convert checkout to a regular action (#70) 2019-12-03 10:28:59 -05:00
verify-no-unstaged-changes.sh update troubleshooting instructions to include 'npm run format' 2020-05-31 17:48:51 -04:00
verify-side-by-side.sh Convert checkout to a regular action (#70) 2019-12-03 10:28:59 -05:00
verify-sparse-checkout-non-cone-mode.sh Add support for sparse checkouts (#1369) 2023-06-09 09:08:21 -04:00
verify-sparse-checkout.sh Add support for sparse checkouts (#1369) 2023-06-09 09:08:21 -04:00
verify-submodules-false.sh add support for submodules (#173) 2020-03-05 14:21:59 -05:00
verify-submodules-recursive.sh add support for submodules (#173) 2020-03-05 14:21:59 -05:00
verify-submodules-true.sh add support for submodules (#173) 2020-03-05 14:21:59 -05:00