linux下SVN的搭建

1.环境
centos6.4

2.安装svn
yum -y install subversion

3.配置

建立版本库目录
mkdir /www/svndata

svnserve -d -r /www/svndata

创建一个新的Subversion项目
svnadmin create /var/www/svndata/njlrxx

配置允许用户jiqing访问
cd /var/www/svndata/njlrxx/conf

vi svnserve.conf
anon-access=none
auth-access=write
password-db=passwd

注:修改的文件前面不能有空格,否则启动svn server出错

vi passwd
[users]
#<用户1> = <密码1>
#<用户2> = <密码2>
jiqing=123456

5.客户端连接
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,在文件最后添加以下内容

linux下SVN的搭建
REPOS="$1"
REV="$2"

BASEPATH=/var/www/webroot/njlrxx
WEBPATH="$BASEPATH/"
export LANG=zh_CN.UTF-8
svn update $WEBPATH --username jiqing --password 123456 --no-auth-cache --accept theirs-full
linux下SVN的搭建

 --accept              : 指定自动解决冲突动作的源 
                            ('base', 'working', 'mine-conflict', 
                             'theirs-conflict', 'mine-full', 'theirs-full') 

svn resolve rain.txt --accept working 

增加脚本执行权限

chmod +x post-commit

最后操作是关闭服务然再打开服务:

svn服务的关闭:

killall 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版本库进行对应的操作处理

操作TortoiseSVN时,报如下错误: 
      Command Update 
      Repository UUID 'xxxxxxxx' doesn't match expected 
      UUID 'xxxxxxxx' 
      Finished! 

      可以看到,原来Repository创建者的UUID是前者,而现在所操作的是后者的UUID。因此,目前的解决办法是:使用相关命令更新Repository的UUID。 

具体办法如下: 
      1、首先查看项目的所有者的UUID 
      # svnlook uuid /var/svn/repos 
      xxxxxxx

      2、更新项目的UUID 
      # svnadmin setuuid /var/svn/repos xxxxxxx

      3、查看一下更新后的UUID 
      # svnlook uuid /var/svn/repos 


附: 
      UUID是repository创建时自动生成的一个随机数, SVN Client利用UUID判断是否为同一个resp。一般遇到UUID不同时,需要重新checkout

上一篇:Hbuilder之开发Python


下一篇:Laravel 安装代码智能提示扩展「laravel-ide-helper」