Просмотр исходного кода

fix: UI Freezes for a few minutes if repo has binary files (#4109)

Ivan Starkov 3 месяцев назад
Родитель
Сommit
9637d70407
1 измененных файлов с 4 добавлено и 3 удалено
  1. 4 3
      packages/opencode/src/snapshot/index.ts

+ 4 - 3
packages/opencode/src/snapshot/index.ts

@@ -143,15 +143,16 @@ export namespace Snapshot {
   export async function diffFull(from: string, to: string): Promise<FileDiff[]> {
     const git = gitdir()
     const result: FileDiff[] = []
-    for await (const line of $`git --git-dir=${git} diff --numstat ${from} ${to} -- .`
+    for await (const line of $`git --git-dir=${git} diff --no-renames --numstat ${from} ${to} -- .`
       .quiet()
       .cwd(Instance.directory)
       .nothrow()
       .lines()) {
       if (!line) continue
       const [additions, deletions, file] = line.split("\t")
-      const before = await $`git --git-dir=${git} show ${from}:${file}`.quiet().nothrow().text()
-      const after = await $`git --git-dir=${git} show ${to}:${file}`.quiet().nothrow().text()
+      const isBinaryFile = additions === "-" && deletions === "-"
+      const before = isBinaryFile ? "" : await $`git --git-dir=${git} show ${from}:${file}`.quiet().nothrow().text()
+      const after = isBinaryFile ? "" : await $`git --git-dir=${git} show ${to}:${file}`.quiet().nothrow().text()
       result.push({
         file,
         before,