Skip to content

全历史搜索:改用 git log --grep/--author/-S,而不是前端过滤 500 条 #12

Description

@zjywill

现状

搜索是对已加载的提交数组做前端过滤:GraphView.swift:23-27repo.searchText 过滤 rows,而 GitClient.log() 默认 limit: 500Sources/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 有独立的搜索视图(信息/文件/作者三类),这块目前是明显落后。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions