您的位置:首页 > 运维架构 > Linux

Linux下SVN部署Web版本同步

2014-12-11 10:00 113 查看
我们都知道,SVN服务器端搭建好之后,要先创建版本库。而版本库中的文件都是以加密的方式存在,并不是提交上来的代码直接存放的。

因此,就有这样一个问题,我们希望我们测试好的代码提交到SVN服务器之后,可以不再经过其他的手动操作,而直接看到代码在服务器上的效果,比如web代码可以通过url直接看到。

解决方案的原理是这样,客户端commit到SVN的代码,在服务器端自动update到web服务器的代码目录。而Linux下的SVN服务端是提供这样的机制的,我们每创建一个版本库的时候注意到,在版本库目录下有hook这样一个文件夹,里面默认的都是.tmpl这样的临时文件。我们需要做的就是将post-commit.tmpl重命名为post-commit。这样,在客户端出现commit操作的时候,就会触发这个文件里的操作。接下来,我们只需要在post-commit这个文件中,写入相应的命令,update到web服务器代码目录即可。

这样一来,就实现了,客户端测试好的代码提交到服务器之后,可以直接通过web服务器看到效果。

示例:

1、创建svn服务器版本库

mkdir /usr/local/svn
svnadmin create /usr/local/svn/testsvn


2、配置好conf下的三个文件,这里不做赘述,可以参考我另一篇博客《Linux下svn服务器端安装及配置教程》

3、将版本库下hook目录下的post-commit.tmpl重命名为post-commit,并给post-commit文件可执行权限

chmod a+x post-commit


post-commit文件中写入如下命令:

#!/bin/sh
export LANG=zh_CN.UTF-8
svn update /var/www/html/test


如果没有保存缓存密码,则update的时候需要指定svn用户名及密码,也可以强制不保存密码--no-auth-cache

4、启动该版本库

svnserve -d -r /usr/local/svn/testsvn


5、给web服务器目标代码目录checkout一份代码

svn checkout svn://127.0.0.1/ /var/www/html/test


6、搞定。这个时候客户端svn提交代码的时候,就会自动update到代码目录啦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: