From 09c2a03cefa687832257d3b816da50db3cfcc0f2 Mon Sep 17 00:00:00 2001
From: ai_xiaopei <xiaopei@aisim.cn>
Date: Sat, 25 Jul 2026 23:48:11 +0800
Subject: [PATCH] feat: 实现输出格式化
---
internal/index/cache.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 48 insertions(+), 0 deletions(-)
diff --git a/internal/index/cache.go b/internal/index/cache.go
new file mode 100644
index 0000000..b54860c
--- /dev/null
+++ b/internal/index/cache.go
@@ -0,0 +1,48 @@
+package index
+
+import (
+ "os/exec"
+ "strings"
+)
+
+// GetGitCommit 获取知识库当前 git commit hash
+func GetGitCommit(vaultPath string) (string, error) {
+ cmd := exec.Command("git", "-C", vaultPath, "rev-parse", "HEAD")
+ out, err := cmd.Output()
+ if err != nil {
+ return "", err // 不是 git 仓库
+ }
+ return strings.TrimSpace(string(out)), nil
+}
+
+// NeedsRebuild 检查是否需要重建索引
+func NeedsRebuild(store *Store, vaultPath string) (bool, string, error) {
+ currentCommit, err := GetGitCommit(vaultPath)
+ if err != nil {
+ // 不是 git 仓库,总是需要重建
+ return true, "", nil
+ }
+
+ storedCommit, err := store.GetMeta("git_commit")
+ if err != nil {
+ return true, currentCommit, nil
+ }
+
+ if storedCommit == "" {
+ // 没有记录,需要重建
+ return true, currentCommit, nil
+ }
+
+ if storedCommit != currentCommit {
+ // commit 变了,需要重建
+ return true, currentCommit, nil
+ }
+
+ // 检查是否有节点
+ count, _ := store.NodeCount()
+ if count == 0 {
+ return true, currentCommit, nil
+ }
+
+ return false, currentCommit, nil
+}
--
Gitblit v1.9.1