这里配置自动更新用的是svn的钩子,脚本是shell,也可以用其他的脚本比如python
钩子脚本的具体写法就是操作系统中shell脚本程序的写法,请根据自己SVN所在的操作系统和shell程序进行相应的写作
实现原理:当用户提交commit动作发生都让另外一处project马上从仓库中进行代码checkout一份出来!
1.在Web目录迁出代码
`sudo svn co svn://127.0.0.1/test /var/www/html --username admin --password admin`
2.添加脚本
在svn项目的hooks文件夹中的post-commit文件中添加脚本:用vi命令编辑一个新的post-commit(看清楚没有后缀名)千万不要用hooks文件夹里自带的post-commit文件,那是模板。
`sudo vi /srv/svn/test/hooks/post-commit`
在文件中添加如下内容:
~~~
#!/bin/sh
WEB=/var/www/html #web服务器下的项目不能有空格。
#说明:post-commit会接受两个参数
REPOS="$1" #/srv/svn/test 表示svn仓库的绝对路径值
REV="$2" #表示最新的一个版本号。最后一个版本号
export LANG=en_US.UTF-8
svn update $WEB --username admin --password admin #相当于客户端的update操作
exit 0
~~~
修改权限
`chmod 777 post-commit`
如果不能判断自己写的shell脚本是否有错,可以现在hooks目录下运行`./post-commit`试一下
如果出现了sqlite[S8]:attempt to write a readonly database报错
`sudo chown -R www-data:www-data post-commit`