本来在 windows 下操作 svn,是不需要指令的,直接通过文件系统右键菜单里的快捷键就可以轻松搞定 svn 的一些基本操作。

后面部署到 Linux 服务器,没有安装什么 GUI 之类的图形化用户界面,所以需要单独熟悉一下 svn 的一些基本终端指令。

1.svn help

直接查看所有的 svn 指令

2.svn checkout

从 svn 库检出项目代码。
示例:
svn checkout svn://192.168.1.1/myproject/doc /home/test/ --username myname --password password

3.svn add | svn commit

添加到版本库和提交到版本库。
操作基本与 git 一致。
svn add . 将当前目录下的所有修改或者新增的文件都添加到此次提交
svn commit -m "" 将此次所有修改提交到版本库
svn commit -m "update file aa.txt" aa.txt 特别地,将修改直接提交(单个文件或者符合某种正则的所有文件)

4.svn update

更新当前目录下的文件
svn update abc 更新 abc 目录下的文件
svn update -r 版本号 abc 将 abc 目录文件更新恢复到某个版本

5.svn delete filename

删除文件

6.svn status

查看当前目录所有文件状态

查看文件进行过的修改,第一列显示当前版本,第二列显示修改时的版本,第三列显示修改人,第四列显示修改文件
svn status -v abc

7.svn log

查看提交的日志

svn log -l4 查看最近 4 条日志

svn log aa.txt 查看 aa.txt 文件的记录

8.svn info

查看项目信息

9.svn list

查看目录下的文件列表
svn list svn://192.168.1.1/doc

10.svn export

只拿出项目,不和 svn 版本库关联
svn export svn://192.168.1.1/doc /home/mytest 拿出最新的代码
svn export -r 需要的版本号 svn://192.168.1.1/doc /home/mytest 拿出指定版本的代码

11.svn revert

撤销修改,文件回退到之前的版本
svn revert ab.txt 撤销对ab.txt 文件的修改
svn revert --recursive . 撤销当前目录下的所有修改

12.svn diff

文件比对
svn diff ab.txt 查看本地与版本库里的文件的差异
svn diff -r 12:14 ab.txt 查看 12 和 14 版本里文件的差异

与 git 的对比

和 git 类似, svn 具有相同的代码版本管理功能。svn 优点是部署简单,详见Linux 下安装、启动和关闭 svn 服务端。客户端直接下一个 tortoiseSVN 软件,服务器端直接用 yum 就可以安装,配置的项目、成员授权规则简单,很容易上手。而缺点也是显而易见的,没有代码 review,不能在线查看代码版本库及文件内容,对于复杂一点的项目,分配权限和管理都比较麻烦。