svn-多个项目版本库和自动同步更新post-commit

由于项目测试需求,需要远程服务器上使用svn做版本控制.

需求:

1,项目test1,项目test2,各自独立版本库,各自独立用户权限,便于项目管理

2,同步提交,本地svn提交至版本库后,服务器上的web根目录上的项目同步更新。达到本地update,浏览器访问实时生效

 

步骤:

1,安装svn 过程略去

2,配置项目

一,创建版本库

创建多个项目的版本库

工作目录

/var/www/

项目1:svnadmin create /var/www/svn/test1

项目2:svnadmin create /var/www/svn/test2

二,修改项目配置

===============================

cd /var/www/svn/test1

目录权限

vi conf/authz  

[/]

*=rw

账号密码

vi conf/passwd

user1=123456

主配置

vi conf/svnserve.conf

anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
 
同步更新
cp hooks/post-commit.tmpl hooks/post-commit
chmod 777 hooks/post-commit      //如果不给权限的话,同步更新会报255错误的。
vi post-commit
cd /var/www/test1 && /usr/bin/svn update --username user1 --password 123456
 

如果还报127,记得把最下面这句注释或删掉

#mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf

 
三,开启进程
注意不能使用下面这种,不然checkout会报url不存在的。

svnserve -d -r /var/www/svn/test1

svnserve -d -r /var/www/svn/test2

正确的是

svnserve -d -r /var/www/svn/

ps -ef|grep svnserve  //查看进程是否正常

如果已经有其他进程用命令杀掉kill pid

上面是项目test1的配置,项目test2的配置也和上面大体一致,不在赘述。

4,导入项目

mkdir /var/www/test1

touch test1.txt

midir /var/www/test2

touch test2.txt

 

svn import /var/www/test1 file:///var/www/svn/test1 -m "导入项目1"

svn import /var/www/test2 file:///var/www/svn/test2 -m "导入项目2"

 

 5,checkout检出

测试一下。把/var/www/test1  和/var/www/test2  删掉

cd  /var/www

svn checkout svn://IP/test1

svn checkout svn://IP/test2

看test1,和test2目录果然下载下来了。

然后我到我的windows本地上也checkout一下,地址同样是上面的两个

输入账号密码,也成功下载了文件

我们在test1,test2其中添加提交b.txt,c.txt,

然后到服务器上看/var/www/test1,和 test2中果然已经实时更新出现了。

我的http://test1.aaa.com 和http://test2.aaa.com

分别对应的是/var/www/test1和/var/www/test2

清楚了web的目录指向后,看到的效果自然也就是所谓的实时更新了。

 

=========================================
 
备注:还是想的太美好了。出现了问题。
当使用的钩子更新的时候。如果有中文的文件,是会报错,导致跳出更新失败的。
 
网上找了很多解决方案,都是改系统字符集。然而还是报错。没有办法。还是使用定时任务吧。
 
crontab -e

#每分钟更新,并记录日志
#*/1 * * * * /root/svn_update.sh >> /tmp/log/svn_update.log

#每5分钟更新,不记录日志。

*/5 * * * * /root/svn_update.sh

vi svn_update.sh

#!/bin/bash
cd /var/www/test1 && /usr/bin/svn up
cd /var/www/test2 && /usr/bin/svn up

 

参考:http://blog.csdn.net/honeyjimmy/article/details/24431713

常见错误:http://www.2cto.com/os/201407/322026.html

 

posted @ 2015-11-23 17:18  Lion_coder  阅读(1491)  评论(0编辑  收藏  举报