centos7 部署和使用SVN

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...,即可同步文件和系统库中的数据。

相关推荐
编程学委8 小时前
Idea(2023版)使用Svn
java·svn·intellij-idea
口嗨农民工2 天前
svn使用之创建分支进行开发
svn
通往曙光的路上4 天前
day23_密码加密 前端验证码 监听器 svn版本控制
前端·svn
itas1096 天前
软件项目管理工具
git·svn·项目管理
jingshaoyou8 天前
ubuntu 搭建SVN服务器
服务器·ubuntu·svn
口嗨农民工12 天前
svn 回退某个文件进行上传
svn
口嗨农民工15 天前
SVN冲突处理相关,标识 C 语言源文件(.c)的不同版本或冲突状态
c语言·svn
默默coding的程序猿18 天前
3.git的分支携带问题是什么?怎么解决?
java·git·python·svn·gitee·github·intellij-idea
摇滚侠21 天前
Eclipse MyEclipse MyEclipseCI 安装SVN插件及使用说明
svn·eclipse·myeclipse