1、环境
centos7
2、安装svn

yum install subversion 

查看版本

svnserve --version

图片描述

3、创建版本库
先建目录

mkdir /var/svn

创建版本库

cd /var/svn
svnadmin create /var/svn/svnrepos

cd svnrepos

会看到自动生成的版本库文件:
图片描述

subversion目录说明:
db目录:就是所有版本控制的数据存放文件。
hooks目录:放置hook脚本文件的目录。
locks目录:用来放置subversion见艰苦锁定数据的目录,用来追踪存取文件库的客户端。
format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。
conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)。
进入conf目录(该svn版本库配置文件)cd conf/
authz文件是权限控制文件
passwd是帐号密码文件
svnserve.conf SVN服务配置文件
设置帐号密码

vi passwd

在[users]块中添加用户和密码,格式:帐号=密码,例如:dennis=0454
图片描述

设置权限

vi authz

在末尾添加如下代码:

[/]
dennis=rw 

(r:读,w:写)
图片描述

修改svnserve.conf文件

vi svnserve.conf

打开下面的几个注释:

anon-access = read #匿名用户可读
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /var/svn/svnrepos # 认证空间名,版本库所在目录

图片描述

启动svn版本库

svnserve -d -r /var/svn/svnrepos

停止SVN命令

killall svnserve

用ps -ef | grep svn 查看服务是否开启

图片描述

重点来了
现在我的nginx运行文件(/usr/local/nginx/html)和svn(/usr/bin/svn)的运行文件不在一起,所以要写一个钩子把他们链接起来。在svn所在的hooks文件夹下新建一个 post-commit 文件,然后将文件里写入:

#!/bin/sh
export LANG=en_US.UTF-8
SVN=/usr/bin/svn
WEB=/usr/local/nginx/html
$SVN update $WEB --username dennis --password 0454

图片描述

写好后执行:

 chmod 777 /var/svn/svnrepos/hooks/post-commit

关闭svnserve:

killall svnserve

启动svnserve:

svnserve -d -r /var/svn/svnrepos

接下来在nginx坐在的运行文件里(/usr/local/nginx/html)执行

 svn checkout  svn://IP/
 svn update

失落的额头
143 声望4 粉丝

学习使我快乐