| | |
| | | } |
| | | defer store.Close() |
| | | |
| | | // 检查是否需要重建索引 |
| | | needsRebuild, commit, err := index.NeedsRebuild(store, vaultPath) |
| | | // pre-flight:快速检查索引是否有变更(只 stat 比对,不读内容) |
| | | dirty, err := index.QuickCheck(store, vaultPath) |
| | | if err != nil { |
| | | return fmt.Errorf("检查索引状态失败: %w", err) |
| | | } |
| | | |
| | | if needsRebuild { |
| | | fmt.Fprintln(os.Stderr, "索引过期,正在重建...") |
| | | if err := rebuildIndex(store, commit); err != nil { |
| | | return fmt.Errorf("重建索引失败: %w", err) |
| | | if dirty { |
| | | fmt.Fprintln(os.Stderr, "索引有变更,正在增量同步...") |
| | | if err := syncIndex(store); err != nil { |
| | | return fmt.Errorf("增量同步失败: %w", err) |
| | | } |
| | | } |
| | | |