@xbzbing/dsh-git-panel:在 DSH Web GUI 裏使用 IDE 風格的 Git 面板

前言

使用 DSH 做本地開發或維護倉庫時,常見的需求是把 Git 狀態、提交歷史、未提交變更和差異查看放在手邊。過去這類操作常常要切到終端,或者另開一個 IDE 窗口。

@xbzbing/dsh-git-panel 是一個 DSH Web GUI 插件,它在對話工作區提供 IDE 風格的 Git 面板,支持分支與提交歷史總覽、未提交變更的提交與 amend、差異統計,以及在輸入框左側顯示 zsh 風格的分支標記。插件由 xbzbing 維護,採用 MIT 許可。

這是什麼

這是一個面向 DSH Web GUI 的客戶端插件,目標是把常用 Git 查看與提交操作放進當前會話的工作區裏。

它適合希望在一處完成以下事情的人:

  • 查看分支、標籤和提交歷史。
  • 查看某個提交裏的變更文件和差異。
  • 處理當前工作區的未提交變更。
  • 暫存、取消暫存、丟棄、提交或 amend。
  • 切換分支、創建或刪除標籤、還原或重置提交。
  • 預覽工作區文件,並查看代碼、Markdown、HTML 和圖片。
  • 在輸入框附近看到當前倉庫名與分支狀態。

插件會圍繞當前工作區中的 Git 倉庫工作。如果未安裝 git,或者當前目錄不是 Git 倉庫,則只顯示文件瀏覽能力,並以當前工作目錄爲根。

核心功能

Git 總覽

面板提供分支和標籤列表、可搜索的提交歷史圖。選中某個提交後,可以看到該提交對應的變更文件樹和提交信息。

提交歷史圖支持按提交信息、commit 哈希、作者和日期等條件搜索。點擊變更文件後,可以查看該文件在此提交中的差異。

變更記錄

變更記錄頁處理當前工作區中尚未提交的變更。

支持的操作包括:

  • 逐文件暫存、取消暫存或丟棄。
  • 批量放棄選中改動。
  • 手動提交。
  • Amend 當前提交。
  • 創建、應用、彈出或丟棄貯藏。
  • 查看文件數與增刪行統計。

這些操作都面向本地倉庫狀態,不會自動觸發推送。

常用 Git 操作

面板還提供一些常用 Git 操作:

  • 分支切換。
  • 標籤創建與刪除。
  • 提交還原或重置。

這些操作只改寫本地倉庫,不自動推送。重置類操作會列出將被丟棄的改動,並要求用戶確認。

AI 生成提交信息

插件可以根據當前未提交變更和倉庫既有提交風格生成提交信息。

模型可以在插件詳情頁固定選擇。生成提交信息時,diff 內容會發送給用戶所選模型的供應商。模型調用由宿主完成,插件本身不持有憑據。

輸入框 Git 標記

輸入框左側會顯示 zsh 風格的倉庫名與分支標記,例如類似 <倉庫名> (<分支>) 的形式。

標記會帶狀態顏色,並支持點擊跳轉到 Git 面板。該標記可以在插件詳情頁關閉,也可以改爲在 Git 標籤旁顯示狀態提示。

文件瀏覽

插件可以在面板內瀏覽工作區目錄樹,並預覽以下文件類型:

  • 代碼文件。
  • Markdown。
  • HTML。
  • 圖片。

如果當前目錄不是 Git 倉庫,文件瀏覽仍可使用,並以當前工作目錄爲根。

差異與源碼查看

差異查看支持統一、對照、變更前、變更後等視圖,並提供語法高亮、詞級改動強調、查找與圖片縮放能力。

源碼預覽適合查看長文件和代碼結構。對於圖片差異,可以進行縮放和拖拽查看。

窄面板與移動端佈局

當面板寬度小於或等於 620px 時,插件會切換爲單欄鑽取佈局。寬度恢復後,會回到原來的多欄佈局。

共享工作區護欄

當 DSH 的 AI 與插件共用同一倉庫時,寫操作會有彈窗提示。提示中會說明可以直接讓 AI 執行 Git 操作。

如果操作遇到 .git/index.lock,插件會自動重試一次,並提示 Git 正忙。

語言支持

插件 UI 跟隨 DSH 系統語言設置,支持簡體中文和英文。

安裝與啓用

使用 npm 包安裝正式版:

dsh plugin --profile web add @xbzbing/dsh-git-panel@latest

這條命令會把插件加入 DSH 的 web profile。安裝或更新後,工作區標籤欄中「對話」「軌跡」之後會出現 Git 面板,無需重啓服務,也無需刷新頁面。

面板內的配置項,例如詳情頁中的輸入框標記開關、差異默認視圖,走配置熱寫,改動即時生效。

如果需要使用預發佈版本,應以 GitHub Release 中的附件 URL 安裝。預發佈版本號帶 -,只出現在 GitHub Release,不會推送到 npm;正式版發佈時,npm 與穩定 Release 同時上線。

資料中明確不建議使用類似 dsh plugin add github:… 的方式安裝,應使用 npm 包或 Release 附件 URL。

本地聯調時,可以把插件加入 DSH web profile 的 dsh.profile.bundles,用 file: 依賴指向本目錄,然後執行:

node build.mjs

構建完成後即可生效。客戶端產物替換後可以被熱替換;宿主側改動仍需重啓服務。

典型用法

下面是一個常見的本地使用流程。

1、安裝插件並進入 DSH 工作區。

安裝後,工作區標籤欄會出現 Git 面板。

2、查看倉庫狀態。

打開 Git 面板,查看分支、標籤、提交歷史和當前未提交變更。

3、檢查差異。

選擇某個提交或某個未提交文件,查看差異內容。差異視圖支持統一、對照、變更前、變更後等方式。

4、處理未提交變更。

在變更記錄頁中,可以逐文件暫存、取消暫存或丟棄,也可以批量放棄選中改動。

5、提交或 amend。

確認變更無誤後,手動提交或 amend 當前提交。

6、生成提交信息。

如果需要,可以基於當前未提交變更生成提交信息。注意:生成時會把 diff 內容發送給用戶所選模型的供應商。

7、執行常用 Git 操作。

可以在面板內切換分支、創建或刪除標籤、還原或重置提交。這些操作只改寫本地倉庫,不自動推送。

8、瀏覽和預覽文件。

在文件瀏覽頁中查看工作區目錄,並預覽代碼、Markdown、HTML 或圖片。

適用場景與注意

這個插件適合以下場景:

  • 使用 DSH Web GUI 管理本地 Git 倉庫。
  • 希望在對話過程中查看分支、提交、變更和差異。
  • 希望減少在終端和 IDE 之間來回切換。
  • 需要在工作區內直接完成暫存、提交、amend、貯藏等常見操作。

安裝前需要注意權限和數據邊界。

插件以當前 DSH 進程權限運行,因此安裝前應檢查源碼與許可證。該插件採用 MIT 許可。

運行依賴:

  • 需要 git CLI。
  • 未安裝 git 或目錄不是 Git 倉庫時,只顯示文件瀏覽,並以當前工作目錄爲根。

Git 命令執行方式:

  • 所有 Git 命令都經宿主 subprocess 服務執行。
  • 使用 argv 數組,不拼接 shell 字符串。
  • 工作目錄鎖定在倉庫根。
  • 帶超時與輸出上限。
  • 插件不改動 Git 配置。

寫操作邊界:

  • 提交、amend、暫存、丟棄等操作都有明確入口。
  • 唯一寫盤動作是「放棄未跟蹤條目」。
  • 放棄未跟蹤條目會按確認刪除工作區文件。
  • 如果條目本身是一個 Git 倉庫,會整批拒絕。

網絡邊界:

  • 插件自身只發起用於版本提示的請求:
GET https://api.github.com/repos/<owner>/<repo>/releases/latest
  • fetch、pull、push、publish 等操作只在用戶點擊後,經 Git 命令聯網。

AI 生成提交信息邊界:

  • 生成提交信息會把 diff 內容發送給用戶在 DSH 中配置的模型供應商。
  • 模型調用由宿主完成。
  • 插件不持有憑據。

獲取地址

插件目錄頁:

https://www.skillhub.cn/plugins/xbzbing/dsh-git-panel

GitHub 倉庫:

https://github.com/xbzbing/dsh-git-panel

@xbzbing/dsh-git-panel 的價值在於把 Git 查看、變更處理和差異審閱放進 DSH 的對話工作區。對於需要在 DSH 中頻繁處理本地倉庫變更的開發者來說,它可以減少切窗口的成本,讓 Git 操作更貼近當前開發上下文。

羽毛球分组比赛记分
小程序二维码

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

小夜