以下方法在ubuntu6.4测试成功。自己搭建测试用,谨以此记录方便下次查找。
首先安装一下svn:使用一下命令直接到ubuntu源下载安装。
#sudo apt-get install subversion
第二,创建一个svn目录
#sudo mkdir /svn
#sudo mkdir /svn/repos
第三,创建库[这里用 cards 这个目录为例]
#sudo svnadmin create /svn/repos/cards
第四,配置相关权限【包括 访问控制,用户密码】
配置包括三个文件【位于/cards/conf】:
authz — 这个访问控制
passwd — 用户密码
svnserve.conf — 基础配置
先配置 svnserve.conf ,做如下修改(使用命令:#sudo vim svnserve.conf 进入编辑即可)
#anon-access = read 修改为 anon-access = none 【也就是去掉注释,然后把read改成none】
#auth-access = write 修改为 auth-access = write 【也是去掉注释】
#password-db = passwd 修改为 password-db = passwd 【去掉注释,这个是用户密码文件的位置,你喜欢的话甚至可以修改为 ../../pwd 支持路径和文件名非默认,passwd 是默认的文件名】
#authz-db = authz 修改为 authz-db = authz【去掉注释,这个是访问控制文件的位置,你喜欢的话甚至可以修改为 ../../auth 支持路径和文件名非默认,authz 是默认的文件名】
然后配置 passwd ,依然使用vim修改文件
在文件最后面添加用户密码,一行一个用户,形式有如: 用户名=密码
再来配置authz,还是使用 vim编辑
在文件末端输入:
[cards:\]
* = rw
这个区区两行是什么意思? 首先 中括号内是代表 目录,也就是 cards的根目录 。那么 * =rw 呢?就是 任何用户 具有读写权限。
当然高级一点的配置也可以,甚至可以设置用户组。但这样已经够用了。
要看这三个文件更详细的配置可以移步->http://steve-wang-victor.javaeye.com/blog/517642[哈哈~也是百度来的]
下面是重头戏,就是同步到网站目录:
那么且看我的文件结构:
我的web程序放在 /var/www/cards 下面。这个就是域名实际访问的目录。
svn库在 /svn/repos/cards
我们的目标:实现客户端提交到 svn库后 域名访问目录同步获取最新代码。这样多人协作开发就更方便些了。
同步程序思路:用户提交程序到SVN,SVN触发hooks,按不同的hooks进行处理,这里用到的是post-commit,利用post-commit到代码检出到SVN服务器的本地硬盘目录,再通过rsync同步到远程的WEB服务器上。
简单的了解下SVN的hooks:
# start-commit 提交前触发事务
# pre-commit 提交完成前触发事务
# post-commit 提交完成时触发事务
# pre-revprop-change 版本属性修改前触发事务
# post-revprop-change 版本属性修改后触发事务
【这些hooks 存放在每个库的hooks目录下】
我们要用到 post-commit 这个事务。
#cd /svn/repos/cards/hooks
#cp post-commit.tmpl post-commit
#chown www:www post-commit
#chmod a+x post-commit
#保证你的web目录是spark用户能访问的,不然这个post-commit不会正常工作
#chown -R spark:spark./svn/repos/cards
#sudo vim post-commit
———————
下面是对post-commit的修改
#!/bin/sh
export LC_CTYPE=en_US.UTF-8
svn update –username digmouse –password digpwd /var/www/cards
这里的用户名和 密码自然是 passwd 文件内配置好的。
网上有人说 做hooks 最好定义变量,但是我定义了变量结果貌似不可用,索性直接用写的。也不知为何。
自此,客户端提交后就马上更新到web目录了


好文章啊》不能错过的文章
妹妹按摩网 Says @ 10-06-3 16:15
不错的网站。好文章
妹妹按摩网 Says @ 10-06-4 11:47