为 DSH Web 对话框提供 git 分支选择器和 Git 提交图谱面板,host 进程真实执行 git switch/create。
$ dsh plugin --profile web add github:CAPTAIN1275/dsh-ui-web/packages/dsh-git-graphRun the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial
为 DSH Web 在输入框上方加一个 git 分支选择器和 Git 提交图谱面板,git 操作在 host 进程的真实工作树上执行,UI 跑在浏览器里。
/git/* HTTP 路由 + SSE 推送)+ browser half(React 组件 + 路由客户端);通过 cordis.patch.yml 作为 profile bundle 激活,浏览器侧声明注入 @deepseek-ai/dsh-client-locale、@deepseek-ai/dsh-client-runtime、@deepseek-ai/dsh-client-ui-conversationsrc/index.ts(host 主入口)、src/client/index.ts(browser 主入口)、src/invariant.ts(不变式导出)在 DSH Web 中需要频繁切分支做对比实验、想随手查看当前仓库的提交图谱、又不想离开 IDE 去敲命令行的人。例如在 feature/x 分支调试时,想切到 main 看看某个改动是否存在,但又懒得开终端;同时希望通过图形化的提交图谱回顾近期合并历史。
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH (peerDependencies) | ^0.1.0-rc.6 | 需要 host-webserver、subprocess、workspace、client-ui-conversation 等官方 SDK |
| Node | ^22.19.0 或 >=24.0.0 | 由 package.json engines 声明 |
| 工作区 | 必须是已注册的 DSH workspace | host 路由以 realpath 比对 workspaceRegistry 作为安全边界 |
| 系统 git | 二进制可用 | 通过 ctx.subprocess 调用 git 命令,依赖机器 PATH 中有 git |
dsh plugin --profile web add github:CAPTAIN1275/dsh-ui-web/packages/dsh-git-graph
本插件无需额外配置。host 路由硬编码仅接受注册工作区路径,git 操作目录来自当前会话 cwd;分支胶囊只在 git 仓库内自动出现。
Q: 切换分支会不会影响其他会话?
A: 会。切换作用于工作区根目录的磁盘工作树(git switch --no-guess <branch>),同一工作区所有会话都看到新分支;插件不会给已有会话单独换工作目录。
Q: 切换时弹出"unresolved conflicts"之类的错误怎么办?
A: 这是 host 的守卫在工作。打开终端在仓库根目录跑 git status 处理冲突、rebase/cherry-pick,或切到别的干净分支即可;插件检测到工作区存在未解决冲突或进行中操作时会拒绝切换。
Q: 切换按钮点了没反应?
A: 常见原因:目标分支不存在(已被删除)、重名分支恰好拼错、目标分支被其他 worktree 检出。胶囊会显示对应的中英错误文案,可以先在终端 git branch -a 确认分支名。
Q: 工作区不是 git 仓库时会怎样?
A: 分支胶囊直接隐藏,不渲染占位控件;插件不会误报"非仓库"错误;切换到 git 目录后下次刷新即出现。
Q: Git 图谱面板能查看多远的历史?
A: 默认一次拉取最近 200 条提交(/git/graph 接口 limit),底部出现"加载更多"时分页再加 100 条;超出返回 hasMore=true。面板仅展示当前仓库能看到的 refs(本地分支 + 标签 + 远程),不修改历史。
Q: 卸载会影响已有的 git 状态吗?
A: 不会。插件只是 UI + 路由层,git 操作直接走 git 二进制;卸载只是去掉分支胶囊和图谱面板,工作树原样保留。
入门 — 安装一行命令,无需配置;切换和创建分支遵循 git 原生语义,工作区已是 git 仓库即可看见分支胶囊。
/git/* 路由访问 git,路径必须命中已注册工作区(realpath 校验),任意目录无法直接执行 git