Subversion(简称SVN)是一个开源的版本控制系统,通过分支管理系统,可以高效管理随时间变化的数据。本文介绍如何基于ECS部署和使用SVN。
准备工作
操作系统:CentOS 7.x。
实例安全组的入方向规则已放行22、80、443端口。具体操作,请参见添加安全组规则。
说明
svnserve模式还需要放行3690端口。
部署SVN
第一种方式
部署HTTP访问SVN
步骤一:安装SVN
1、运行以下命令,安装SVN。
bash
sudo yum install -y subversion
2、运行以下命令,查看SVN版本。
bash
svnserve --version
当回显类似如下所示时,说明SVN已安装

步骤二:安装Apache
1、运行以下命令,安装httpd
bash
sudo yum install httpd -y
2、运行以下命令,查看httpd版本。
bash
httpd -version
返回下图所示信息时,表示httpd服务已安装。

步骤三:安装mod_dav_svn
mod_dav_svn是一个Apache HTTP服务器的模块,用于提供SVN(Subversion)版本控制系统的Web访问功能。
运行以下命令,安装mod_dav_svn。
bash
sudo yum install mod_dav_svn -y
步骤四:配置SVN
1、依次运行以下命令,创建SVN版本库。
bash
sudo mkdir /var/svn
cd /var/svn
sudo svnadmin create /var/svn/svnrepos
2、运行以下命令,将SVN仓库的用户组修改为apache。
bash
sudo chown -R apache:apache /var/svn/svnrepos
3依次运行以下命令,查看自动生成的版本库文件。
bash
cd svnrepos
ls

4、运行以下命令,增加SVN版本库的用户和密码。
SVN默认使用明文密码,而HTTP并不支持明文密码,所以需要单独生成passwd文件。本示例中,增加用户userTest,密码设置为passWDTest。请根据实际情况选择并运行以下命令:
如果您第一次增加用户,运行命令时需要带上参数-c生成文件。
bash
sudo htpasswd -c /var/svn/svnrepos/conf/passwd userTest
如果您已经增加过用户,当后续还需要增加用户时,请运行以下命令。
bash
sudo htpasswd /var/svn/svnrepos/conf/passwd userTest
根据提示设置用户的密码。
5、运行以下命令,进入conf目录。
bash
cd /var/svn/svnrepos/conf/
6、设置账号的读写权限。
a.运行以下命令,打开权限控制文件。
sudo vim authz
b.按 i 键进入编辑模式。
c.移动光标至文件末尾,并添加如下代码(其中,userTest表示账号,r表示读权限,w表示写权限)。
bash
[/]
userTest=rw

d.按Esc键后,输入:wq保存并退出文件。
7、修改SVN服务配置。
a.运行以下命令,打开SVN服务配置文件。
bash
sudo vim svnserve.conf
b.按i键进入编辑模式。
c.移动光标找到如下配置行,删除行前面的注释符#和空格。
说明 每行不能以空格开始,且等号两端要有一个空格。
bash
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /var/svn/svnrepos

d.按Esc键后,输入:wq保存并退出文件
8.运行以下命令,启动SVN版本库。
本文示例中,启动命令直接指定到版本库。
bash
sudo svnserve -d -r /var/svn/svnrepos/
说明 运行killall svnserve命令可停止SVN服务。
9、运行命令,查看SVN服务是否开启。
bash
ps -ef |grep svn
返回下图所示信息时,表示SVN服务已经开启。

步骤五:配置Apache
1、运行以下命令,新增并编辑httpd配置文件。
bash
sudo vim /etc/httpd/conf.d/subversion.conf
2、按i键进入编辑模式。
3、在subversion.conf文件中输入以下配置信息。
bash
<Location /svn>
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Authorization SVN"
AuthzSVNAccessFile /var/svn/svnrepos/conf/authz
AuthUserFile /var/svn/svnrepos/conf/passwd
Require valid-user
</Location>
4、按Esc键后,输入:wq保存并退出文件。
5、运行以下命令,启动Apache服务。
bash
sudo systemctl start httpd.service
第二种方式
部署svnserve访问SVN
步骤一:安装SVN
1、运行以下命令,安装SVN。
bash
sudo yum install -y subversion
2、运行以下命令,查看SVN版本。
bash
svnserve --version
当回显类似如下所示时,说明SVN已安装。

步骤二:配置SVN
1、依次运行以下命令,创建SVN版本库。
bash
sudo mkdir /var/svn
cd /var/svn
sudo svnadmin create /var/svn/svnrepos
2、依次运行以下命令,查看自动生成的版本库文件。
bash
cd svnrepos
ls

3、设置SVN版本库的账号和密码。
a.运行以下命令,打开用户配置文件。
bash
cd conf/
sudo vim passwd
b.按i键进入编辑模式。
c.移动光标至[users]下,添加用户账号和密码。
添加账号和密码的格式为:账号 = 密码。例如,userTest(账号) =
passWDTest(密码),如下图所示(注意等号两端要有一个空格)。

d.按Esc键退出编辑模式,并输入:wq保存并退出
4、设置账号的读写权限。
a.运行以下命令,打开权限控制文件。
bash
sudo vim authz
b.按i键进入编辑模式。
c.移动光标至文件末尾,并添加如下代码(其中,userTest表示账号,r表示读权限,w表示写权限)。
bash
[/]
userTest=rw

d.按Esc键后,输入:wq保存并退出文件。
5、修改SVN服务配置。
a.运行以下命令,打开SVN服务配置文件。
bash
sudo vim svnserve.conf
b.按i键进入编辑模式。
c.移动光标找到如下配置行,删除行前面的注释符#和空格
说明 每行不能以空格开始,且等号两端要有一个空格。
bash
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /var/svn/svnrepos

d.按Esc键后,输入:wq保存并退出文件。
6、运行以下命令,启动SVN版本库。
本文示例中,启动命令直接指定到版本库。
bash
sudo svnserve -d -r /var/svn/svnrepos/
说明 运行killall svnserve命令可停止SVN服务。
7、运行命令,查看SVN服务是否开启。
bash
ps -ef |grep svn
返回下图所示信息时,表示SVN服务已经开启。

使用SVN
使用SVN管理代码的常见流程为:
1、Checkout(您提取源代码到本地)。
2、其他人修改并提交源代码到Repository。
3、Update(您获得最新的代码)。
4、您修改并调试成功源代码。
5、Commit(提交修改后的代码到Repository,其他程序员即可看到您的修改)。
提取源代码到本地(Checkout)
1、在本地Windows环境中下载并安装TortoiseSVN客户端。
2、在本地项目文件夹内的空白区域单击鼠标右键。
本示例中,项目文件夹为C:\Test。
3、在弹出菜单中,选择SVN Checkout... 。

4、填写如下信息后,单击OK。
URL of repository:版本库URL,源代码统一存放的地址。
HTTP访问模式:URL格式为http://<ECS实例公网IP>/svn/<SVN版本库名>。
svnserve访问模式:URL格式为svn://实例公网IP地址/。
当在版本库的上层目录启动SVN服务时,SVN检出的URL要对应加上版本库的名称。
Checkout directory:检出到本地的目录,本文示例中,目录为C:\Test。

说明 第一次登录需要输入账号和密码,即您在passwd文件中设置的用户名和密码。
检出完成示例如下。

获取更新(Update)
SVN服务端系统库上的项目更新后,您可在本地项目文件空白处单击右键,选择SVN Update ,即可自动完成下载最新项目,并会显示所有更新内容。

说明 在原项目文件夹内选择SVN更新,会自动覆盖原有内容。建议您先备份,再更新,防止自己原有的项目内容丢失。
提交修改(Commit)
1、完成以下操作,提交本地修改到服务端系统库中。
在项目文件空白处单击右键,选择SVN Commit... 。

2、输入本次提交的版本更新信息(所做修改的注释),选中要提交的操作内容,单击OK。
即可将本地项目提交到SVN服务器资源库,覆盖资源库项目从而实现更新。


还原文件
完成以下操作,还原SVN中被删除的文件。
1、打开本地项目文件夹,右键单击选择**SVN Checkout...**来检出数据。
2、删除其中一个文件。
3、根据您是否已提交修改选择相应的操作:
未提交时,右键单击空白处,选择TortoiseSVN > Revert... 。

已提交时,服务端系统库中数据已得到同步,系统也会将其保存的数据删除。此时,您需要采取以下方法还原数据:
1.右键单击空白处,选择TortoiseSVN > Show log查看操作日志。
2.在日志中,单击删除的日志行,下方会显示已删除的数据。

3.右键单击已删除的数据,然后单击Save revision to... 。

4.在保存对话框,设置文件名,单击保存(S),将已删除的文件保存版本至删除前的位置。

4、打开原文件夹,单击SVN Commit...,即可同步文件和系统库中的数据。