Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。
这些数据放置在一个中央资料档案库(repository) 中。这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。这样您就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。
SVN 的一些概念
- repository(源代码库):源代码统一存放的地方
- Checkout(提取):当您手上没有源代码时,您需要从repository checkout一份源代码
- Commit(提交):如果您已经修改了代码,您需要Commit到repository
- Update(更新):当您已经Checkout了一份源代码,Update一下,您就可以与Repository上的源代码同步,您手上的代码就会有最新的变更
一、安装SVN
本文以CentOS7.3为例,说明如何在CentOS7.3上手动搭建svn服务器。
1. 远程连接Linux;
2. 运行以下命令安装SVN
yum install subversion
3. 运行以下命令查看SVN版本
svnserve --version
如图所示:
4. 按照以下步骤建立版本库:
4.1 运行以下命令创建目录
mkdir /var/svn
4.2 依次执行以下命令常见版本库
cd /var/svn
svnadmin create /var/svn/svnrepos
4.3 依次执行以下命令查看自动生成版本库文件
cd svnrepos
ls
Subversion目录说明:
- db目录:所有版本控制的数据存放文件。
- hooks目录:放置hook脚本文件的目录。
- locks目录:用来追踪存取文件库的客户端。
- format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。
- conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)。
4.4 运行以下命令,进入conf目录(该SVN版本库配置文件),返回结果如下
cd conf/
ls
- authz:是权限控制文件。
- passwd:是账号密码文件。
- svnserve.conf:SVN服务配置文件
4.5 按以下步骤设置账号密码:
4.5.1 执行以下命令,编辑passwd文件
vim passwd
4.5.2 按 i 键进入编辑模式
4.5.3 在 [users]
块中添加用户账号和密码,格式:账号=密码,比如示例中的suzhan = redhat(注意等号两端要有一个空格)
4.5.4 按 ESC 键退出编辑模式, 输入 :wq 命令保存并退出
4.6 按照以下步骤设置权限:
4.6.1 执行以下命令,编辑authz文件;
vim authz
4.6.2 按 i 键进入编辑模式;
4.6.3 在末尾添加如下代码(其中,r表示读,w表示写)
[/]
suzhan=rw
4.6.4 按 ESC 键退出编辑模式, 输入 :wq 命令保存并退出
4.7 按照以下步骤修改svnserve.conf文件
4.7.1 运行以下命令,编辑svnserve.conf文件
vim svnserve.conf
4.7.2 按 i 键进入编辑模式;
4.7.3 打开以下几个注释(注意每行不能以空格开始,等号两端要有一个空格):
anon-access = read #匿名用户可读,您也可以设置 anon-access = none,不允许匿名用户访问。设置为 none,可以使日志日期正常显示 auth-access = write #授权用户可写 password-db = passwd #使用哪个文件作为账号文件 authz-db = authz #使用哪个文件作为权限文件 realm = /var/svn/svnrepos #认证空间名,版本库所在目录
4.7.4 按 ESC 键退出编辑模式, 输入 :wq 命令保存并退出
5. 运行以下命令启动SVN版本库
svnserve -d -r /var/svn/svnrepos #启动SVN版本库
ps -ef |grep svn #查看SVN服务是否已开启
如果返回结果如下图所示,表示SVN服务已经开启。
6. 添加安全组规则
SVN服务的默认端口为TCP 3690。 需要防火墙的安全规则中添加TCP 3690端口(可参照mysql打开3690端口)。
7. 在Windows上测试SVN服务
svn://公网ip/ #SVN服务器的根目录
8. 运行以下命令停止SVN命令
killall svnserve
二、卸载SVN
yum remove subversion
参考文章:阿里云>搭建和使用SVN