diff --git a/dist/index.js b/dist/index.js index 906b59a..f2add83 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() { @@ -995,7 +1002,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 f1349ce..0b4e2da 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 { @@ -463,7 +470,10 @@ class GitCommandManager { args.push('--recursive') } - await this.execGit(args) + const that = this + await retryHelper.execute(async () => { + await that.execGit(args) + }) } async submoduleStatus(): Promise {