- Главная
- Плагины
- Git и код-ревью
- sh-plugin-git-graph
sh-plugin-git-graph
choukin/sh-plugin-git-graph
Read-only Git graph tab for the DSH right sidebar — colored branch/merge lanes, HEAD / branch / tag / remote badges, commit details with a changed-file tree and per-file diff, virtualized rows that page through large histories — plus a branch chip in the composer that searches local and remote branches and switches with guards against uncommitted changes, detached worktrees and in-progress merges or rebases.
Установка
dsh plugin --profile web add github:choukin/sh-plugin-git-graphREADME
dsh-plugin-git-graph · Git 图谱
在 DeepSeek Harness 的右侧栏浏览当前项目的 Git 提交图谱,并在输入框旁直接切换分支。交互参照 VS Code Git Graph / SourceTree,读写分离:除了「切换分支」和手动触发的 git fetch,其余全部只读。
截图
提交图谱:多泳道连线、HEAD / 远程 / 标签徽标,点击行看详情。

分支胶囊:在输入框工具栏里显示当前分支,点开即可搜索、切换。
功能
- 提交图谱:
图谱 | 描述 | 日期 | 作者 | 提交表格,左侧多泳道彩色连线(分支、合并、交叉);描述前带HEAD、本地分支、origin/*、tag徽标——徽标始终可见,空间不足时先缩短描述、再缩短徽标文字,不会把远端分支 / 标签挤到看不见。 - 提交详情:点击任一行,在表格上方弹出不透明浮层——完整哈希(可复制)、作者 / 时间 / 父提交、提交信息、变更文件树与单文件 diff。
- 大仓库友好:行虚拟化,滚动到底自动加载下一页(默认每页 200 条)。
- 跟随会话:标签页读取当前会话的工作目录,切到别的仓库的会话时自动切换;子目录、嵌套仓库、worktree 都能解析。
- 分支胶囊:位于输入框工具栏(模型选择器左侧),显示当前分支,工作区有改动时带黄点。点开可搜索并
git switch切换,另有「拉取远程」「打开 Git 图谱」。 - 切换守卫:分支不存在或名字非法、已在别的 worktree 检出、有未完成的 merge / rebase、有未解决冲突、改动会被覆盖——都直接报出原因,不碰 index。
安装
npm install dsh-plugin-git-graph
(发布在内网源 https://npm.ledupeiyou.com/。)装进 Harness profile 后,用插件管理启用,或把它加进 profile package.json 的 dsh.profile.bundles,并保留 cordis.patch.yml 里的 git-graph-panel 行。Host 半区不会热替换:装好或升级后需要重启 Harness 进程。
分支下拉把本地分支和远程分支(origin/* 等)分成两组;选中远程分支时按那条追踪引用过滤。远端分支列表跟随「远程分支」勾选,未勾选时不显示。
配置
git-graph-panel 行的 config(也可在插件设置里改):
| 字段 | 默认值 | 说明 |
|---|---|---|
workingDirectory | '' | 固定查看的仓库(或其子目录)。留空 = 跟随当前会话目录 |
pageSize | 200 | 每页提交数(20–3000) |
enableFetch | false | 工具栏是否提供「拉取远程」(git fetch --all --prune) |
实现要点
- Host 半区(
lib/):唯一路由/api/dsh-git-graph,挂在connection.fetch上;GET下发本次加载的页面令牌,POST走state.rpc。webServer只作为没有 Connection 时的兜底,且必须是精确路由——在webServer注册/api/...前缀会抢走 Connection 的/api路由,导致所有请求 403。git 一律以固定 argv 调用(LC_ALL=C、超时、输出上限、提交号必须是十六进制、路径不能以-开头)。 - Client 半区(
client.js):纯 JS 工厂,只依赖react,注册右侧栏标签、标签标题、输入框分支胶囊和标题栏按钮。输入框是position: fixed后代的包含块,所以分支弹层 portal 到document.body,位置直接写成内联样式(不经过 React state,测量不会反过来触发渲染)。颜色只用--dsw-alias-*主题变量,深浅色跟随宿主。
开发
npm run check # 语法检查
npm test # 临时仓库上的真实 git 断言 + 路由/令牌断言
边界
- 只做
git switch与git fetch:不 commit / reset / rebase / push。 - 仓库取自当前会话的工作目录;不在 Git 仓库里的会话不显示胶囊,标签页显示引导空态。
CVS/SVN等其他版本库不在范围内。
License
MIT © choukin
Похожие плагины
dsh-web (dsh-git-graph)
zhu1090093659/dsh-web
plannotator
backnotprop/plannotator
dsh-web-ui (dsh-git-graph)
zhu1090093659/dsh-web-ui
codex-guard (dsh)
akimiya-z/codex-guard