1.环境centos6.4
2.安装svn复制代码代码如下:yum -y install subversion3.配置建立版本库目录复制代码代码如下:mkdir /www/svndatasvnserve -d -r /www/svndata4.建立版本库创建一个新的Subversion项目复制代码代码如下:svnadmin create /var/www/svndata/njlrxx配置允许用户jiqing访问复制代码代码如下:cd /var/www/svndata/njlrxx/confvi svnserve.confanon-access=noneauth-access=writepassword-db=passwd注:修改的文件前面不能有空格,否则启动svn server出错复制代码代码如下:vi passwd[users]#<用户1> = <密码1>#<用户2> = <密码2>jiqing=1234565.客户端连接复制代码代码如下:svn co svn://ip/njlrxx用户名:jiqing密码:123456
6.实现SVN与WEB同步,可以CO一个出来,也可以直接配在仓库中(1)设置WEB服务器根目录为/var/www/webroot(2)checkout一份SVN复制代码代码如下:svn co svn://localhost/njlrxx /var/www/webroot/njlrxx修改权限为WEB用户复制代码代码如下:chown -R apache:apache /var/www/webroot/njlrxx(3)建立同步脚本复制代码代码如下:cd /var/www/svndata/njlrxx/hooks/cp post-commit.tmpl post-commit编辑post-commit,在文件最后添加以下内容复制代码代码如下:REPOS=\”$1\”REV=\”$2\”BASEPATH=/var/www/webroot/njlrxxWEBPATH=\”$BASEPATH/\”export LANG=zh_CN.UTF-8svn update $WEBPATH –username jiqing –password 123456 –no-auth-cache增加脚本执行权限复制代码代码如下:chmod +x post-commit最后操作是关闭服务然再打开服务:svn服务的关闭:复制代码代码如下:killall svnservesvn开启:复制代码代码如下:svnserve -d -r /var/www/svndata
7.如何支持匿名用户访问方法一:在svn安装目录下找到,conf/httpd.conf文件,如果是手动集成apache的则找到apache的配置文件。找到中的复制代码代码如下:Require valid-user改为复制代码代码如下:<LimitExcept GET PROPFIND OPTIONS REPORT>Require valid-user</LimitExcept>重启服务,这样设置以后,svn下的所有内容都不在需要验证用户,可以直接访问。缺点:svn自身的访问权限设置失效了。更多的时候我们希望用户先用匿名方式尝试访问,如果不行,在输入用户名和密码验证访问。
方法二:在配置文件中加入复制代码代码如下:Satisfy Any加入了Satisfy Any的设置,其表示在同时启用了Allow(允许)和Require的情况下,指定相关策略的,一共有两个备选值,All表示用户必须同时满足Allow和Require的条件,而Any则是满足其中之一即可。Satisfy Any表示允许先用匿名方式尝试访问,并根据svnauthz对匿名用户的控制给予访问权限。
PS:SVN自动同步程序执行流程:1、用户提交文件到SVN服务器,提交操作成功后触发post-commit脚本2、在post-commit版本文件中使用php_script.php执行PHP脚本3、在PHP脚本中通过exec系统调用更新服务器上的版本库工作副本4、根据更新操作结果日志,对另一个SVN版本库进行对应的操作处理