summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-01-22 10:35:31 -0600
committerAdam <[email protected]>2026-01-22 10:35:31 -0600
commit31f3a508dc3cec8dcc7ea05fbff1f1ed6b316f6d (patch)
treec645704dc5a56bf9221536fecc210c69988b2b03 /packages
parent3b7c347b2e3639b475d6ac2edf9600ed7b7bc5cd (diff)
downloadopencode-31f3a508dc3cec8dcc7ea05fbff1f1ed6b316f6d.tar.gz
opencode-31f3a508dc3cec8dcc7ea05fbff1f1ed6b316f6d.zip
Revert "fix(core): snapshot regression"
This reverts commit bb710e9ea151c94e68391a22c8199da8a8223342.
Diffstat (limited to 'packages')
-rw-r--r--packages/opencode/src/snapshot/index.ts32
1 files changed, 18 insertions, 14 deletions
diff --git a/packages/opencode/src/snapshot/index.ts b/packages/opencode/src/snapshot/index.ts
index dcf6499fb..0f5e9c66e 100644
--- a/packages/opencode/src/snapshot/index.ts
+++ b/packages/opencode/src/snapshot/index.ts
@@ -197,18 +197,6 @@ export namespace Snapshot {
export async function diffFull(from: string, to: string): Promise<FileDiff[]> {
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)
@@ -218,9 +206,25 @@ 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 before = isBinaryFile ? "" : await show(from, file)
- const after = isBinaryFile ? "" : await show(to, file)
+ 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 added = isBinaryFile ? 0 : parseInt(additions)
const deleted = isBinaryFile ? 0 : parseInt(deletions)
result.push({