Subversion(简称SVN)是一款自由开放的版本控制软件,Subversion可以管理文件、文件夹以及记录它们的修改状况。

1、关闭SELinuxfirewalld

2、安装SVN:# yum -y install subversion

3、查看SVN版本和帮助信息:

# svnserve --version

blob.png

# svnserve --help

# svn ?

4、创建使用SVN的用户:

# groupadd -r svn

# useradd -r -g svn -s /sbin/nologin marion

# useradd -r -g svn -s /sbin/nologin keyso

5、创建SVN版本库:

# mkdir -pv /svn/docs

# svnadmin create /svn/docs

# ls -lh /svn/docs

blob.png

6、修改用户账号文件:# vim /svn/docs/conf/passwd,在[users]配置段中新增如下代码

marion = 123456

keyso = abcdef

7、修改权限控制文件(设置哪些用户可以访问哪些目录):# vim /svn/docs/conf/authz,在末尾新增如下代码

[groups]

admin = marion,keyso

[/]

@admin = rw

* =

备注:admin组为权限组,组中有2个用户marionkeyso,对SVN根目录都具有读写权限。* =表示其他所有人没有任何权限,权限可以设置为只读(r)、读写(rw)和无权限(空)。

8、修改服务配置文件:# vim /svn/docs/conf/svnserve.conf,在[general]配置段中新增如下代码:

anon-access = none                //匿名用户访问无权限,权限可以是readwritenone,默认为read

auth-access = write               //授权用户有写权限

password-db = passwd         //密码数据库的路径

authz-db = authz                  //访问控制文件

realm = /svn/docs                 //认证命名空间,即版本库所在目录

9、启动SVN

# svnserve -d -r /svn/docs        //-d:守护进程,-rSVN根目录,即版本库的路径

# ps -ef | grep svn | grep -v grep

blob.png

# ss -tunlp | grep 3690

blob.png

10、开机自启动:

# mkdir -pv /scripts

# vim /scripts/svnrun.sh

#!/bin/bash

/usr/bin/svnserve -d -r /svn/docs

# chmod +x /scripts/svnrun.sh

# vim /etc/rc.d/rc.local,末尾新增代码:/scripts/svnrun.sh

# chmod +x /etc/rc.d/rc.local

11、Windows客户端下载安装图形工具TortoiseSVN(下载地址https://tortoisesvn.net/

12、创建用于存放版本库的目录,并创建SVN客户端版本库:

blob.png

13、输入版本库的URL地址:

blob.png

14、输入用户名和密码:

blob.png

blob.png

blob.png

blob.png

15、在版本库中新建测试文件svntest.docx,鼠标右键空白处,将其添加到版本库:

blob.png

blob.png

blob.png

blob.png

blob.png

blob.png

16、在另一台服务器上使用另一个账户登录SVN

blob.png

blob.png

blob.png

blob.png

blob.png

17、在版本库中新建测试文件svntest2.txt,鼠标右键空白处,将其添加到版本库:

blob.png

blob.png

blob.png

blob.png

blob.png

18、再次使用marion账户更新版本库:

blob.png

blob.png

blob.png

keyso的文件已被更新过来

19、配置SVN支持HTTP方式访问(支持http://协议):

# yum -y install httpd mod_dav_svn

# ls /etc/httpd/modules | grep svn

blob.png

# vim /etc/httpd/conf.d/subversion.conf       //创建文件

<Location /svn>

DAV svn

SVNPath /svn/docs

AuthType Basic

AuthName "Subversion repos"

AuthUserFile /svn/docs/conf/.passwd

AuthzSVNAccessFile /svn/docs/conf/authz

Require valid-user

</Location>

# httpd -t

创建用户:

# htpasswd -c -m /svn/docs/conf/.passwd marion  -->  123456

# htpasswd -m /svn/docs/conf/.passwd keyso  -->  abcdef

apache用户对/svn/docs目录具有写权限:

# setfacl -d -m user:apache:rw /svn/docs

# getfacl /svn/docs

# systemctl start httpd.service

# systemctl enable httpd.service

通过浏览器访问SVN服务器:

blob.png

blob.png

通过TortoiseSVN访问:

blob.png

blob.png

blob.png

blob.png