1. 前提已安装svn
安装:yum install subversion 查看版本:svnserve --version
2. 创建新的svn项目
假设安装的目录地址:/www/svn
1)进入到该目录
2)创建:svnadmin create /www/svn/test (test为测试目录)
3)进入到新的项目的conf目录下:cd /www/svn/test/conf
4)修改passwd文件:vi passwd 创建账号 = 密码
[users]
#harry = harryssecret
#sally = sallyssecret
wangjz = wangjz
- 修改authz 文件 (添加项目权限配置)vi authz 例如:[文件名:/] 账号 = 读写
[test :/]
wangjz = rw
多个用户
[groups]
php = wangjz,wangjz1,wangjz2
[test:/]
@php = rw
6)修改svnserve.conf 文件;vi svnserve.conf
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
7)停止svn
killall svnserve
8)启动svn项目
svnserve -d -r /www/svn/
加端口启动:svnserve -d -r /www/svn/test --listen-port 3691
查看svn进程 ps aux|grep svn
9)实时检出到指定文件夹,需要进入hooks文件夹里新建文件post-commit 内容如下:
#!/bin/bash
# description:用于实时检出的钩子
# 基本变量
export LANG=en_US.UTF-8
dateTime=`date +%F`
dateTimeMinute=`date +%H%M%S`
binSvn=/usr/bin/svn # 你svn的绝对路径
dirHtmlApp=/www/vhost/src #检出的web站点根目录
logFileName=/tmp/svn/svnhooks_${dateTime}.log
# svn配置
REPOS="$1"
REV="$2"
# 检出或者更新subversion,钩子的核心功能
echo "-- $dateTimeMinute" >> $logFileName
if [ ! -d $dirHtmlApp/.svn ]; then
# 检出SVN
echo "$binSvn co file://$REPOS/ $dirHtmlApp" >> $logFileName
$binSvn co file://$REPOS/ $dirHtmlApp
if [ $? -eq 0 ]; then
echo "checkout ok" >> $logFileName
else
echo "checkout error" >> $logFileName
fi
else
# 更新svn
echo " $binSvn up $REV $dirHtmlApp " >> $logFileName
$binSvn up $REV $dirHtmlApp >> $logFileName
if [ $? -eq 0 ]; then
echo " update sucess " >> $logFileName
else
echo " update fial " >> $logFileName
fi
fi
echo "--" >> $logFileName
给文件添加执行权限
chmod a+x /www/svn/test/hooks/post-commit