1.SVN服务器搭建步骤

1.1 安装

yum install subversion

1.2 查看安装位置

rpm -ql subversion
SVN安装路径

1.3 svn在bin目录下生成了几个二进制文件,输入 svn –help可以查看svn的使用方法。

SVN安装路径

1.4 创建svn版本库目录

mkdir -p /var/svn/svnrepos

  • 为了规范,一般在目录下再创建如下子目录,用来更好的进行版本管理
    1
    2
    3
    mkdir  -p   /var/svn/svnrepos/trunk
    mkdir -p /var/svn/svnrepos/tags
    mkdir -p /var/svn/svnrepos/branches

1.5 创建版本库

svnadmin create /var/svn/svnrepos

  • 执行了这个命令之后会在/var/svn/svnrepos目录下生成如下这些文件
    SVN安装路径

1.6 进入conf目录(该svn版本库配置文件)

  • authz文件是权限控制文件
  • passwd是帐号密码文件
  • svnserve.conf SVN服务配置文件

1.7 设置帐号密码

vi passwd

  • 在[users]块中添加用户和密码,格式:帐号=密码,如ybphp=1234

1.8 设置权限

vi authz
在末尾添加如下代码:

1
2
[/]
ybphp=rw

意思是版本库的根目录,账号ybphp对其有读写权限,w代表只有读权限。

1.9 修改svnserve.conf文件

vi svnserve.conf

打开下面的几个注释:

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

注意:解开注释时要删除#后面的空格

1.10 启动svn版本库

svnserve -d -r /var/svn/svnrepos

1.11查看SVN服务是否开启

ps -ef |grep svn

  • 备注:SVN服务的默认端口为TCP 3690;如果是在阿里云上部署,需要登录ECS管理控制台,添加安全组规则放行TCP 3690端口;

1.11 在windows上测试

  • 新建一个测试文件夹,在该文件夹下右键选择 SVN checkout如下图(要事先安装TortoiseSVN):
    SVN安装路径

  • 填写SVN的地址,如下图:
    SVN安装路径

  • 输入密码,如下图:
    SVN安装路径

2.Linux下SVN自动更新web

2.1 创建钩子文件post-commit并备份文件

1
2
cd /home/svn/svnrepos/hooks
cp post-commit.tmpl post-commit

2.2 钩子脚本

  • 添加脚本内容如下:
    1
    2
    3
    4
    5
    6
    7
    #!/bin/sh
    export LANG=zh_CN.UTF-8
    SVN_PATH=/var/svn/svnrepos
    WEB_PATH=/var/www/svnrepos
    LOG_PATH=/tmp/svn.log
    echo whoami,$REPOS,$REV >> $LOG_PATH
    $SVN_PATH update --username ybphp --password ybphp $WEB_PATH --no-auth-cache >> $LOG_PATH

2.3 让post-commit有执行的权限,并将checkout的项目相关权限和宿主改一下

1
2
chown www:www post-commit
chmod +x post-commit

2.4 重启svn并迁出代码

1
2
3
4
5
6
7
8
9
10
11
ps -ef|grep svn
#kill 查到的进程号

#重启svn服务
svn svnserve -d -r /var/svn

# 进入项目目录
cd /var/www/svnrepos

#迁出代码
svn checkout http://127.0.0.1/svnrepos

3.Linux下SVN多版本库管理

3.1 创建多个版本库

1
2
3
4
mkdir -p  /var/svn/project1
mkdir -p  /var/svn/project2
svnadmin  create  /var/svn/project1
svnadmin  create  /var/svn/project2
  • 修改配置文件参考上面步骤,单独配置即可,最后记得重启svn服务器!

  • 如果想多个版本共用一个配置文件,可将配置文件authz,passwd放在svn目录下面,然后在每个项目的svnserve.conf文件里面引入即可!