1
mirror of https://github.com/actions/checkout.git synced 2026-06-13 18:57:14 +00:00
Commit Graph

2 Commits

  • Mark test scripts with Bash'isms to be run via Bash (#1377)
    In #1369, I mistakenly replaced the hash-bang lines in the two new
    scripts with `#!/bin/sh`, missing that both files contain the Bash'ism
    `[[`. Symptom as per
    https://github.com/actions/checkout/actions/runs/5200323109/jobs/9378889172?pr=1369#step:12:5
    
        __test__/verify-sparse-checkout.sh: 58: [[: not found
    
    Let's change those hash-bang lines back to `#!/bin/bash`.
    
    Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
  • 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>