SVN Monitor for VSCode

在 VSCode 侧边栏集中监控多个本地 SVN 工作副本的状态、分支、提交与文件变更,无需逐个切换目录。
简介
SVN Monitor 是一个 VSCode 扩展,帮助你在一处查看所有关心的 SVN 工作副本的实时状态。无论是同时维护多个项目,还是需要定期审查若干仓库的代码变更,都可以将它作为统一的 SVN 监控面板。
- 一眼掌握:列表条目直接显示分支/目录、本地/服务器版本号、落后版本数、文件计数
- 低侵入:默认只读取 SVN 元信息;写操作(提交/更新/切换/合并)需主动触发
- 原生体验:符合 VSCode 交互习惯,支持主题色与图标
功能特性
侧边栏列表
- 活动栏图标点击展开「工作副本监控」视图
- 每个工作副本条目展示:目录名 · 分支/目录 · r本地版本 · ↓落后 · 文件计数(+新增 / ~修改 / ?未跟踪 / C冲突 / !缺失)
- 鼠标悬停显示完整路径、URL、仓库根、版本信息、最新提交摘要
- 状态图标:✅ 干净 / 🖉 有修改 / ↓ 落后 / ⚠️ 读取失败
详情面板(点击条目打开)
分块展示该工作副本的完整明细:
| 区块 |
内容 |
| 基本信息 |
分支/目录、URL、仓库根、状态徽章 |
| 版本同步 |
本地版本、服务器最新版本、落后版本数、工作区是否干净、各类文件计数 |
| 文件变更 |
分「待提交(A/D/R)」「已修改(M)」「未跟踪(?)」「冲突(C)」「缺失(!)」五组,附增删行数 |
| 标签列表 |
服务器 ^/tags 下的标签目录 |
| 最近提交 |
最近 N 条提交(revision、作者、时间、消息) |
| 分支目录 |
服务器 trunk / branches 目录,可切换/合并 |
详情面板内置快捷操作:提交、更新、添加全部、整库重置、刷新、在终端中打开、在资源管理器中打开、在新窗口打开、复制路径。
文件级操作
- 未跟踪:
+添加(svn add)/ 忽略(svn propset svn:ignore)
- 已修改:
差异(vscode.diff)/ 撤销(svn revert)
- 已新增:
取消(svn revert 取消 svn add)
- 已删除/缺失:
恢复(svn revert)
- 冲突文件:高亮提示手动解决
工作副本管理
- 添加目录:选择本地目录,自动校验是否为 SVN 工作副本,支持设置别名
- 移除监控:从列表移除(不影响本地文件)
- 刷新:单条刷新 + 全部刷新(带并发上限)
- 自动轮询:可配置间隔自动刷新,窗口失焦时自动暂停
安装
方式一:从 Marketplace 安装
在 VSCode 扩展面板搜索 SVN Monitor,点击安装。
方式二:从 VSIX 安装
code --install-extension svnmonitor-for-vscode-1.1.3.vsix
使用指南
1. 添加第一个工作副本
- 点击活动栏的 SVN Monitor 图标
- 点击视图标题栏的
+ 按钮
- 在弹出的目录选择器中选中一个 SVN 工作副本
- (可选)为该工作副本输入别名
- 工作副本立即出现在列表中并自动刷新状态
如果选择的目录不是 SVN 工作副本,会弹出提示询问是否仍要添加。
2. 查看详情
- 单击列表条目,打开详情面板
- 详情面板复用同一实例,切换工作副本不重新创建窗口
- 工作副本状态变化时,若详情面板正显示该工作副本,会自动同步刷新
3. 刷新状态
- 全部刷新:点击视图标题栏的 🔄 按钮
- 单条刷新:右键条目 → 「刷新该工作副本」
- 刷新过程在状态栏显示进度,多工作副本并发执行(默认并发 4)
4. 移除监控
- 右键条目 → 「移除监控」
- 二次确认后从列表移除,本地目录文件不会被删除
- 重启 VSCode 后监控列表依然保留(globalState 持久化)
5. SVN 写操作
右键工作副本条目或使用详情面板工具栏,可执行:
- 提交(svn commit -m)
- 更新(svn update)
- 添加全部未跟踪文件(svn add . --force)
- 整库重置(svn revert -R .,危险操作,需二次确认)
- 切换分支目录(svn switch ^/branches/x)
- 合并分支(svn merge ^/branches/x)
- 创建标签(svn copy ^/trunk ^/tags/x -m)
- 删除标签(svn delete ^/tags/x -m)
- 查看差异(vscode.diff,比较 BASE 与工作区)
6. 快捷操作
右键工作副本条目,可快速:
- 在资源管理器中打开(系统文件管理器)
- 在终端中打开(以该工作副本为工作目录)
- 在新窗口中打开(VSCode 新窗口加载该目录)
配置项
在 settings.json 中可调整以下参数:
| 配置项 |
类型 |
默认值 |
说明 |
svnMonitor.autoRefresh.enabled |
boolean |
false |
是否启用自动轮询刷新 |
svnMonitor.autoRefresh.intervalSec |
number |
60 |
自动刷新间隔(秒),范围 30~3600 |
svnMonitor.refresh.concurrency |
number |
4 |
全部刷新时的并发上限,范围 1~16 |
svnMonitor.refresh.timeoutMs |
number |
5000 |
单次 svn 命令超时(毫秒) |
svnMonitor.detail.commitCount |
number |
20 |
详情面板显示的提交历史条数,范围 1~200 |
svnMonitor.detail.showFileStats |
boolean |
true |
详情面板是否展示文件增删行数(解析 svn diff,性能较低) |
svnMonitor.svn.executablePath |
string |
"" |
svn 可执行文件路径,留空使用 PATH 中的 svn |
svnMonitor.operations.confirmDangerous |
boolean |
true |
危险操作(整库重置、撤销修改、删除标签等)是否二次确认 |
svnMonitor.operations.historySize |
number |
50 |
每工作副本保留的操作历史条数,范围 0~500 |
svnMonitor.operations.enableTag |
boolean |
true |
是否启用标签管理(svn copy / svn delete 远程操作) |
配置示例
{
"svnMonitor.autoRefresh.enabled": true,
"svnMonitor.autoRefresh.intervalSec": 120,
"svnMonitor.refresh.concurrency": 8,
"svnMonitor.detail.commitCount": 50,
"svnMonitor.operations.confirmDangerous": true
}
常见问题
Q:启动后看不到任何工作副本?
A:首次使用列表为空,点击视图标题栏的 + 添加你的第一个工作副本。
Q:提示「未检测到 svn 可执行文件」?
A:请确保系统已安装 svn(Subversion)并加入 PATH,或在设置中指定 svnMonitor.svn.executablePath。
Q:某个工作副本显示「读取失败」?
A:可能是路径被移动/删除,或 svn 命令执行超时。右键「刷新该工作副本」重试;若路径已不存在,请「移除监控」。
Q:列表会修改我的工作副本吗?
A:默认只读取 SVN 元信息(分支、状态、提交历史等)。写操作(commit/update/switch/merge/revert/add)需你主动触发,且危险操作会二次确认。
Q:重启 VSCode 后工作副本列表还在吗?
A:在。配置通过 VSCode 的 globalState 持久化,跨工作区共享。
Q:与 Git Monitor 是同一个插件吗?
A:不是。SVN Monitor 是独立产品,与 Git Monitor 可同时安装,互不影响。底层调用 svn 命令行,适配 SVN 的集中式版本控制模型(无暂存区、commit 即推送、分支是服务器目录)。
命令面板
所有功能也可通过命令面板(Ctrl+Shift+P)调用,前缀 SVN Monitor::
SVN Monitor: 添加目录
SVN Monitor: 全部刷新
SVN Monitor: 刷新该工作副本
SVN Monitor: 移除监控
SVN Monitor: 打开详情
SVN Monitor: 在资源管理器中打开
SVN Monitor: 在终端中打开
SVN Monitor: 在新窗口中打开
SVN Monitor: 打开设置
SVN Monitor: 添加文件到版本控制
SVN Monitor: 添加全部未跟踪文件
SVN Monitor: 撤销文件修改
SVN Monitor: 整库重置 (svn revert -R .)
SVN Monitor: 提交
SVN Monitor: 更新 (svn update)
SVN Monitor: 切换分支目录 (svn switch)
SVN Monitor: 合并分支 (svn merge)
SVN Monitor: 查看差异
SVN Monitor: 创建标签 (svn copy ^/trunk ^/tags/x)
SVN Monitor: 删除标签 (svn delete ^/tags/x)
兼容性
- VSCode 1.80+
- Windows / macOS / Linux
- 需系统安装 svn(Subversion)命令行工具
许可证
MIT