mirror of
https://github.com/actions/checkout.git
synced 2026-03-22 21:09:54 +08:00
When using partial clones (filter=blob:none, which is automatically set for sparse checkouts), `git checkout` lazily fetches missing blobs from the promisor remote. If the remote is temporarily unavailable, this network call fails and surfaces as a hard error with no retry. The `fetch`, `getDefaultBranch`, and `lfsFetch` methods already use retryHelper, but `checkout` and `submoduleUpdate` did not, despite both performing network operations: - `checkout`: fetches blobs on-demand from promisor remotes during partial clone checkouts - `submoduleUpdate`: clones/fetches submodule repositories This was observed in production when GitHub's git service had a brief outage, causing the checkout step to fail with: fatal: unable to access '...': Failed to connect to github.com port 443 after 135272 ms: Couldn't connect to server fatal: could not fetch <sha> from promisor remote Wrapping both methods with the existing retryHelper (3 attempts with 10-20s jittered backoff) makes these operations resilient to transient network failures, consistent with how fetch already behaves. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| index.js | ||
| problem-matcher.json | ||