SVN 检出(Checkout)完全操作指南
(一次性讲清楚所有常见方式、场景、参数、最佳实践)
1. 基本概念
- 检出 = 把 SVN 服务器上的代码第一次下载到本地,并建立与服务器的“绑定关系”
- 检出后本地目录就变成一个“工作副本”(Working Copy)
- 之后你就可以执行 update、commit、diff 等操作
2. 最常用的 6 种检出方式(记住这 6 个就够你用一辈子)
| 场景 | 命令示例 | 说明与推荐度 |
|---|---|---|
| 1. 检出主干(日常开发) | svn checkout https://svn.example.com/myproject/trunk | ★★★★★ 最常用 |
svn co https://svn.example.com/myproject/trunk mywork | co 是 checkout 的缩写 | |
| 2. 检出整个仓库根 | svn checkout https://svn.example.com/myproject ./myproject | 得到 trunk/branches/tags 三个文件夹 |
| 3. 检出特定分支 | svn checkout https://svn.example.com/myproject/branches/release-1.0 | 开发/维护老版本时使用 |
| 4. 检出某个 tag(发布版本) | svn checkout https://svn.example.com/myproject/tags/RELEASE_1.0.0 | 看历史版本、回滚、打包时使用 |
| 5. 浅检出(只下最新版本,不下历史) | svn checkout --depth empty https://svn.example.com/myproject/trunk | 超大项目首次检出加速 |
然后再 svn update --set-depth infinity 逐步展开 | ||
| 6. 仅检出部分目录 | svn checkout https://svn.example.com/myproject/trunk/src src | 只想拿某个子目录 |
3. 不同协议的完整 URL 写法
| 协议 | URL 示例 | 端口 | 备注 |
|---|---|---|---|
| https:// | https://svn.company.com/repos/myproject/trunk | 443 | 推荐外网/公司标准 |
| http:// | http://192.168.1.100/svn/myproject/trunk | 80 | 内网不加密 |
| svn:// | svn://192.168.1.100/myproject/trunk | 3690 | 最快(svnserve 模式) |
| svn+ssh:// | svn+ssh://user@svn.company.com/svn/myproject/trunk | 22 | 最安全,强制走 SSH |
| file:// | file:///d:/svn/repos/myproject/trunk(Windows) | – | 本地仓库测试用 |
file:///svn/repos/myproject/trunk(Linux/macOS) | – |
4. 实战最常用的 3 种命令(直接复制粘贴)
# 场景1:日常开发(最常见)
svn checkout https://svn.yourcompany.com/myproject/trunk myproject
# 场景2:只想拿最新代码,不想等太久(大仓库救星)
svn checkout --depth=immediates https://svn.example.com/bigproject/trunk bigproject
cd bigproject
svn update --set-depth=infinity # 需要哪些目录再逐步展开
# 场景3:检出某个正式发布版本用于打包或查看
svn checkout https://svn.example.com/myproject/tags/v2025.11.22 release-20251122
5. 检出时常用参数(强烈建议掌握)
| 参数 | 说明 | 推荐场景 |
|---|---|---|
--depth empty | 只下载根目录,不下载文件 | 超大仓库首次加速 |
--depth immediates | 下载目录结构+文件(但文件内容为空) | 先浏览结构 |
--depth infinity | 完整下载(默认) | 正常开发 |
--username xxx | 指定用户名(不让每次输入) | 脚本/CI |
--password xxx | 指定密码(慎用!明文) | 只在安全脚本里 |
--non-interactive | 不交互(CI/CD 必加) | 自动化环境 |
--trust-server-cert | 信任自签名证书(内网 HTTPS 常见) | 自建 SVN 服务器 |
示例(内网自签名 HTTPS + 自动化):
svn checkout --username zhangsan --password 123456 \
--non-interactive --trust-server-cert \
https://svn.inner.com/myproject/trunk myproject
6. 检出后立刻验证是否成功
cd myproject
svn info # 看到 URL、Repository Root、Revision 就说明成功
svn status # 正常应该是空的(没有 ? 号)
现在你已经完全掌握 SVN 检出了!
把你现在的 SVN 地址贴出来(或者告诉我用 svnserve 还是 https),我可以直接给你一条最合适的检出命令。