DeepSeek Harness 插件

dsh-better-sidebar-svn

DSH better-sidebar 插件:为侧边栏添加 SVN 源代码管理面板,支持 status / diff / log / commit / update / revert 等常用操作(英文原文)

跳到安装方式

来源信息

GitHub 仓库
ztyhehe/dsh-better-sidebar-svn
最近更新
2026年8月19日
分类
插件开发工具
GitHub stars
2
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/ztyhehe/dsh-better-sidebar-svn
插件名:dsh-better-sidebar-svn
作者:ztyhehe

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

dsh-better-sidebar-svn

DSH-better-sidebar 添加 SVN(Subversion)源代码管理面板的插件。

✨ 功能

  • 📊 状态面板:变更分「已暂存 / 未暂存」两段显示(修改/添加/删除/冲突/未版本控制等)
  • 🔍 文件 Diff:点击文件查看差异对比;diff 标题栏支持关键词搜索(命中行高亮、n/m 计数、Enter / Shift+Enter 上下跳转、可选折叠无命中 hunk)与路径过滤(按文件路径子串过滤,纯前端、不新增网络请求)
  • ✅ 暂存式提交:与内置 Git 面板逻辑一致——行尾 +/ 按钮把文件加入/移出「待提交」列表(SVN changelist dsh-commit,纯本地元数据),提交只提交已暂存的文件;支持全部暂存/全部取消、Ctrl+Enter 提交;未版本控制文件暂存时自动先 svn add
  • 🔄 更新:一键 svn update 同步远端
  • ↩️ 还原:还原单个文件修改
  • ➕ 添加:将未版本控制文件添加到版本控制
  • 🙈 忽略规则:标题栏「忽略规则」弹窗读写当前目录 svn:ignore(换行分隔模式),非空规则经临时文件 propset -F 写入、清空走 propdel;规则仅作用于当前目录、不递归,保存后自动刷新状态区
  • 📜 历史:查看提交历史(分页加载),含变更文件列表
  • 🔧 冲突解决:对冲突文件提供快速解决按钮
  • 🛡️ 降级与容错:系统缺失 svn 时面板显示友好提示(svn-missing)而非空白报错;SvnView / SvnDiffTab 均有 React ErrorBoundary,渲染异常显示可读占位而非整面板白屏

📦 安装

前置:已安装 DSH-better-sidebar(≥ 0.12.0,本插件的必需 peer)。

cd ~/.dsh && dsh plugin --profile web add dsh-better-sidebar && dsh plugin --profile web add git+https://github.com/ztyhehe/dsh-better-sidebar-svn.git

> 构建产物(lib/)已随仓库提交,git 直装无需本地构建工具链。安装后硬刷新浏览器(Cmd/Ctrl+Shift+R)即可看到侧边栏中出现「SVN」标签页。

卸载

cd ~/.dsh && dsh plugin --profile web remove dsh-better-sidebar-svn

⚙️ 前置条件

🏗️ 架构

dsh-better-sidebar-svn/
├── src/
│   ├── index.ts              # Host 半:注册 /sidebar/api/svn.* 路由
│   ├── svn.ts                # SVN CLI 操作(svn status/diff/log/commit...)
│   ├── wire.ts               # HTTP 辅助函数(JSON 响应格式)
│   ├── types.ts              # 共享类型定义
│   └── client/
│       ├── index.tsx          # Client 半:注册 SVN Tab 到 better-sidebar
│       ├── SvnView.tsx        # SVN 面板 React 组件(v0.2.0 增 ignore 弹窗)
│       ├── SvnDiffTab.tsx     # diff 标签页(v0.2.0 增搜索 / 过滤)
│       ├── ErrorBoundary.tsx  # 渲染错误边界
│       ├── diff.ts            # 统一 diff 解析纯函数(可测)
│       ├── api.ts             # 类型化 API 封装
│       └── svn.css            # 面板样式
├── tests/                     # Node 内置 test runner 单测
├── package.json
└── tsconfig.json

设计原则

  • 与 Git 面板对称:API 路由、状态格式、UI 交互均与 better-sidebar 内置的 Git 面板保持对称;SVN 无本地暂存区,用 changelist dsh-commit 模拟 Git 的 staged/unstaged(提交后 SVN 自动把已提交文件移出列表)
  • 纯 CLI 驱动:所有操作通过系统 svn 二进制完成,无额外库依赖
  • XML 输出解析:SVN 命令统一使用 --xml 格式输出,保证机器解析稳定性
  • 非交互式:所有命令带 --non-interactive --no-auth-cache 参数
  • 性能svn status 纯本地读 wc.db,几十毫秒即回;svn log 是唯一必须访问仓库服务器的命令,网络往返可能数百毫秒):

- 状态区与历史区独立加载,首屏只等本地的 svn status,不被 svn log 的网络往返拖住 - svn log 服务端缓存(TTL 1 小时):窗口内命中即返回(切换会话零网络);过期后下一次访问自动重取最新;刷新按钮传 force 立即强制重取;commit / update / 撤销提交后自动失效;同 cwd 并发请求合并为一次往返,分页复用已拉取前缀 - 客户端历史快照(模块级缓存,切换会话 / 面板重挂载不丢失):切回会话时历史区直接上屏,无加载占位闪烁 - svn infosvn status 并行执行(原先 info 先串行判一次仓库再跑一遍,少一个进程往返) - svn log 显式 -r HEAD:1:混合版本工作副本(部分提交后未 update)下,默认范围 BASE:1 可能算出空集导致历史无声变空

API 路由

方法描述
svn.status工作副本状态快照(含 changelist 归属)
svn.diff文件差异文本
svn.add添加文件到版本控制
svn.revert还原文件修改
svn.stage暂存到待提交列表(未版本控制文件自动先 add)
svn.unstage取消暂存(不传 paths = 全部取消)
svn.commit提交待提交列表中的变更(--changelist,只提交已暂存)
svn.update更新工作副本
svn.log提交历史(分页;force: true 绕过缓存强制重取)
svn.cat获取某版本文件内容
svn.info仓库信息
svn.resolve解决冲突
svn.revertRevision撤销某次提交(svn merge -c -REV
svn.ignoreGet读取当前目录 svn:ignore(按行拆分)
svn.ignoreSet写入 / 清空当前目录 svn:ignore(非空 propset -F 临时文件,空规则 propdel;写操作锁定 cwd realpath)

> 所有路由均走 trust-fence 与统一 JSON 响应({ ok, value } / { ok:false, error:{code,message} })约定; > 系统无 svn 时统一返回 svn-missing 错误码。

🛠️ 开发

pnpm install
pnpm typecheck
pnpm test
pnpm build

📄 许可

MIT