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

cache project id in root git folder

Dax Raad 3 месяцев назад
Родитель
Сommit
c9a52c9a85
1 измененных файлов с 21 добавлено и 11 удалено
  1. 21 11
      packages/opencode/src/project/project.ts

+ 21 - 11
packages/opencode/src/project/project.ts

@@ -41,18 +41,28 @@ export namespace Project {
       return project
     }
     let worktree = path.dirname(git)
-    const [id] = await $`git rev-list --max-parents=0 --all`
-      .quiet()
-      .nothrow()
-      .cwd(worktree)
+    const timer = log.time("git.rev-parse")
+    let id = await Bun.file(path.join(git, "opencode"))
       .text()
-      .then((x) =>
-        x
-          .split("\n")
-          .filter(Boolean)
-          .map((x) => x.trim())
-          .toSorted(),
-      )
+      .then((x) => x.trim())
+      .catch(() => {})
+    if (!id) {
+      const roots = await $`git rev-list --max-parents=0 --all`
+        .quiet()
+        .nothrow()
+        .cwd(worktree)
+        .text()
+        .then((x) =>
+          x
+            .split("\n")
+            .filter(Boolean)
+            .map((x) => x.trim())
+            .toSorted(),
+        )
+      id = roots[0]
+      Bun.file(path.join(git, "opencode")).write(id)
+    }
+    timer.stop()
     if (!id) {
       const project: Info = {
         id: "global",