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
羽毛球分组比赛记分
小程序二维码

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

小夜