1.环境
阿里云 centos6.3
2.安装svn
yum -y install subversion
3.配置
建立版本库目录
 
mkdir /home/svndata
svnserve -d -r /home/svndata
4.建立版本库
 
创建一个新的Subversion项目
 
svnadmin create /home/svndata/smsyun

 
cd /home/svndata/smsyun/conf
(1)vi svnserve.conf    //配置版本库信息和用户文件和用户密码文件的路径、版本库路径

# anon-access = read
# auth-access = write
# password-db = passwd
# realm = smsyun
//这四行,前面的#号和空格去掉,变成
anon-access = none      //改成none
auth-access = write
password-db = passwd
realm = smsyun           //改成自己的版本库
保存退出
注:修改的文件前面不能有空格,否则启动svn server出错
 
(2)vi authz     //文件,创建svn组和组用户的权限

[group]

smsyun = ddl,shl //创建一个smsyun的组,并制定两个用户ddl和shl

[/]             //制定根目录下的权限

@smsyun = rw     //smsyun组用户权限为读写

* = r           //其他用户只有读权限

保存退出


(3) vi passwd   //创建或修改用户密码

[users]
ddl = 123456    //用户名为gep的用户的密码为123456
shl = 123456    //。。。
保存退出


然后要设置自启动

vi /etc/rc.local    
打开自启动文件
文件内容如下

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
添加下面一行
svnserve -d -r /usr/local/svnRepo/first

保存退出



svn命令:

lsof -i :3690   查看svn是否启动

ps aux |grep 'svn'  查找所有svn启动的进程

kill -9 2505    杀死2505这个查找到的svn进程

svnserve -d -r /usr/local/svnRepo/first 启动svn(可以把这个放到/etc/local/rc.local文件中,实现开机自启动)



5.客户端连接
 
svn co svn://ip/smsyun
用户名密码:myname
 
6.实现SVN与WEB同步,可以CO一个出来,也可以直接配在仓库中
 
1)设置WEB服务器根目录为/home/www/webroot
 
2)checkout一份SVN
 
svn co svn://localhost/smsyun /home/www/smsyun
修改权限为WEB用户
chown -R www:www /home/www/webroot/smsyun
3)建立同步脚本
 
cd /home/www/svndata/smsyun/hooks/
cp post-commit.tmpl post-commit
编辑post-commit,在文件最后添加以下内容
 
export LANG=en_US.UTF-8
SVN=/usr/bin/svn
WEB=/home/www/smsyun
$SVN update $WEB --username myname --password myname --no-auth-cache  --no-auth-cache 是不记住用户缓存(增加了这个之后就能提交后不出现错误,版本错误除外)

chown -R www:www $WEB
增加脚本执行权限
 //可不用
chmod +x post-commit

这样,我们上传svn后,生产站点就能立马显示出来了,自动化程度高了很多。


备注:
设置svn开机自启动
    编辑文件 /etc/sysconfig/rc.local
    添加一行   svnserve -d -r /var/svn/repositories


为svn用户组赋予权限
chown -R root:svn /home/svndata/smsyun  
chmod -R g+rws /home/svndata/smsyun    /*给svn组赋予读写权限,可以根据需要更改相应权限*/  
chmod -R o-rwx /home/svndata/smsyun    /*删除其他无关人员的读、写、执行权限,默认情况下可能其他人有读权限*/  





只用配置SVN同步的方法

只记录hooks 下的 post-commit文件内的内容

#!/bin/sh
REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
svn update /home/www/webroot --username testuser --password 123456 --no-auth-cache

-username 是svn里的用户名,--password 是SVN用户的密码

--no-auth-cache 是不记住用户缓存(增加了这个之后就能提交后不出现错误,版本错误除外)

export LANG=en_US.UTF-8 设置编码格式