SVN 基础
· 阅读需 12 分钟
Apache Subversion 通常被缩写成 SVN,是一个开放源代码的集中式版本控制系统(Centralized Version Control System (CVCS)),本篇主要介绍 SVN 的基础功能与指令
SVN
Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。
SVN vs GIT
可以对 SVN 和 GIT 的部分命令进行一个类比:
SVN | GIT | |
---|---|---|
集中式版本控制系统 | 分布式版本控制系统 | |
创建 repository | create | init |
拉取库到本地 | checkout | clone |
提交更改 | commit | commit & push |
同步代码库 | update | pull |
删除文件 | delete | rm |
创建分支 | copy | branch |
切换分支 | switch | checkout |
回滚代码 | revert | reset |
SVN 生命周期
- 创建 repository (create)
- 拉取代码到本地 (checkout)
- 更新/还原库 (update)
- 执行变更 (add, delete, mkdir)
- 复查变化 (status)
- 修复错误 (revert)
- 解决冲突 (diff)
- 提交更改 (commit)
创建 repository (create)
对每个库来说,大多数情况下这个操作只会执行一次
svnadmin create /path/to/repository
拉取代码到本地 (checkout)
对程序员来说,当开始接触该项目时,先要从服务器上把现有代码拉取下来,其命令格式如下:
svn checkout URL [PATH] # 可简写为 svn co
# URL: 版本库的路径
# PATH: 本地副本存放的路径(可选),不指定则拉取到当前目录
eg:
svn checkout http://svn.example.com/repo /path/to/local/repository
更新/还原库 (update)
当你有一段时间没有动过这个库,要重新开始修改时,最好先把本机的代码和服务器的同步一下,使用 svn update
即可将本地代码更新到最新版本 (前提是本地没有之前未提交的代码)。除此之外,如果需要回退版本,也可以使用该命令,具体各格式如下:
svn update # 更新到最新版本,可简写为 svn up
svn update -r [版本号] # 更新到指定版本
svn update [PATH] # 更新指定路径的文件
eg:
svn update # 将当前目录及其子目录更新到最新版本
svn update -r 10 # 将当前目录及其子目录更新或还原到版本10
svn update -r 10 readme.md # 将 readme.md 更新或还原到版本10
执行变更 (add, delete, mkdir)
万事俱备之后,可以开始自己的修改,包括增删改等操作。和 git 一样,在添加新文件(touch
)/文件夹(mkdir
)之后,都要执行 svn add
将文件以及目录的名称添加给版本控制系统。删除文件时应该使用 svn delete
命令,而不是直接使用 rm
进行删除
svn add file
svn delete file # 可简写为 svn del
svn mkdir dir # 相当于 mkdir dir && svn add dir