环境
centos6.4
安装svn
1 | yum -y install subversion |
配置
建立版本库目录
1 | mkdir /www/svndata |
建立版本库
创建一个新的Subversion项目
1 | svnadmin create /var/www/svndata/njlrxx |
配置允许用户jiqing访问
1 | cd /var/www/svndata/njlrxx/conf |
1 | anon-access=none |
注:修改的文件前面不能有空格,否则启动svn server出错
1 | vi passwd |
1 | [users] |
客户端连接
1 | svn co svn://ip/njlrxx |
实现SVN与WEB同步
设置WEB服务器根目录为/var/www/webroot
checkout一份SVN
svn co svn://localhost/njlrxx /var/www/webroot/njlrxx
修改权限为WEB用户 ( 否则无法远程up )
chown -R apache:apache /var/www/webroot/njlrxx
- 建立同步脚本
1 | cd /var/www/svndata/njlrxx/hooks/ |
编辑post-commit,在文件最后添加以下内容
1 | REPOS="$1" |
增加脚本执行权限
chmod +x post-commit
最后操作是关闭服务然再打开服务:
svn服务的关闭:
kill all svnserve
svn开启:
svnserve -d -r /var/www/svndata
SVN自动同步程序执行流程:
1、用户提交文件到SVN服务器,提交操作成功后触发post-commit脚本
2、在post-commit版本文件中使用php_script.php执行PHP脚本
3、在PHP脚本中通过exec系统调用更新服务器上的版本库工作副本
4、根据更新操作结果日志,对另一个SVN版本库进行对应的操作处理
当然,你也可以手动同步到web:(以php为例)
- 创建 svn.php 到你的项目根目录(可以是php-fpm能解析的目录也可,只是需要更改下面对应的项目地址),文件内容如下:
1 |
|
注意:需要将项目所属组改到 web服务器用户:chown -R nginx:nginx 项目/
, 否则会出现权限不够的情况
- 通过web访问 项目地址/svn.php 即可同步你的代码到web上面。