npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@holic512/plugin-svn

v1.0.1

Published

Interactive SVN management tool with IDE-like experience

Downloads

101

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. 查看工作区状态 - 显示所有本地变更
  2. 提交变更 - 选择文件并提交
  3. 查看文件差异 - 查看修改内容
  4. 添加未跟踪文件 - 将新文件加入版本控制
  5. 撤销本地修改 - 恢复文件到最新版本
  6. 更新工作副本 - 从服务器拉取最新代码
  7. 刷新状态 - 重新加载工作区状态
  8. 退出

功能详解

1. 工作区状态总览

自动识别并分类显示:

  • 已修改(M) - 黄色显示
  • 已添加(A) - 绿色显示
  • 已删除(D) - 红色显示
  • 冲突(C) - 红色高亮警告
  • 未跟踪(?) - 灰色显示
  • 缺失(!) - 紫色显示

2. 交互式提交

提交流程:

  1. 显示所有可提交的文件
  2. 使用空格键勾选/取消勾选文件
  3. 输入提交说明(必填)
  4. 最终确认后执行提交

安全特性:

  • 存在冲突时禁止提交
  • 必须输入提交说明
  • 提交前显示文件列表供确认

3. 差异查看

支持两种模式:

  • 单文件差异:选择一个文件查看详细差异
  • 全部文件差异:一次性查看所有变更

差异显示特性:

  • 绿色显示新增行(+)
  • 红色显示删除行(-)
  • 灰色显示上下文行
  • 蓝色显示文件头信息

4. 添加文件

将未跟踪的文件加入版本控制:

  1. 显示所有未跟踪文件
  2. 多选要添加的文件
  3. 确认后执行 svn add

5. 撤销修改

恢复文件到最新版本:

  1. 显示所有可撤销的文件
  2. 多选要撤销的文件
  3. 警告提示:此操作将丢失本地修改
  4. 二次确认后执行 svn revert

6. 更新工作副本

从服务器拉取最新代码:

  1. 确认是否更新
  2. 执行 svn update
  3. 显示更新结果

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: 插件会检测冲突但不会自动解决。请使用以下方法:

  1. 手动编辑冲突文件,解决冲突标记
  2. 执行 svn resolve --accept working <file>
  3. 返回插件继续提交

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