diff options
| author | Tommy D. Rossi <[email protected]> | 2025-09-13 07:06:07 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-09-13 00:06:07 -0500 |
| commit | b1e0a2335112ddfaf5e89f01cd33972acccae46f (patch) | |
| tree | ef15d4cc2419dd67a7f63ea053fab5056b5db66d | |
| parent | 2b69bcccdfd9d65f64c6ed33722096150e4275b3 (diff) | |
| download | opencode-b1e0a2335112ddfaf5e89f01cd33972acccae46f.tar.gz opencode-b1e0a2335112ddfaf5e89f01cd33972acccae46f.zip | |
fix: ShellError: exit code 1 errors (#2568)
Co-authored-by: rekram1-node <[email protected]>
| -rw-r--r-- | packages/opencode/src/snapshot/index.ts | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/packages/opencode/src/snapshot/index.ts b/packages/opencode/src/snapshot/index.ts index c26ac55ba..4152498d3 100644 --- a/packages/opencode/src/snapshot/index.ts +++ b/packages/opencode/src/snapshot/index.ts @@ -55,7 +55,15 @@ export namespace Snapshot { export async function patch(hash: string): Promise<Patch> { const git = gitdir() await $`git --git-dir ${git} add .`.quiet().cwd(Instance.directory).nothrow() - const files = await $`git --git-dir ${git} diff --name-only ${hash} -- .`.cwd(Instance.directory).text() + const result = await $`git --git-dir ${git} diff --name-only ${hash} -- .`.quiet().cwd(Instance.directory).nothrow() + + // If git diff fails, return empty patch + if (result.exitCode !== 0) { + log.warn("failed to get diff", { hash, exitCode: result.exitCode }) + return { hash, files: [] } + } + + const files = result.text() return { hash, files: files @@ -70,9 +78,19 @@ export namespace Snapshot { export async function restore(snapshot: string) { log.info("restore", { commit: snapshot }) const git = gitdir() - await $`git --git-dir=${git} read-tree ${snapshot} && git --git-dir=${git} checkout-index -a -f` + const result = await $`git --git-dir=${git} read-tree ${snapshot} && git --git-dir=${git} checkout-index -a -f` .quiet() .cwd(Instance.worktree) + .nothrow() + + if (result.exitCode !== 0) { + log.error("failed to restore snapshot", { + snapshot, + exitCode: result.exitCode, + stderr: result.stderr.toString(), + stdout: result.stdout.toString(), + }) + } } export async function revert(patches: Patch[]) { @@ -97,8 +115,19 @@ export namespace Snapshot { export async function diff(hash: string) { const git = gitdir() - const result = await $`git --git-dir=${git} diff ${hash} -- .`.quiet().cwd(Instance.worktree).text() - return result.trim() + const result = await $`git --git-dir=${git} diff ${hash} -- .`.quiet().cwd(Instance.worktree).nothrow() + + if (result.exitCode !== 0) { + log.warn("failed to get diff", { + hash, + exitCode: result.exitCode, + stderr: result.stderr.toString(), + stdout: result.stdout.toString(), + }) + return "" + } + + return result.text().trim() } function gitdir() { |
