将项目信息持久化到本地 SQLite 数据库,用于后续快速查询和分析。
数据库
- 路径:
~/.db/branches.sqlite3 - 初始化标记:
~/.db/inited.lock
Workflow
1. 初始化(首次使用)
检查 ~/.db/inited.lock 是否存在。不存在时:
- 创建 SQLite 数据库
- 执行建表语句:
CREATE TABLE projects ( path TEXT PRIMARY KEY, name TEXT NOT NULL, branch_model TEXT NOT NULL, total_commits INTEGER NOT NULL DEFAULT 0, last_commit_date TEXT, last_commit_user TEXT, users TEXT DEFAULT '[]', analyzed_at TEXT NOT NULL, hash TEXT NOT NULL ); - 写入
~/.db/inited.lock
2. 检查缓存
对每个待分析项目(realpath 作为主键):
- 查询
analyzed_at字段 - 若距今 ≤7 天,直接跳过(SKIP),除非用户有强制覆盖意图
- 否则重新分析
3. 分析项目
收集以下 git 信息:
total_commits:git rev-list --count --alllast_commit_date: 最近提交日期last_commit_user: 最近提交者users: 全部提交者去重后的数组hash: 当前 HEAD 短哈希(7 位)
获取所有本地和远程分支(去重):
git branch -a | sed 's/^[* ]*//' | sed 's|remotes/[^/]*/||' | sort -u
4. 分支模型判断(由你推理决定)
根据收集到的分支上下文,结合你对分支模型的理解,做出判断。
可选判定结果:gitflow、github flow、gitlab flow、无显著分支模型、自建模式
5. 写入数据库
使用 INSERT OR REPLACE 更新项目记录,字段:
path, name, branch_model, total_commits, last_commit_date, last_commit_user, users, analyzed_at, hash
References
当你需要详细了解分支模型差异,或用户要求提供权威资料时,参考以下资源: