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

5) 修改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