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

2 Commits

  • 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>
  • Implement branch list using callbacks from exec function (#1045)
    When trying to list local branches to figure out what needs cleaned up during runs on non-ephemeral Actions Runners, we use git rev-parse --symbolic-full-name to get a list of branches. This can lead to ambiguous ref name errors when there are branches and tags with similar names.
    
    Part of the reason we use rev-parse --symbolic-full-name vs git branch --list or git rev-parse --symbolic seems to related to a bug in Git 2.18. Until we can deprecate our usage of Git 2.18, I think we need to keep --symbolic-full-name. Since part of the problem is that these ambiguous ref name errors clog the Actions annotation limits, this is a mitigation to suppress those messages until we can get rid of the workaround.