Linux(centos7)下搭建SVN服务器

通过yum命令安装svnserve,命令如下:

yum -y install subversion

此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停止命令运行

若需查看svn安装位置,可以用以下命令:

rpm -ql subversion

查看版本号:

svnserve --version

创建svn版本库

创建一个文件目录:

mkdir /home/svn/xxx

创建svn版本库:

svnadmin create /home/svn/xxx(xxxx为你预期的版本库名称,可自定义)

配置修改

创建svn版本库成功后,进入 xxx 目录的 conf 目录下:

cd /home/svn/xxx/conf

在 conf 目录下,一共存放三份重要的配置文件,svn 服务器配置文件(svnserve.conf)、 负责账号和密码的用户名单管理(passwd)、负责账号权限的管理,控制账号是否读写权限(authz)。

配置权限配置文件authz

编辑 authz 文件(注意:[/]也是必须的

说明:两个站点为 bbs,blog,所以分为三个组超级管理组 admin、bbs 管理组 bbsadmin、blog 管理组 blogadmin。超级管理组 admin 可以读写所有站点内容,而bbsadmin对bbs站点可以读写,而只能读blog站点。以及blogadmin对blog站点可以读写,对bbs站点只读。

groups配置格式: 组名 = 账号名 (注意:配置时前面一定不要有空格)
下面 repository 这个特别注意,很多文档没有说明,这里写的格式是:[你真实的目录名称:/],因为我这里是 /home/svn/project 所以我写的是 project:/
接下来写:
@组名 = rw 或者 r (注意@前一定不能有空格),例如

注:这里我只配置了一个用户,以后要有再加,下面是我实际配置截图:

配置用户管理文件passwd

添加组用户以及密码,配置格式:账号 = 密码 (注意:这里账号前面一定不能有空格

配置 svn服务综合配置文件svnserve.conf

有些文档说这个可以不用修改配置,直接使用默认的即可。这是个很大的误区。如果不修改此文件,那么就会导致客户端一系列的问题。有可能拉取(checkout)代码就报权限错误,有可能你明明没有设置账户密码但是svn却根本不提示你输入账号密码。

如果没有设置anon-access = none 和 auth-access = write,则拉取代码没有权限。如果设置了anon-access = write而没有设置auth-access = write则客户端根本不会出现账户密码输入框而能正常拉取提交代码,即使你客户端怎么清除账号密码都不会弹出来。这个是非常之危险的,绝对不能这么干。
所以设置必须为:
anon-access = none
auth-access = write
另外password-db = passwd这个只需要去掉前面的注释和空格即可。
realm = /home/svn 这个一定要注意跟你svnserve -d -r /home/svn 这个地址保持一致。如果是这样的:
(realm = /home/svn/project 而你 svnserve -d -r /home/svn) 或者(realm = /home/svn 而你 svnserve -d -r /home/svn/project) 这样的话,也会有一些问题,如权限错误等等。

启用svn,连接svn以及关闭svn

启动命令:svnserve -d -r /home/svn

输入命令ps -aux | grep svnserve可以查看到svn进程

至此,服务器端配置已经OK了。可以用账号在客户端试试看看拉取,更新,提交代码是否ok

关闭svn,通过ps -aux|grep svn 查看到的svn进程id来进行关闭