linux下svn定时更新项目

方法一、用shell脚本定时更新项目

1、进入网站的根目录,假设项目位置放在/var/www/test

cd /var/www/test


2、建立脚本文件update.sh,分两步进行.首先利用touch命令创建,之后使用vim进行编辑.

touch update.sh

vim update.sh


输入以下内容


#!/bin/sh

while true

do

svn update --username 你的svn用户名 --password 你的svn密码

sleep 60

done


这里我设置的是sleep 60,即每隔60秒更新一次,数值大小可随个人需求而定.不建议间隔时间太短.


在后台执行这段脚本

nohup ./update.sh


会产生一个nohup.out记录更新信息。或用

nohup ./update.sh > update.out


这种定时更新方法还不够,因为如果服务器重启的话就没了,我们可以把它写到启动项里边

vim /etc/rc.local


添加

nohup /var/www/shop/update.out > /var/www/shop/update.out


方法二、用linux计划任务,这种方式很简单。


crontab -e


或者vim /etc/crontab


或者vim /var/spool/cron/root


在新的一行中添加


*/1 * * * *  /usr/bin/svn update /var/www/shop --username dxk --password 123465--no-auth-cache > /var/www/shop/update.log


这里每隔1分钟更新一次,并把记录写到update.log中


重启服务

service crond restart



这里主要是使用的定时方式来更新svn项目,用于本地局域网服务器还是可以接受的,但是用于万维网服务器就有点得不偿失了。另一种办法就是利用post-commit钩子的方法,在每一次用户提交的时候,服务器上自动同步完成更新动作,减小了服务器压力。`

来源: <http://blog.sina.com.cn/s/blog_920dea7a01014nm8.html>

具体操作详见:[Linux下svn自动更新web]

svn 项目中的 hooks 文件中的 post-commit(该文件夹下有 tmp文件 去除后缀即可)

post-commit

#!/bin/sh

export LANG=zh_CN.GBK #svn 编码是GBK

export LANG=en_US.UTF-8 #svn 编码是UTF-8

svn up --username=test --password=test --no-auth-cache --non-interactive /var/www/test


(橙色部分根据自己的信息填写)


设置过程中需要注意到的主要有两点:


1.svn的编码 

2.post-commit 权限 设置成 777


来源: <http://blog.sina.com.cn/s/blog_920dea7a01015cip.html>