dsh-git-multirepo:把 DSH 工作区里的多个 Git 仓库读成一条提交时间线

前言

DSH 的一个会话经常同时面对多个 Git 仓库:前端、后端、工具脚本分别 clone 在工作区里,要在客户端里一个个翻看提交比较麻烦。

dsh-git-multirepo 是一款第三方 DSH 插件,由 drypeek 维护,面向需要在 DSH 客户端里同时查看多个仓库提交的开发者。下面介绍它的定位、安装方式和实际用法。

这是什么

dsh-git-multirepo 是 DeepSeek Harness(DSH)的第三方插件,用 JavaScript 写成,npm 包名为 dsh-git-multirepo,当前版本 0.1.2,许可证为 MIT。README 明确说明它与 DeepSeek 无从属关系。

它的目标是:让 DSH 会话里分散在 frontend、backend、tooling 等仓库的提交,在同一个 Repositories 标签下按时间线展示,每个提交都标注所属仓库,省去在各仓库目录之间来回切换看 git log 的重复操作。

核心功能

README 列出的能力包括:

1、查看当前分支或所有分支的提交;当前分支模式下,远端新提交有独立分区展示。
2、展开提交说明与变更文件列表,点击文件名可在右侧栏打开该文件的差异。
3、按仓库、日期、提交信息、作者或短哈希过滤提交列表。
4、查看未提交的本地变更和 ahead/behind 计数,并可一次性为多个仓库拉取远端更新。

运行要求:DSH 0.2.1-rc.5 至 0.2.x,Git 2.36+,Node.js 20+ 运行环境。

安装与启用

在 DSH 桌面客户端里,打开 Plugins → Add plugin → Install a third-party plugin,输入包名 dsh-git-multirepo;或直接运行命令行安装:

dsh plugin --profile <profile> add dsh-git-multirepo

这一步从 npm 安装插件包。插件默认启用,如果之前手动关闭过,需要在 Plugins 页面重新打开。安装或更新完成后要重启桌面客户端,Web GUI 则刷新页面。之后会话里 Repositories 标签会出现在 Chat 和 Trajectory 旁边。

其他安装目标:

  • 使用最新 GitHub Release 里的预构建 tarball:
dsh plugin --profile <profile> add https://github.com/drypeek/dsh-git-multirepo/releases/latest/download/dsh-git-multirepo.tgz
  • 本地 checkout 用于开发:
git clone https://github.com/drypeek/dsh-git-multirepo.git
dsh plugin --profile <profile> add "link:/absolute/path/to/dsh-git-multirepo"

典型用法

打开 Repositories 标签,插件会扫描当前会话的工作目录;切换会话会改变显示的目录。

点击某个提交展开详情,再点击文件名打开该文件的差异。仓库标签控制哪些仓库出现在列表里,可用搜索和日期过滤器缩小范围。

按钮 行为
Refresh 重新读取本地历史和仓库状态,不请求远端更新
Fetch 在所有发现的仓库里执行 git fetch --all --prune,然后刷新;仓库已知时会先请求确认

需要注意:Fetch 不会执行 git pull,不会合并分支,也不会更新工作区文件。新到达的提交只用于查看,合并是单独步骤。打开这个标签时聊天输入框会被隐藏,需要回复消息时切回 Chat。

使用限制与安全注意

仓库发现机制默认向下扫描四层目录,最多列出 100 个仓库,并跳过隐藏目录以及 node_modules、bin、obj、dist、target 等依赖与构建目录;扫描达到上限时界面会提示。提交列表每个仓库最多显示最新 40 条,总数与体量存在上限,完整的历史请用终端 git log 查看,数量过大时文件列表和差异可能被截断或报错。

linked worktree 的读取有限制:如果其主仓库不在 worktree 所属工作区里,需要把主仓库也注册为 DSH workspace——Git 元数据与对象目录必须落在已注册的工作区内。通过 objects/info/alternates 共享对象的仓库当前不支持。partial clone 的对象缺失时,提交和差异读取不会自动补齐,先试 Fetch,仍缺对象则在终端里取回后重新打开差异。

安全方面,插件没有遥测和分析功能。正常查看只读本地历史;Git 网络传输仅由 Fetch 触发。插件不会提交、推送或合并代码。Fetch 会复用你现有的 SSH 和 Git 凭据配置,并可能执行仓库内配置的程序,因此只应对可信仓库使用,系统和全局 Git 配置也被视为可信用户配置。DSH 负责路由鉴权,仓库路径限制在已注册工作区内,具体控件与漏洞报告流程见仓库里的 SECURITY.md。

结尾

dsh-git-multirepo 的价值很窄也很明确:在多仓库 DSH 工作区里,把各仓库的提交和差异聚合到一个可过滤、可检索的时间线里,而不接管任何提交、推送或合并操作。适合日常需要同时盯着多个仓库的开发者。插件以 DSH 进程的权限运行,安装前建议先读一遍源码与 MIT 许可证,确认命令行安装的来源和权限范围符合你自己的环境。

  • 社区目录页:https://www.skillhub.cn/plugins/drypeek/dsh-git-multirepo
  • GitHub 仓库:https://github.com/drypeek/dsh-git-multirepo
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜