现状
搜索是对已加载的提交数组做前端过滤:GraphView.swift:23-27 拿 repo.searchText 过滤 rows,而 GitClient.log() 默认 limit: 500(Sources/TheGit/Core/GitClient.swift:46)。
也就是说 500 条以外的历史等于不存在,搜不到。
目标
把搜索改成真正的 git 查询,而不是数组 filter。
| 维度 |
git 命令 |
| 提交信息 |
log --grep=<q> |
| 作者 |
log --author=<q> |
| 文件路径 |
log -- <path> |
| 代码内容(pickaxe) |
log -S<q> 或 -G<q> |
| SHA 跳转 |
rev-parse + 定位到图上那一行 |
实现要点
- 搜索模式下
GraphView 已经会退化成扁平列表(lane 线在过滤后无意义),这个行为可以保留。
- 加一个搜索类型切换(信息 / 作者 / 文件 / 内容),默认信息。
- SHA 输入应该是「跳转」而不是「过滤」—— 定位到已加载图中的那一行,如果不在窗口内则扩展 log 范围。
- 搜索结果需要独立于主 log 的 limit,建议单独走一次
log 查询。
优先级
P0 —— Sourcetree 有独立的搜索视图(信息/文件/作者三类),这块目前是明显落后。
现状
搜索是对已加载的提交数组做前端过滤:
GraphView.swift:23-27拿repo.searchText过滤 rows,而GitClient.log()默认limit: 500(Sources/TheGit/Core/GitClient.swift:46)。也就是说 500 条以外的历史等于不存在,搜不到。
目标
把搜索改成真正的 git 查询,而不是数组 filter。
log --grep=<q>log --author=<q>log -- <path>log -S<q>或-G<q>rev-parse+ 定位到图上那一行实现要点
GraphView已经会退化成扁平列表(lane 线在过滤后无意义),这个行为可以保留。log查询。优先级
P0 —— Sourcetree 有独立的搜索视图(信息/文件/作者三类),这块目前是明显落后。