一、svn简介
Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。
二、svn安装
1.yum install subversion
安装成功后,配置SVN服务器端的版本库
2.一般在/usr/local下建立SVN文件夹并赋予权限777
chmod -R 777 /usr/local/svn
3.创建一个SVN版本仓库dudj(此名称可以任意定义)
svnadmin create /usr/local/svn/dudj
三、svn配置
(1)svnserve.conf(配置版本库信息和用户文件和用户密码文件的路径、版本库路径)
//这四行,前面的#号和空格去掉(注意去掉#要顶格写,不要留有多余空格),变成
anon-access = none //匿名访问,改成none
auth-access = write
password-db = passwd
realm = dudj //改成自己的版本库名称
(2)authz(创建SVN组和组用户的权限)
[group]
dudj=first,second//创建一个dudj的组,并指定两个用户first和second
//制定根目录下的权限
[/]
@dudj= rw//dudj组用户权限为读写
*=r //其他用户只有读权限
(3)passwd(给用户设置密码)
[users]
first=first
second=second
四、svn启动与关闭
启动svn
设置开机自启
vi /etc/rc.local
/usr/bin/svnserve -d -r /usr/local/svn/
关闭svn
查找所有svn启动的进程
ps aux |grep 3690
kill -9 进程号
五、svn自动更新到指定的 目录
有时候,svn的目录并不是虚拟主机的目录,当svn文件上传以后,只是svn目录的文件发生改变,而虚拟主机网站并不发生改变,svn早就考虑到了这个问题。
所以svn有一个hooks,也就是钩子的概念,当svn目录发生的时候他会触发。例如我的虚拟主机目录是/usr/local/nginx/html,svn的目录是/test/svn2/p1/.当svn上传后,他会自动触发/test/svn2/p1/hooks/post-commit这个文件。
1.进入/test/svn2/p1/hooks
2.新建文件post-commit
3.写入代码如图
EPOS="$1"
REV="$2"
echo `date`,`whoami`,$REPOS,$REV >> /usr/local/svn/dudj/hooks/svn_hook.log #记录时间
#!/bin/sh
export LANG=zh_CN.utf-8
cd /usr/local/nginx/html
svn checkout file:///usr/local/svn/dudj/