centos 配置svn 并自动更新至web 目录下

centos 配置svn 并自动更新至web 目录下

[TOC]

1.安装svn 直接yum 安装即可没什么好说的
yum install -y subversion
2. 查看是否安装好了
[root@ixxxxx /]# svnserve --version
svnserve,版本 1.7.14 (r1542130)
编译于 Nov 20 2015,19:25:09

版权所有 (C) 2013 Apache 软件基金会。
此软件包含了许多人的贡献,请查看文件 NOTICE 以获得更多信息。
Subversion 是开放源代码软件,请参阅 http://subversion.apache.org/ 站点。

下列版本库后端(FS) 模块可用:

* fs_base : 模块只能操作BDB版本库。
* fs_fs : 模块与文本文件(FSFS)版本库一起工作。

Cyrus SASL 认证可用。

出现上面的一坨东西就行了

3.创建仓库
svnadmin create /var/svn/project
cd project
[root@xxxx project]# ls
conf db format hooks locks README.txt

会有这些文件
正常需要svn 提交的话仅需配置conf 中的文件就行了 hooks 中可以配置自动更新

4.创建用户及设置权限
[root@xxxxxxx project]# cd conf/
[root@xxxxxxx conf]# ls
authz passwd svnserve.conf
//authz 配置用户的权限
//passwd 配置svn 的用户
//svnserve.conf 配置svn的信息
//假设我们svn 用户的组是svngroup
//svn 用于登录的用户名是svnuser 密码是svnpass
// /var/svn/project //版本库所在

vi authz
//添加上这些参数 这里[/] 可以写成 [project:/]
[groups]
svngroup = svnuser
[/]
@svngroup = rw

//配置用户及对应的密码
vi passwd
svnuser =svnpass

配置svn 服务
anon-access=none//匿名用户访问权限:无
auth-access= write //普通用户访问权限:读、写
password-db= passwd //密码文件
authz-db= authz //权限配置文件
realm = /var/svn/project //版本库所在1
5.启动svn服务
[root@xxxxxxx conf]# svnserve -d -r /var/svn
svnserve: E000098: 不能绑定服务器套接字: 地址已在使用
//标示已经启动了需要先杀掉再重新启动
[root@xxxxxxx conf]# killall svnserve
[root@xxxxx conf]# svnserve -d -r /var/svn
6. 检出到工作目录

首先我们来到工作目录我的工作目录是 /var/www/html/
而这里我绑定了多个域名 这里有多个文件夹,假设使用svn 的这个文件夹是 aaaa

svn co svn://localhost/project
mv project aaaa
7.在其他机器上检出 一个版本

这个没什么好说的 因为每个人使用的工具不一样 我这里使用的是smart svn for mac
输入 svn 地址 用户名 密码 即可

8.自动同步到工作目录
cd /var/svn/project/hooks
//移动到这个目录下
vi post-commit
//输入下面的内容
#!/bin/sh
REPOS="$1"
REV="$2"
SVN_PATH=/usr/bin/svn
WEB_PATH=/var/www/html/aaaa
SVN_USER=svnuser
SVN_PASS=svnpass
WEB_USER=root
LOG_PATH=/tmp/svn.log
echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
$SVN_PATH update $WEB_PATH --username $SVN_USER --password $SVN_PASS --no-auth-cache >> $LOG_PATH
chown $WEB_USER.$WEB_USER -R $WEB_PATH

然后是 给 post-commit 配上执行权限

chmod 755 post-commit

这样就可以每次 客户端commit 了之后自动同步到web 目录下了

注意有可能会不会自动同步

我们查看一下日志

vi /tmp/svn.log

2016-12-30 14:50:29
root,/var/svn/project,48
2016-12-30 14:51:44
root,/var/svn/project,49
2016-12-30 15:30:56
root,/var/svn/project,50
2016-12-30 15:44:18
root,/var/svn/project,51

发现 他已经可以输出,但是并没有执行 更新的命令 猜测是SVN_PATH 配置的不对

[root@xxxxxx /]# find / -name "svn"
/usr/bin/svn

把找到的路径修改 一下即可

//
$SVN_PATH update $WEB_PATH --username $SVN_USER --password $SVN_PASS --no-auth-cache >> $LOG_PATH

转载请注明来自** 李龙的博客**的 《centos 配置svn 并自动更新至web 目录下》

你可能感兴趣的:(centos 配置svn 并自动更新至web 目录下)