一、安装svn服务器相关服务和依赖
yum -y install subversion

二、建立操作系统用户svn并设置密码,切换为svn用户
useradd svn; passwd svn
su – svn

三、创建版本库目录(此仅为目录,为后面创建版本库提供存放位置)
mkdir -p /home/svn/repositories/conf

四、创建多个svn版本库
cd /home/svn/repositories/
svnadmin create p1 (p1为你预期的版本库名称,可自定义)
svnadmin create p2 (创建第二个项目的版本库名称)

五、配置修改,使用统一的账户和权限去管控多个项目,可以将多个项目的authz和passwd文件统一放在一处,在多个项目的svnserve.conf文件中配置这两个文件的绝对路径,并在authz中对不同的项目设置用户访问权限。
cd /home/svn/repositories/p1/conf
cp authz passwd /home/svn/repositories/conf

六、conf目录下,一共存放三份重要的配置文件,
authz:负责账号权限的管理,控制账号是否读写权限
passwd:负责账号和密码的用户名单管理
svnserve.conf:svn服务器配置文件
db目录里面的包含我们上传到SVN服务器上面的文档、代码等数据的不同版本(有时需给db文件夹开放权限,否则客户端可能无法连接SVN服务器)
6.1、用户权限配置文件
vi authz
[groups]
#定义组,组成员有admin与root
admins = admin,root
p1users = a,b
p2users = c,d
#对版本库根路径设置权限,可以设置为你需要控制的路径,rw表示赋予此账号可读写的权限,请注意[]中的斜杠,需添加版本库名称在括号内
[/]
#admins组中的用户具有读写权限
@admins = rw
#其他所有人无权限。权限可以设置为只读(‘r’),读写(‘rw’),无权限(”)
* =

[p1:/] //p1的访问控制,c、d无法访问
@p1users = rw

[p2:/] //p2的访问控制,a、b无法访问
@p2users = rw

6.2、账号密码配置文件
vi passwd
[users]
admin = 123456
root = 123456
a = 123456
b = 123456
c = 123456
d = 123456

6.3项目1的配置文件
vi /home/svn/repositories/p1/conf/svnserve.conf
[general]
# force-username-case = none
# 禁止匿名访问。可以是read、write,none,默认为read
anon-access = none
#经过认证的用户有写权限
auth-access = write
#指定用户存放用户名与密码的文件,该文件位于conf目录下名为passwd
password-db = /home/svn/repositories/conf/passwd
#指定权限配置文件名,filename 是相对仓库中 conf 目录的位置,也可以设置为绝对路径,默认为authz
authz-db = /home/svn/repositories/conf/authz
#设置版本库域,如果两个版本库的认证域相同,他们将使用相同的密码数据。(指定仓库的认证域. 该选项主要被客户端使用, 用来关联缓存的认证证书和特定的某个或某些仓库, 正因为如此, 除非多个仓库使用了相同的密码数据库, 否则的话, 最好把每个仓库的认证域都设置 成独一无二的值. 仓库认证域的默认值是它的 UUID)
realm = p1

6.4项目2的配置文件
vi /home/svn/repositories/p2/conf/svnserve.conf
[general]
# force-username-case = none
# 禁止匿名访问。可以是read、write,none,默认为read
anon-access = none
#经过认证的用户有写权限
auth-access = write
#指定用户存放用户名与密码的文件,该文件位于conf目录下名为passwd
password-db = /home/svn/repositories/conf/passwd
#指定权限配置文件名,filename 是相对仓库中 conf 目录的位置,也可以设置为绝对路径,默认为authz
authz-db = /home/svn/repositories/conf/authz
#设置版本库域,如果两个版本库的认证域相同,他们将使用相同的密码数据。(指定仓库的认证域. 该选项主要被客户端使用, 用来关联缓存的认证证书和特定的某个或某些仓库, 正因为如此, 除非多个仓库使用了相同的密码数据库, 否则的话, 最好把每个仓库的认证域都设置 成独一无二的值. 仓库认证域的默认值是它的 UUID)
realm = p2

七、启动svn服务(-d:后台模式-r:服务的根目录)
svnserve -d -r /home/svn/repositories/

八、加入随操作系统启动
systemctl enable svnserve.service
#修改版本库路径
vi /etc/sysconfig/svnserve
OPTIONS=”-r /home/svn/repositories”

九、访问项目p1 URL
svn://IP/p1

访问项目p2 URL
svn://IP:3690/p2 (iP地址为你linux的ip,p2为前文创建的版本库名称。3690为svn默认端口,默认端口可以省略不写)