@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 操作更贴近当前开发上下文。

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

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

小夜