From 62a9f6223745c0df42be1f4226f31dfb10c83ea8 Mon Sep 17 00:00:00 2001
From: ax_rd <ax_rd@aisim.cn>
Date: Thu, 03 Sep 2026 13:53:11 +0800
Subject: [PATCH] fix: e2e-verify.sh 退出码处理(FAILS 计数 + pipefail,CI 可凭退出码判定)
---
cmd/index.go | 43 +++++++++++++++++++++++++++++--------------
1 files changed, 29 insertions(+), 14 deletions(-)
diff --git a/cmd/index.go b/cmd/index.go
index 14b808f..4678803 100644
--- a/cmd/index.go
+++ b/cmd/index.go
@@ -17,21 +17,27 @@
Short: "索引管理",
}
+// forceRebuild index build 的 --force flag:全量重建索引
+var forceRebuild bool
+
var indexBuildCmd = &cobra.Command{
Use: "build",
Short: "构建或重建知识库索引",
+ Long: `kb-cli index build [--vault <路径>] [--db <路径>] [--force] # 构建或重建知识库索引(默认增量对账,--force 全量重建)`,
RunE: runIndexBuild,
}
var indexStatusCmd = &cobra.Command{
Use: "status",
Short: "查看索引状态信息",
+ Long: `kb-cli index status [--vault <路径>] [--db <路径>] # 查看索引状态(节点数、边数、commit、构建时间)`,
RunE: runIndexStatus,
}
var indexGcCmd = &cobra.Command{
Use: "gc",
Short: "清理孤立节点和边",
+ Long: `kb-cli index gc [--vault <路径>] [--db <路径>] # 清理索引中文件已删除的孤立节点和边`,
RunE: runIndexGc,
}
@@ -43,6 +49,7 @@
var gitSyncCmd = &cobra.Command{
Use: "sync",
Short: "同步知识库到 Git 仓库",
+ Long: `kb-cli git sync [--vault <路径>] # 执行 git add、commit、push 同步知识库`,
RunE: runGitSync,
}
@@ -51,6 +58,7 @@
indexCmd.AddCommand(indexBuildCmd)
indexCmd.AddCommand(indexStatusCmd)
indexCmd.AddCommand(indexGcCmd)
+ indexBuildCmd.Flags().BoolVar(&forceRebuild, "force", false, "全量重建索引(默认走增量对账)")
rootCmd.AddCommand(gitCmd)
gitCmd.AddCommand(gitSyncCmd)
@@ -64,19 +72,26 @@
}
defer store.Close()
- // 获取当前 commit
- commit, err := index.GetGitCommit(vaultPath)
- if err != nil {
- fmt.Fprintln(os.Stderr, "警告: 无法获取 git commit:", err)
- commit = ""
+ if forceRebuild {
+ // 全量重建
+ commit, err := index.GetGitCommit(vaultPath)
+ if err != nil {
+ fmt.Fprintln(os.Stderr, "警告: 无法获取 git commit:", err)
+ commit = ""
+ }
+ fmt.Fprintln(os.Stderr, "正在全量重建索引...")
+ if err := rebuildFull(store, commit); err != nil {
+ return fmt.Errorf("重建索引失败: %w", err)
+ }
+ fmt.Fprintln(os.Stderr, "索引重建完成")
+ return nil
}
- fmt.Fprintln(os.Stderr, "正在重建索引...")
- if err := rebuildIndex(store, commit); err != nil {
- return fmt.Errorf("重建索引失败: %w", err)
+ // 默认走增量对账
+ if err := syncIndex(store); err != nil {
+ return fmt.Errorf("增量同步失败: %w", err)
}
-
- fmt.Fprintln(os.Stderr, "索引重建完成")
+ fmt.Fprintln(os.Stderr, "索引同步完成")
return nil
}
@@ -123,14 +138,14 @@
fmt.Printf(" 当前 commit: %s\n", currentCommit)
fmt.Printf(" 构建时间: %s\n", builtAt)
- // 检查是否需要更新
- needsRebuild, _, err := index.NeedsRebuild(store, vaultPath)
+ // 检查是否有变更(stat 快速比对)
+ dirty, err := index.QuickCheck(store, vaultPath)
if err != nil {
return fmt.Errorf("检查索引状态失败: %w", err)
}
- if needsRebuild {
- fmt.Printf(" 状态: 需要更新\n")
+ if dirty {
+ fmt.Printf(" 状态: 有变更\n")
} else {
fmt.Printf(" 状态: 最新\n")
}
--
Gitblit v1.10.0