Linux安装svn及配置

环境

centos6.4

安装svn

1
yum -y install subversion

配置

建立版本库目录

1
2
3
mkdir /www/svndata

svnserve -d -r /www/svndata

建立版本库

创建一个新的Subversion项目

1
svnadmin create /var/www/svndata/njlrxx

配置允许用户jiqing访问

1
2
3
cd /var/www/svndata/njlrxx/conf

vi svnserve.conf
1
2
3
4
5
anon-access=none

auth-access=write

password-db=passwd

注:修改的文件前面不能有空格,否则启动svn server出错

1
vi passwd
1
2
3
4
5
6
7
[users]

#<用户1> = <密码1>

#<用户2> = <密码2>

jiqing=123456

客户端连接

1
2
3
4
5
svn co svn://ip/njlrxx

用户名:jiqing

密码:123456

实现SVN与WEB同步

  • 设置WEB服务器根目录为/var/www/webroot

  • checkout一份SVN

svn co svn://localhost/njlrxx /var/www/webroot/njlrxx

修改权限为WEB用户 ( 否则无法远程up )

chown -R apache:apache /var/www/webroot/njlrxx

  • 建立同步脚本
1
2
3
cd /var/www/svndata/njlrxx/hooks/

cp post-commit.tmpl post-commit

编辑post-commit,在文件最后添加以下内容

1
2
3
4
5
6
7
8
9
10
11
REPOS="$1"

REV="$2"

BASEPATH=/var/www/webroot/njlrxx

WEBPATH="$BASEPATH/"

export LANG=zh_CN.UTF-8

svn update $WEBPATH --username jiqing --password 123456 --no-auth-cache

增加脚本执行权限

chmod +x post-commit

最后操作是关闭服务然再打开服务:

svn服务的关闭:

kill all svnserve

svn开启:

svnserve -d -r /var/www/svndata

SVN自动同步程序执行流程:

1、用户提交文件到SVN服务器,提交操作成功后触发post-commit脚本

2、在post-commit版本文件中使用php_script.php执行PHP脚本

3、在PHP脚本中通过exec系统调用更新服务器上的版本库工作副本

4、根据更新操作结果日志,对另一个SVN版本库进行对应的操作处理

当然,你也可以手动同步到web:(以php为例)

  • 创建 svn.php 到你的项目根目录(可以是php-fpm能解析的目录也可,只是需要更改下面对应的项目地址),文件内容如下:
1
2
3
4
5
6
7
8
9
<?php

$project = __DIR__; // 项目地址

$str = "svn update {$project} --username 用户名 --password 密码 --no-auth-cache 2>&1";

$res = @shell_exec($str);

var_dump($res);

注意:需要将项目所属组改到 web服务器用户:chown -R nginx:nginx 项目/ , 否则会出现权限不够的情况

  • 通过web访问 项目地址/svn.php 即可同步你的代码到web上面。
关注作者公众号,获取更多资源!
赏作者一杯咖啡~