From bb710e9ea151c94e68391a22c8199da8a8223342 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Wed, 21 Jan 2026 06:09:50 -0600 Subject: [PATCH] fix(core): snapshot regression --- packages/opencode/src/snapshot/index.ts | 32 +++++++++++-------------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/packages/opencode/src/snapshot/index.ts b/packages/opencode/src/snapshot/index.ts index 0f5e9c66e..dcf6499fb 100644 --- a/packages/opencode/src/snapshot/index.ts +++ b/packages/opencode/src/snapshot/index.ts @@ -197,6 +197,18 @@ export namespace Snapshot { export async function diffFull(from: string, to: string): Promise { const git = gitdir() const result: FileDiff[] = [] + + const show = async (hash: string, file: string) => { + const response = + await $`git -c core.autocrlf=false --git-dir ${git} --work-tree ${Instance.worktree} show ${hash}:${file}` + .quiet() + .nothrow() + if (response.exitCode === 0) return response.text() + const stderr = response.stderr.toString() + if (stderr.toLowerCase().includes("does not exist in")) return "" + return `[DEBUG ERROR] git show ${hash}:${file} failed: ${stderr}` + } + for await (const line of $`git -c core.autocrlf=false --git-dir ${git} --work-tree ${Instance.worktree} diff --no-ext-diff --no-renames --numstat ${from} ${to} -- .` .quiet() .cwd(Instance.directory) @@ -206,25 +218,9 @@ export namespace Snapshot { const [additions, deletions, rawFile] = line.split("\t") const file = unquote(rawFile) const isBinaryFile = additions === "-" && deletions === "-" - const beforeResult = isBinaryFile - ? { exitCode: 0, text: () => "", stderr: Buffer.from("") } - : await $`git -c core.autocrlf=false --git-dir ${git} --work-tree ${Instance.worktree} show ${from}:${file}` - .quiet() - .nothrow() - const before = - beforeResult.exitCode === 0 - ? beforeResult.text() - : `[DEBUG ERROR] git show ${from}:${file} failed: ${beforeResult.stderr.toString()}` - const afterResult = isBinaryFile - ? { exitCode: 0, text: () => "", stderr: Buffer.from("") } - : await $`git -c core.autocrlf=false --git-dir ${git} --work-tree ${Instance.worktree} show ${to}:${file}` - .quiet() - .nothrow() - const after = - afterResult.exitCode === 0 - ? afterResult.text() - : `[DEBUG ERROR] git show ${to}:${file} failed: ${afterResult.stderr.toString()}` + const before = isBinaryFile ? "" : await show(from, file) + const after = isBinaryFile ? "" : await show(to, file) const added = isBinaryFile ? 0 : parseInt(additions) const deleted = isBinaryFile ? 0 : parseInt(deletions) result.push({