@holic512/plugin-svn
v1.0.1
Published
Interactive SVN management tool with IDE-like experience
Downloads
101
Maintainers
Readme
plugin-svn
🐌 交互式 SVN 管理工具 - 提供接近 IDE 的使用体验
这是一个 SlothTool 插件,提供交互式的 SVN 版本控制管理界面,让命令行操作 SVN 像使用 IntelliJ IDEA 的 Git 面板一样简单直观。
特性
- 🎯 交互式界面:菜单驱动,无需记忆复杂命令
- 📊 可视化状态:清晰展示工作区变更,按类型分组
- ✅ 文件选择提交:像 IDE 一样勾选要提交的文件
- 🔍 差异预览:彩色显示文件差异,支持单文件或全部查看
- ⚠️ 安全确认:所有危险操作都有二次确认
- 🚫 冲突检测:自动识别冲突文件,禁止在冲突时提交
- 🌐 双语支持:支持中文和英文界面
- 🎨 彩色输出:使用颜色区分不同状态的文件
安装
通过 SlothTool 安装(推荐)
slothtool install @holic512/plugin-svn手动安装
npm install -g @holic512/plugin-svn使用方法
启动交互式界面
# 通过 SlothTool
slothtool svn
# 或直接运行
svn主菜单功能
启动后会看到以下菜单选项:
- 查看工作区状态 - 显示所有本地变更
- 提交变更 - 选择文件并提交
- 查看文件差异 - 查看修改内容
- 添加未跟踪文件 - 将新文件加入版本控制
- 撤销本地修改 - 恢复文件到最新版本
- 更新工作副本 - 从服务器拉取最新代码
- 刷新状态 - 重新加载工作区状态
- 退出
功能详解
1. 工作区状态总览
自动识别并分类显示:
- 已修改(M) - 黄色显示
- 已添加(A) - 绿色显示
- 已删除(D) - 红色显示
- 冲突(C) - 红色高亮警告
- 未跟踪(?) - 灰色显示
- 缺失(!) - 紫色显示
2. 交互式提交
提交流程:
- 显示所有可提交的文件
- 使用空格键勾选/取消勾选文件
- 输入提交说明(必填)
- 最终确认后执行提交
安全特性:
- 存在冲突时禁止提交
- 必须输入提交说明
- 提交前显示文件列表供确认
3. 差异查看
支持两种模式:
- 单文件差异:选择一个文件查看详细差异
- 全部文件差异:一次性查看所有变更
差异显示特性:
- 绿色显示新增行(+)
- 红色显示删除行(-)
- 灰色显示上下文行
- 蓝色显示文件头信息
4. 添加文件
将未跟踪的文件加入版本控制:
- 显示所有未跟踪文件
- 多选要添加的文件
- 确认后执行
svn add
5. 撤销修改
恢复文件到最新版本:
- 显示所有可撤销的文件
- 多选要撤销的文件
- 警告提示:此操作将丢失本地修改
- 二次确认后执行
svn revert
6. 更新工作副本
从服务器拉取最新代码:
- 确认是否更新
- 执行
svn update - 显示更新结果
7. 冲突处理
当检测到冲突文件时:
- 状态界面会红色高亮显示冲突文件
- 提交功能会被禁用
- 提示用户先解决冲突
命令行选项
svn [options]
选项:
-h, --help 显示帮助信息
-i, --interactive 启动交互式模式(默认)
示例:
svn 启动交互式界面
svn -i 启动交互式界面
svn --help 显示帮助信息使用场景
场景 1:日常提交代码
$ slothtool svn
# 1. 查看状态,看到修改的文件
# 2. 选择"提交变更"
# 3. 勾选要提交的文件
# 4. 输入提交说明
# 5. 确认提交场景 2:查看修改内容
$ slothtool svn
# 1. 选择"查看文件差异"
# 2. 选择要查看的文件
# 3. 查看彩色差异输出场景 3:撤销错误修改
$ slothtool svn
# 1. 选择"撤销本地修改"
# 2. 勾选要撤销的文件
# 3. 确认警告后执行撤销场景 4:添加新文件
$ slothtool svn
# 1. 选择"添加未跟踪文件"
# 2. 勾选要添加的文件
# 3. 确认后添加到版本控制系统要求
- Node.js >= 12.0.0
- SVN 命令行工具已安装
- 当前目录必须是 SVN 工作副本
配置
插件会自动读取 SlothTool 的语言设置:
# 设置为中文
slothtool config language zh
# 设置为英文
slothtool config language en与 IDE 的对比
| 功能 | IntelliJ IDEA | plugin-svn | |------|---------------|------------| | 可视化状态 | ✅ | ✅ | | 文件选择提交 | ✅ | ✅ | | 差异预览 | ✅ | ✅ | | 冲突检测 | ✅ | ✅ | | 二次确认 | ✅ | ✅ | | 交互式操作 | ✅ | ✅ | | 命令行使用 | ❌ | ✅ |
技术实现
核心模块
- svn-manager.js - SVN 命令封装和状态解析
- interactive.js - 交互式操作流程
- diff-viewer.js - 差异可视化显示
- i18n.js - 国际化支持
依赖
prompts- 交互式命令行界面chalk- 终端彩色输出
常见问题
Q: 提示"SVN 未安装或不在 PATH 中"
A: 请先安装 SVN 命令行工具:
# macOS
brew install subversion
# Ubuntu/Debian
sudo apt-get install subversion
# Windows
# 下载并安装 TortoiseSVN,确保勾选"command line tools"Q: 提示"当前目录不是 SVN 工作副本"
A: 请在 SVN 工作副本目录中运行此工具,或先执行 svn checkout。
Q: 如何解决冲突?
A: 插件会检测冲突但不会自动解决。请使用以下方法:
- 手动编辑冲突文件,解决冲突标记
- 执行
svn resolve --accept working <file> - 返回插件继续提交
Q: 可以同时提交部分文件吗?
A: 可以!这正是本插件的核心功能。在提交界面使用空格键选择要提交的文件。
Q: 撤销操作可以恢复吗?
A: 不可以。svn revert 会永久丢失本地修改,因此插件会显示警告并要求二次确认。
开发
本地开发
# 克隆仓库
git clone <repository-url>
cd SlothTool/packages/plugin-svn
# 安装依赖
npm install
# 链接到本地
npm link
# 测试
svn目录结构
plugin-svn/
├── bin/
│ └── svn.js # 主入口
├── lib/
│ ├── svn-manager.js # SVN 操作管理
│ ├── interactive.js # 交互式流程
│ ├── diff-viewer.js # 差异显示
│ └── i18n.js # 国际化
├── package.json
└── README.md贡献
欢迎提交 Issue 和 Pull Request!
许可证
ISC
相关链接
Made with 🐌 by the SlothTool team
