diff --git a/dist/index.js b/dist/index.js index fe3f317..6f39780 100644 --- a/dist/index.js +++ b/dist/index.js @@ -789,7 +789,14 @@ class GitCommandManager { else { args.push(ref); } - yield this.execGit(args); + // Retry checkout because it can trigger network I/O when using partial + // clones (filter=blob:none). In that mode git lazily fetches missing + // blobs from the promisor remote during checkout, so a transient network + // failure would otherwise surface as a hard error here. + const that = this; + yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () { + yield that.execGit(args); + })); }); } checkoutDetach() { @@ -990,7 +997,10 @@ class GitCommandManager { if (recursive) { args.push('--recursive'); } - yield this.execGit(args); + const that = this; + yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () { + yield that.execGit(args); + })); }); } submoduleStatus() { diff --git a/src/git-command-manager.ts b/src/git-command-manager.ts index f5ba40e..6f9578c 100644 --- a/src/git-command-manager.ts +++ b/src/git-command-manager.ts @@ -228,7 +228,14 @@ class GitCommandManager { args.push(ref) } - await this.execGit(args) + // Retry checkout because it can trigger network I/O when using partial + // clones (filter=blob:none). In that mode git lazily fetches missing + // blobs from the promisor remote during checkout, so a transient network + // failure would otherwise surface as a hard error here. + const that = this + await retryHelper.execute(async () => { + await that.execGit(args) + }) } async checkoutDetach(): Promise { @@ -457,7 +464,10 @@ class GitCommandManager { args.push('--recursive') } - await this.execGit(args) + const that = this + await retryHelper.execute(async () => { + await that.execGit(args) + }) } async submoduleStatus(): Promise {