SVN版本控制
参考教程:SVN客户端安装与常用操作(超详细)_svn安装教程-CSDN博客
Subversion,集中式版本控制系统,许多 2010 年前的开源项目(如早期 Apache 项目)仅支持 SVN 托管,SVN 支持显式文件锁定(svn lock),适合二进制文件协作(如 PSD/AI 设计稿),
Git与SVN对比
| 对比维度 | Git | SVN |
|---|---|---|
| 版本模型 | 分布式版本控制(Distributed VCS),每个开发者本地有完整代码库副本 | 集中式版本控制(Centralized VCS),依赖中央服务器存储完整版本 |
| 工作流程 | 本地提交 → 分支协作 → 远程同步 | 中央服务器 → 本地修改 → 提交到中央服务器 |
| 离线操作 | 完全支持,本地可提交、查看历史、创建分支 | 仅支持本地修改,提交 / 查看历史需联网 |
- 分支创建与管理
- Git:分支创建为轻量级操作(仅创建指针),耗时毫秒级,支持并行开发多特性分支(如
feature/loginfix/bug123) - SVN:分支为文件复制操作,需占用大量存储空间,分支管理成本高
- 协作模式
- Git:支持分布式协作,开发者可从任意远程仓库拉取代码,通过
pull request机制审核合并 - SVN:所有变更需提交到中央服务器,协作依赖单一代码库,冲突解决更复杂
Git的主要缺点在于:1. 大文件存储: 普通 Git 对大文件不友好(每次修改需存储完整差异),推荐使用 Git LFS(Large File Storage)将大文件单独管理 2. 二进制文件:对二进制文件控制精度低。
TortoiseSVN
一、TortoiseSVN 客户端安装
(一)下载资源
-
官方下载地址:TortoiseSVN 下载页面
-
下载内容:
- 主程序安装包:根据操作系统位数选择对应版本(32-bit/64-bit),当前最新稳定版为 1.14.1
- 语言包:在下载页面下方选择中文(简体)语言包,需与主程序位数匹配(64-bit 系统选择 64 Bit 语言包)
(二)安装步骤
-
安装顺序:必须先安装主程序,再安装语言包,否则会报错
-
主程序安装:
- 双击主程序安装包,启动安装向导
- 连续点击 “下一步”,至 “自定义安装” 界面,可默认安装路径或自行修改
- 保持默认功能选项,点击 “下一步”,直至安装完成
-
语言包安装:
- 双击语言包安装文件
- 按照向导提示,点击 “下一步” 完成安装
-
语言设置:
- 在桌面空白处右键,选择 “TortoiseSVN”→“设置”
- 在 “常规设置” 中,选择 “语言” 为 “中文(简体)(中国)”
- 点击 “确定” 生效
(三)安装验证
- SVN 客户端为系统右键菜单插件,无独立桌面程序
- 验证方式:桌面空白处右键,查看是否出现 “SVN 检出”“TortoiseSVN” 等菜单选项
二、核心概念说明
- 版本库(Repository):SVN 服务器端存储项目所有版本数据的中央仓库,通过 URL 唯一标识
- 工作副本(Working Copy):从服务器下载到本地的项目文件副本,用户在本地对文件的修改需提交至服务器
- .svn 隐藏目录:记录工作副本的基准版本和更新时间戳,不可手动修改或删除,否则会破坏本地工作副本
三、项目检出(从服务器下载项目)
(一)准备工作
- 获取版本库 URL:从 SVN 服务器管理员处获取,或在 VisualSVN Server 中右键目标项目文件夹,选择 “Copy URL to Clipboard” 复制
- 示例 URL 格式:
https://DESKTOP-M4DJR1S/svn/fuxi/fuxi_SVN
(二)检出操作步骤
-
选择本地存储目录:在本地新建文件夹(或选择任意空白目录)
-
启动检出功能:右键目录空白处→选择 “SVN 检出 (K)...”
-
配置检出参数:
- 版本库 URL:粘贴复制的服务器项目 URL
- 检出至目录:默认当前目录,可点击浏览修改存储路径
- 检出深度:默认 “全递归”(下载所有层级文件)
- 版本选择:默认 “最新版本 (H)”,如需指定版本可选择 “版本 (R)” 并输入版本号
-
身份认证:输入 SVN 服务器分配的用户名和密码,可勾选 “保存认证 (S)” 避免重复输入
-
完成验证:弹出 “检出完成!” 提示,查看本地目录是否成功下载项目文件
四、常用操作指南
(一)文件 / 目录添加(Add)
场景:本地新建文件 / 目录后,添加到版本控制
-
操作方式一(先加入变更列表):
- 右键目标文件 / 目录→“TortoiseSVN”→“添加”
- 在弹出的对话框中确认添加的文件,点击 “确定”
- 右键所在目录→“SVN 提交 (C)...”
- 填写提交说明,勾选待提交文件,点击 “确定”
-
操作方式二(直接提交):
- 右键目标文件 / 目录→“SVN 提交 (C)...”
- 在提交对话框中勾选待添加的文件(状态显示为 “已增加”)
- 填写提交说明,点击 “确定”
(二)文件 / 目录删除(Delete)
场景 1:文件未加入版本控制
- 直接使用操作系统的删除功能(右键删除或按 Delete 键)
场景 2:文件已加入版本控制
-
操作方式一(SVN 菜单删除):
- 右键目标文件 / 目录→“TortoiseSVN”→“删除”
- 右键所在父目录→“SVN 更新 (U)...”
- 再次右键父目录→“SVN 提交 (C)...”
- 勾选已删除的文件,填写提交说明,点击 “确定”
-
操作方式二(系统删除后提交):
- 直接删除本地文件
- 右键所在父目录→“SVN 更新 (U)...”
- 右键父目录→“SVN 提交 (C)...”
- 在变更列表中勾选被删除的文件(状态显示为 “已删除”),点击 “确定”
(三)文件 / 目录改名(Rename)
- 右键目标文件 / 目录→“TortoiseSVN”→“改名”
- 在弹出的对话框中输入新名称,点击 “OK”
- 右键所在目录→“SVN 提交 (C)...”
- 勾选改名后的文件,填写提交说明,点击 “确定”
(四)版本回退(SVN Revert / 更新至版本)
场景 1:放弃本地未提交的修改(Revert)
- 右键目标文件 / 目录→“TortoiseSVN”→“还原”
- 确认还原操作,本地修改将被撤销,恢复至上次更新的版本
场景 2:回退到历史版本(更新至版本)
- 右键目标文件 / 目录→“TortoiseSVN”→“更新至版本 (U)...”
- 选择 “版本 (R)”,输入目标版本号(可通过 “显示日志 (L)” 查询历史版本号)
- 点击 “确定”,本地文件将更新为指定版本的内容
(五)检查修改(Check for modifications)
-
功能作用:查看本地工作副本与服务器版本的差异,包括未提交的本地修改和未更新的服务器修改
-
操作步骤:
-
右键工作副本目录→“TortoiseSVN”→“检查修改”
-
查看结果:
- 本地未提交的修改:显示文件的新增、删除、修改状态
- 服务器未更新的修改:勾选 “检查版本库” 可查看其他用户提交的变更
-
-
应用场景:提交前确认修改内容,避免误提交;同步前查看服务器是否有更新
(六)更新本地版本(SVN Update)
-
功能作用:将服务器最新版本的文件同步到本地,保持本地工作副本与服务器一致
-
操作步骤:
-
右键工作副本目录(或单个文件)→“SVN 更新 (U)...”
-
可选参数:
- 最新版本:默认同步服务器最新版本
- 指定版本:选择 “版本 (R)” 并输入版本号,同步至特定版本
- 忽略外部:勾选 “省略外部 (X)” 可忽略外部引用的文件
-
-
注意事项:更新前建议先检查本地修改,避免冲突
(七)提交本地修改(SVN Commit)
-
功能作用:将本地工作副本的修改(新增、删除、修改、改名等)上传至服务器,形成新的版本
-
操作步骤:
- 右键工作副本目录(或修改的文件)→“SVN 提交 (C)...”
- 填写提交日志:简要描述本次修改的内容(如 “修复登录功能 bug”“新增用户管理模块”)
- 勾选待提交的文件:确认变更列表中的文件为本次需提交的内容
- 点击 “确定”,完成提交
(八)查看操作日志(Show log)
-
功能作用:查询项目的历史操作记录,包括修改作者、时间、版本号、修改内容等
-
操作步骤:
- 右键工作副本目录→“TortoiseSVN”→“显示日志 (L)”
- 筛选条件:可设置日期范围、作者等筛选条件
- 查看详情:选中某条日志,可查看该版本的文件变更路径和具体修改内容
-
应用场景:版本追溯、问题定位、查看他人修改记录
(九)版本库浏览(Repo-browser)
-
功能作用:直接浏览服务器版本库的目录结构和文件,无需下载本地副本
-
操作步骤:
- 右键任意本地目录→“TortoiseSVN”→“版本库浏览 (R)...”
- 输入版本库 URL,点击 “确定”
- 输入用户名和密码,即可查看服务器上的项目文件列表
-
附加功能:查看文件锁定状态、版本信息等
五、版本库 URL 获取方法(VisualSVN Server)
- 打开 VisualSVN Server 管理工具
- 展开 “Repositories” 目录,找到目标项目文件夹(如 fuxi_SVN)
- 右键目标文件夹,选择 “Copy URL to Clipboard”
- 粘贴复制的 URL 即可用于本地检出或版本库浏览
六、图标状态含义
| 图标 | 状态说明 |
|---|---|
| 绿色对勾 | 工作副本状态正常,与服务器版本一致 |
| 红色感叹号 | 文件已修改,未提交 |
| 黄色感叹号 | 文件存在冲突 |
| 蓝色加号 | 文件已计划添加到版本控制 |
| 红色叉号 | 文件已删除,未提交 |